<?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>124246</bug_id>
          
          <creation_ts>2013-11-12 16:32:55 -0800</creation_ts>
          <short_desc>Web Inspector: Extract InspectorFrontendDispatchers from InspectorFrontend</short_desc>
          <delta_ts>2013-11-13 14:56:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949932</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-12 16:32:55 -0800</bug_when>
    <thetext>FrontendDispatchers are generated from Domains with &quot;events&quot;. E.g. for Console.messageAdded.

Currently generated InspectorFrontend.h includes a InspectorFrontend::Foo nested class for each of these domains, which means class InspectorFrontend knows about all of the different possible domains that need to send events. That will not be the case when JavaScriptCore has some domains and WebCore has other domains.

All that is necessary for a domain to generate events is an InspectorFrontendChannel. We should split up InspectorFrontend into individual InspectorFrontendDispatchers.

This will be the first major part of Agent refactoring to make it possible to push some into JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949934</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-11-12 16:33:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/15454285&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949944</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-12 16:44:09 -0800</bug_when>
    <thetext>It is not possible to make this a simple patch, just because it touches all of the agents. So rather then do a series of very large patches, I&apos;m going to bundle a few changes together in this one. Namely:

  - Remove &quot;class InspectorFrontend&quot; that currently does nothing but hold other frontends. This also catches some stale code.
  - Generate individual &quot;class InspectorFooFrontendDispatcher&quot; classes only for each domain with events. This catches some unnecessary classes.
  - In each agent, convert &quot;InspectorFrontend::Foo* m_frontend&quot; to &quot;unique_ptr&lt;InspectorFooFrontendDispatcher&gt; m_frontendDispatcher&quot; and update uses
  - Simplify the Base Agent interface from optional setFrontend/clearFrontend/registerInDispatcher to required didCreateFrontendAndBackend/willDestroyFrontendAndBackend
  - Base Agent no longer needs to be templated&lt;&gt; or have an &quot;InspectorBaseAgentInterface&quot; class, so remove those
  - since Base Agent subclass constructor calls have to change, pass ASCIILiteral agent names since the string constants turn into WTFString
  - individual Agent&apos;s with events should create their frontend dispatchers in didCreateFrontendAndBackend, and clear in willDestroyFrontendAndBackend

Really, splitting up any of these into individual patches would just make unnecessarily large individual patches.

This also paves the way to simplify splitting up InspectorBackend; didCreateFrontendAndBackend will be a perfect time to register a backend dispatcher for each domain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949945</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-11-12 16:44:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/15454438&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949966</commentid>
    <comment_count>4</comment_count>
      <attachid>216748</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-12 17:24:58 -0800</bug_when>
    <thetext>Created attachment 216748
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949967</commentid>
    <comment_count>5</comment_count>
      <attachid>216749</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-12 17:25:23 -0800</bug_when>
    <thetext>Created attachment 216749
[BEFORE] InspectorFrontend.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949968</commentid>
    <comment_count>6</comment_count>
      <attachid>216750</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-12 17:25:39 -0800</bug_when>
    <thetext>Created attachment 216750
[AFTER] InspectorFrontend.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949970</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-12 17:26:41 -0800</bug_when>
    <thetext>InspectorFrontend.h is really the only thing that changed significantly in generated code. The cpp barely changed (function names, includes, and a bit less unnecessarily generated ifdefs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950019</commentid>
    <comment_count>8</comment_count>
      <attachid>216748</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-12 18:56:53 -0800</bug_when>
    <thetext>Comment on attachment 216748
[PATCH] Proposed Fix

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

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1904
&gt; +                    domainClassName=&quot;Inspector%sFrontendDispatcher&quot; % domain_name,
&gt; +                    frontendDomainMethodDeclarations=&quot;&quot;.join(flatten_list(frontend_method_declaration_lines))))

Should add spaces around the assignment = while you are touching this horrid code. Should do a find and replace globally at some point… or just find a way to rm *.py someday. :P

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:695
&gt; -    m_frontend-&gt;namedFlowCreated(buildObjectForNamedFlow(&amp;errorString, namedFlow, documentNodeId));
&gt; +    m_frontendDispatcher-&gt;namedFlowCreated(buildObjectForNamedFlow(&amp;errorString, namedFlow, documentNodeId));

Oh how much a single word helps.

&gt; Source/WebCore/inspector/InspectorDOMStorageAgent.h:84
&gt; -    InspectorFrontend* m_frontend;
&gt; +    std::unique_ptr&lt;InspectorDOMStorageFrontendDispatcher&gt; m_frontendDispatcher;

And at last I see the light! It&apos;s like the fog has lifted.

&gt; Source/WebCore/inspector/InspectorWorkerAgent.cpp:131
&gt; +    disable(nullptr);

Can disable() default errorString to nullptr? This looks funny to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950021</commentid>
    <comment_count>9</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-12 18:57:21 -0800</bug_when>
    <thetext>InspectorFrontend.h is so clean you can eat off of it now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950022</commentid>
    <comment_count>10</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-12 19:02:56 -0800</bug_when>
    <thetext>One nit about the generated InspectorFrontend.h around #ifdefs:

};

#endif // ENABLE(JAVASCRIPT_DEBUGGER)
class InspectorRuntimeFrontendDispatcher {

The blank line and the #endif should swap. This happens around all the #endifs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950034</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-12 22:03:32 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 216748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=216748&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1904
&gt; &gt; +                    domainClassName=&quot;Inspector%sFrontendDispatcher&quot; % domain_name,
&gt; &gt; +                    frontendDomainMethodDeclarations=&quot;&quot;.join(flatten_list(frontend_method_declaration_lines))))
&gt; 
&gt; Should add spaces around the assignment = while you are touching this horrid code. Should do a find and replace globally at some point… or just find a way to rm *.py someday. :P

Yeah, I&apos;m not very comfortable with Python. It is okay, but I stuck with consistent styling in this patch. Eventually I&apos;d like to look into rewriting the generator altogether. It isn&apos;t hard at all.


&gt; &gt; Source/WebCore/inspector/InspectorWorkerAgent.cpp:131
&gt; &gt; +    disable(nullptr);
&gt; 
&gt; Can disable() default errorString to nullptr? This looks funny to me.

There are all kinds of differences between Agents here. The enable/disable methods are generated, and its up to each agent to choose whether or not it could send an ErrorString in disable. I would really like to make some consistency here eventually. I will look into this eventually!


(In reply to comment #10)
&gt; One nit about the generated InspectorFrontend.h around #ifdefs:
&gt; 
&gt; };
&gt; 
&gt; #endif // ENABLE(JAVASCRIPT_DEBUGGER)
&gt; class InspectorRuntimeFrontendDispatcher {
&gt; 
&gt; The blank line and the #endif should swap. This happens around all the #endifs.

Yep, and this bugs me quite a bit too =(. I know where the newline comes from, but I didn&apos;t think of a simple way to clean it up. t want to change how guards are output altogether in the generators, so I&apos;ll look into addressing this eventually when I do more work in the generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950036</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-12 22:04:41 -0800</bug_when>
    <thetext>Lots of &quot;eventually&quot; in that comment. Really you&apos;ve pointed out all the things that annoyed me with the code as I was writing this patch. So they are all on my list of issues to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950337</commentid>
    <comment_count>13</comment_count>
      <attachid>216850</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-13 13:40:55 -0800</bug_when>
    <thetext>Created attachment 216850
[BOTS] Updated patch for bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950394</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-13 14:56:37 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/159243&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216748</attachid>
            <date>2013-11-12 17:24:58 -0800</date>
            <delta_ts>2013-11-12 18:56:53 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>frontend.patch</filename>
            <type>text/plain</type>
            <size>171316</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ODYwYTlmLi5lNjJkNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjg3
IEBACisyMDEzLTExLTEyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0cmFjdCBJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNo
ZXJzIGZyb20gSW5zcGVjdG9yRnJvbnRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNDI0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBqdXN0IHJlZmFjdG9yaW5n
IHdpdGhvdXQgY2hhbmdpbmcgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgU2V0IG9mIGNoYW5nZXMg
bWFkZToKKworICAgICAgICAgIC0gUmVtb3ZlICJjbGFzcyBJbnNwZWN0b3JGcm9udGVuZCIgdGhh
dCBjdXJyZW50bHkgZG9lcyBub3RoaW5nIGJ1dCBob2xkCisgICAgICAgICAgICBzdWItZnJvbnRl
bmQgZGlzcGF0Y2hlciBjbGFzc2VzLiBDYXRjaGVzIHNvbWUgc3RhbGUgY29kZS4KKyAgICAgICAg
ICAtIEdlbmVyYXRlIGluZGl2aWR1YWwgImNsYXNzIEluc3BlY3RvckZvb0Zyb250ZW5kRGlzcGF0
Y2hlciIgY2xhc3NlcyBmb3IKKyAgICAgICAgICAgIGRvbWFpbnMgdGhhdCBoYXZlIGV2ZW50cy4g
Q2F0Y2hlcyBzb21lIHVubmVjZXNzYXJ5IGNsYXNzZXMuCisgICAgICAgICAgLSBTaW1wbGlmeSB0
aGUgQmFzZSBBZ2VudCBpbnRlcmZhY2UgZnJvbSBvcHRpb25hbCBzZXQvY2xlYXJGcm9udGVuZC9y
ZWdpc3RlcgorICAgICAgICAgICAgdG8gcmVxdWlyZWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kL3dpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kLgorICAgICAgICAgICAgTmV3IGFnZW50
cyBtdXN0IGltcGxlbWVudCB0aGlzIGFuZCB0aGlzIHdpbGwgYmUgdGhlaXIgY3VlIHRvIHNldHVw
CisgICAgICAgICAgICBmcm9udGVuZCBhbmQgYmFja2VuZCBkaXNwYXRjaGVycy4KKyAgICAgICAg
ICAtIEJhc2UgQWdlbnQgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHRlbXBsYXRlZCBvciBoYXZlIGFu
IEludGVyZmFjZSBjbGFzcy4KKyAgICAgICAgICAtIFdoaWxlIHdlIGFyZSBjaGFuZ2luZyBzdWJj
bGFzcyBCYXNlQWdlbnQgc3VwZXJjbGFzcyBjYWxscywgdXNlIEFTQ0lJTGl0ZXJhbAorICAgICAg
ICAgIC0gSW4gYWdlbnRzIHdpdGggZXZlbnRzLCBjb252ZXJ0ICJJbnNwZWN0b3JGcm9udGVuZDo6
Rm9vKiBtX2Zyb250ZW5kIiB0bworICAgICAgICAgICAgInVuaXF1ZV9wdHI8SW5zcGVjdG9yRm9v
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlciIgYW5kCisgICAgICAgICAg
ICB1cGRhdGUgdXNlcyBhcyBhcHByb3ByaWF0ZSB3aXRoaW4gdGhlIGNsYXNzZXMuCisgICAgICAg
ICAgLSBJbiBhZ2VudHMgd2l0aCBldmVudHMsIGNyZWF0ZSBkaXNwYXRjaGVycyBpbiBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQKKyAgICAgICAgICAgIGFuZCBjbGVhciB0aGVtIGluIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAgIChHZW5lcmF0b3IpOgorICAgICAgICAoR2VuZXJh
dG9yLmdvKToKKyAgICAgICAgKEdlbmVyYXRvci5wcm9jZXNzX2V2ZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHk6CisgICAgICAgIChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNv
bnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3Bl
Y3RvckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6OmV2YWx1
YXRlRm9yVGVzdEluRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6
Omluc3BlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Omhhc0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QWdlbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckFnZW50UmVnaXN0cnk6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQmFzZUFnZW50OjpkaXNjYXJkQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQmFzZUFnZW50OjpJbnNwZWN0b3JCYXNlQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZs
b3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxSZW1vdmVOYW1l
ZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbkxheW91
dFVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbk92
ZXJzZXRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRS
ZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3RvclByb2ZpbGVySW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c3R5bGVTaGVldENoYW5n
ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6
Om5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNhbnZhc0FnZW50OjpmaW5kRnJhbWVzV2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFzZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZyYW1lTmF2aWdhdGVk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OmRpZEZpbmlzaFhIUkxvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Oklu
c3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNs
b3NlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzRnJvbnRlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldERvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRv
RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmZvY3VzTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bWFpbkZyYW1lRE9NQ29u
dGVudExvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29t
bWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0
RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3Zl
RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5
RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3Zl
RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRy
aWJ1dGVJbnZhbGlkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpkaWRQdXNoU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6d2lsbFBvcFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZElu
dmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5hdGl2ZUV2ZW50SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2ls
bFNlbmRYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNw
YXRjaERPTVN0b3JhZ2VFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZE9wZW5E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjplbmFibGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YWRkTWVzc2FnZVRvQ29u
c29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVs
ZVBhdXNlT25OZXh0U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckJyZWFrRGV0YWlscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNldCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpyZXNldEZyb250ZW5k
UHJvZmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JIZWFwUHJvZmlsZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldEhlYXBTbmFwc2hv
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6dGFrZUhl
YXBTbmFwc2hvdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluZGV4ZWREQkFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5wdXRBZ2VudDo6SW5zcGVjdG9ySW5wdXRBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnB1dEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5wdXRBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJUcmVlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50
Ojpkb21Db250ZW50RXZlbnRGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OmxvYWRFdmVudEZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VB
Z2VudDo6ZnJhbWVOYXZpZ2F0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpmcmFtZURldGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZnJhbWVTdGFydGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OmZyYW1lU3RvcHBlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjpmcmFtZVNjaGVkdWxlZE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6d2lsbFJ1bkphdmFTY3JpcHREaWFs
b2cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRSdW5KYXZhU2Ny
aXB0RGlhbG9nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2NyaXB0
c0VuYWJsZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpJbnNwZWN0b3JQcm9maWxlckFnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkUHJvZmlsZUZpbmlz
aGVkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0SGVhcFNuYXBzaG90KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm9maWxlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0b2dnbGVSZWNvcmRCdXR0b24pOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5k
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjptYXJr
UmVzb3VyY2VBc0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlV2ViU29j
a2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5k
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdl
YlNvY2tldEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6fkluc3BlY3RvclRpbWVsaW5lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
c2VuZEV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRDaGFubmVsOjpX
b3JrZXJGcm9udGVuZENoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2Vy
QWdlbnQ6OldvcmtlckZyb250ZW5kQ2hhbm5lbDo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVdvcmtlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2Vy
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JXb3JrZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6d29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpjcmVhdGVXb3JrZXJGcm9udGVuZENo
YW5uZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZU1haW5Xb3Js
ZENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRl
SXNvbGF0ZWRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6Om5v
dGlmeUNvbnRleHRDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250
ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzRnJvbnRlbmQp
OgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9JbnB1dC5qc29uOgorCiAyMDEzLTExLTEx
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogU3BsaXQgSW5zcGVjdG9yLmpzb24gaW50byBpbmRpdmlkdWFsIGRvbWFpbiBqc29u
IGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRv
ckluc3BlY3Rvci5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnB5CmluZGV4IGMyYWNiM2QuLmIzYjRjNzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CkBAIC0xNzIzLDcgKzE3MjMs
OCBAQCBjbGFzcyBUZW1wbGF0ZXM6CiAgICAgICAgIHJldHVybiAiLyIuam9pbihjb21wb25lbnRz
KQogCiAgICAgZmlsZV9oZWFkZXJfID0gKCIvLyBGaWxlIGlzIGdlbmVyYXRlZCBieSAlc1xuXG4i
ICUgZ2V0X3RoaXNfc2NyaXB0X3BhdGhfKHN5cy5hcmd2WzBdKSArCi0iIiIvLyBDb3B5cmlnaHQg
KGMpIDIwMTEgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisiIiIv
LyBDb3B5cmlnaHQgKGMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IChjKSAyMDExIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KICIi
IikKQEAgLTE4MjAsNyArMTgyMSw2IEBAIGRlZiBmb3JtYXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Np
b24ocGFyYW1fdHlwZV9iaW5kaW5nLCB2YWx1ZV9yZWYpOgogICAgICAgICByZXR1cm4gdmFsdWVf
cmVmCiAKIGNsYXNzIEdlbmVyYXRvcjoKLSAgICBmcm9udGVuZF9jbGFzc19maWVsZF9saW5lcyA9
IFtdCiAgICAgZnJvbnRlbmRfZG9tYWluX2NsYXNzX2xpbmVzID0gW10KIAogICAgIG1ldGhvZF9u
YW1lX2VudW1fbGlzdCA9IFtdCkBAIC0xODM2LDcgKzE4MzYsNiBAQCBjbGFzcyBHZW5lcmF0b3I6
CiAgICAgYmFja2VuZF9zZXR0ZXJzX2xpc3QgPSBbXQogICAgIGJhY2tlbmRfY29uc3RydWN0b3Jf
aW5pdF9saXN0ID0gW10KICAgICBiYWNrZW5kX2ZpZWxkX2xpc3QgPSBbXQotICAgIGZyb250ZW5k
X2NvbnN0cnVjdG9yX2luaXRfbGlzdCA9IFtdCiAgICAgdHlwZV9idWlsZGVyX2ZyYWdtZW50cyA9
IFtdCiAgICAgdHlwZV9idWlsZGVyX2ZvcndhcmRzID0gW10KICAgICB2YWxpZGF0b3JfaW1wbF9s
aXN0ID0gW10KQEAgLTE4NTIsMTAgKzE4NTEsNiBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAg
ICAgICBHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50YXRpb25fbGlzdCwKICAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX21ldGhvZF9uYW1lX2RlY2xhcmF0aW9uX2xpc3QsCiAg
ICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdCwKLSAgICAg
ICAgICAgIEdlbmVyYXRvci5mcm9udGVuZF9jbGFzc19maWVsZF9saW5lcywKLSAgICAgICAgICAg
IEdlbmVyYXRvci5mcm9udGVuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QsCi0gICAgICAgICAgICBH
ZW5lcmF0b3IuZnJvbnRlbmRfZG9tYWluX2NsYXNzX2xpbmVzLAotICAgICAgICAgICAgR2VuZXJh
dG9yLmZyb250ZW5kX21ldGhvZF9saXN0LAogICAgICAgICAgICAgR2VuZXJhdG9yLm1ldGhvZF9o
YW5kbGVyX2xpc3QsCiAgICAgICAgICAgICBHZW5lcmF0b3IubWV0aG9kX25hbWVfZW51bV9saXN0
LAogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfY29uc3RydWN0b3JfaW5pdF9saXN0LApA
QCAtMTg5NywxNyArMTg5MiwyMCBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IucHJvY2Vzc19lbnVtKGpzb25fcHJvcGVydHks
IGVudW1fbmFtZSkKIAogICAgICAgICAgICAgaWYgImV2ZW50cyIgaW4ganNvbl9kb21haW46Cisg
ICAgICAgICAgICAgICAgaWYgZG9tYWluX2d1YXJkOgorICAgICAgICAgICAgICAgICAgICBkb21h
aW5fZ3VhcmQuZ2VuZXJhdGVfb3BlbihHZW5lcmF0b3IuZnJvbnRlbmRfbWV0aG9kX2xpc3QpCisg
ICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFyZC5nZW5lcmF0ZV9vcGVuKEdlbmVyYXRvci5m
cm9udGVuZF9kb21haW5fY2xhc3NfbGluZXMpCisKICAgICAgICAgICAgICAgICBmb3IganNvbl9l
dmVudCBpbiBqc29uX2RvbWFpblsiZXZlbnRzIl06CiAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRvci5wcm9jZXNzX2V2ZW50KGpzb25fZXZlbnQsIGRvbWFpbl9uYW1lLCBmcm9udGVuZF9tZXRo
b2RfZGVjbGFyYXRpb25fbGluZXMpCiAKLSAgICAgICAgICAgIEdlbmVyYXRvci5mcm9udGVuZF9j
bGFzc19maWVsZF9saW5lcy5hcHBlbmQoIiAgICAlcyBtXyVzO1xuIiAlIChkb21haW5fbmFtZSwg
ZG9tYWluX25hbWVfbG93ZXIpKQotICAgICAgICAgICAgaWYgR2VuZXJhdG9yLmZyb250ZW5kX2Nv
bnN0cnVjdG9yX2luaXRfbGlzdDoKLSAgICAgICAgICAgICAgICBHZW5lcmF0b3IuZnJvbnRlbmRf
Y29uc3RydWN0b3JfaW5pdF9saXN0LmFwcGVuZCgiICAgICwgIikKLSAgICAgICAgICAgIEdlbmVy
YXRvci5mcm9udGVuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QuYXBwZW5kKCJtXyVzKGluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbClcbiIgJSBkb21haW5fbmFtZV9sb3dlcikKLSAgICAgICAgICAgIEdl
bmVyYXRvci5mcm9udGVuZF9kb21haW5fY2xhc3NfbGluZXMuYXBwZW5kKFRlbXBsYXRlcy5mcm9u
dGVuZF9kb21haW5fY2xhc3Muc3Vic3RpdHV0ZShOb25lLAotICAgICAgICAgICAgICAgIGRvbWFp
bkNsYXNzTmFtZT1kb21haW5fbmFtZSwKLSAgICAgICAgICAgICAgICBkb21haW5GaWVsZE5hbWU9
ZG9tYWluX25hbWVfbG93ZXIsCi0gICAgICAgICAgICAgICAgZnJvbnRlbmREb21haW5NZXRob2RE
ZWNsYXJhdGlvbnM9IiIuam9pbihmbGF0dGVuX2xpc3QoZnJvbnRlbmRfbWV0aG9kX2RlY2xhcmF0
aW9uX2xpbmVzKSkpKQorICAgICAgICAgICAgICAgIEdlbmVyYXRvci5mcm9udGVuZF9kb21haW5f
Y2xhc3NfbGluZXMuYXBwZW5kKFRlbXBsYXRlcy5mcm9udGVuZF9kb21haW5fY2xhc3Muc3Vic3Rp
dHV0ZShOb25lLAorICAgICAgICAgICAgICAgICAgICBkb21haW5DbGFzc05hbWU9Ikluc3BlY3Rv
ciVzRnJvbnRlbmREaXNwYXRjaGVyIiAlIGRvbWFpbl9uYW1lLAorICAgICAgICAgICAgICAgICAg
ICBmcm9udGVuZERvbWFpbk1ldGhvZERlY2xhcmF0aW9ucz0iIi5qb2luKGZsYXR0ZW5fbGlzdChm
cm9udGVuZF9tZXRob2RfZGVjbGFyYXRpb25fbGluZXMpKSkpCisKKyAgICAgICAgICAgICAgICBp
ZiBkb21haW5fZ3VhcmQ6CisgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFyZC5nZW5lcmF0
ZV9jbG9zZShHZW5lcmF0b3IuZnJvbnRlbmRfbWV0aG9kX2xpc3QpCisgICAgICAgICAgICAgICAg
ICAgIGRvbWFpbl9ndWFyZC5nZW5lcmF0ZV9jbG9zZShHZW5lcmF0b3IuZnJvbnRlbmRfZG9tYWlu
X2NsYXNzX2xpbmVzKQogCiAgICAgICAgICAgICBhZ2VudF9pbnRlcmZhY2VfbmFtZSA9IENhcGl0
YWxpemVyLmxvd2VyX2NhbWVsX2Nhc2VfdG9fdXBwZXIoZG9tYWluX25hbWUpICsgIkNvbW1hbmRI
YW5kbGVyIgogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xp
c3QuYXBwZW5kKCIgICAgY2xhc3MgJXMge1xuIiAlIGFnZW50X2ludGVyZmFjZV9uYW1lKQpAQCAt
MTk2MSw3ICsxOTU5LDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgICAgIGJhY2tl
bmRfanNfZXZlbnRfcGFyYW1fbGlzdC5hcHBlbmQoIlwiJXNcIiIgJSBwYXJhbWV0ZXJfbmFtZSkK
IAogICAgICAgICBmcm9udGVuZF9tZXRob2RfZGVjbGFyYXRpb25fbGluZXMuYXBwZW5kKAotICAg
ICAgICAgICAgIiAgICAgICAgdm9pZCAlcyglcyk7XG4iICUgKGV2ZW50X25hbWUsICIsICIuam9p
bihkZWNsX3BhcmFtZXRlcl9saXN0KSkpCisgICAgICAgICAgICAiICAgIHZvaWQgJXMoJXMpO1xu
IiAlIChldmVudF9uYW1lLCAiLCAiLmpvaW4oZGVjbF9wYXJhbWV0ZXJfbGlzdCkpKQogCiAgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2pzX2RvbWFpbl9pbml0aWFsaXplcl9saXN0LmFwcGVuZCgi
SW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50KFwiJXMuJXNcIiwgWyVzXSk7XG4iICUgKAog
ICAgICAgICAgICAgZG9tYWluX25hbWUsIGV2ZW50X25hbWUsICIsICIuam9pbihiYWNrZW5kX2pz
X2V2ZW50X3BhcmFtX2xpc3QpKSkKQEAgLTIzOTEsMTEgKzIzODksOSBAQCBiYWNrZW5kX2NwcF9m
aWxlLndyaXRlKFRlbXBsYXRlcy5iYWNrZW5kX2NwcC5zdWJzdGl0dXRlKE5vbmUsCiAgICAgbWVz
c2FnZUhhbmRsZXJzPSJcbiIuam9pbihHZW5lcmF0b3IubWV0aG9kX2hhbmRsZXJfbGlzdCkpKQog
CiBmcm9udGVuZF9oX2ZpbGUud3JpdGUoVGVtcGxhdGVzLmZyb250ZW5kX2guc3Vic3RpdHV0ZShO
b25lLAotICAgIGZpZWxkRGVjbGFyYXRpb25zPSIiLmpvaW4oR2VuZXJhdG9yLmZyb250ZW5kX2Ns
YXNzX2ZpZWxkX2xpbmVzKSwKICAgICBkb21haW5DbGFzc0xpc3Q9IiIuam9pbihHZW5lcmF0b3Iu
ZnJvbnRlbmRfZG9tYWluX2NsYXNzX2xpbmVzKSkpCiAKIGZyb250ZW5kX2NwcF9maWxlLndyaXRl
KFRlbXBsYXRlcy5mcm9udGVuZF9jcHAuc3Vic3RpdHV0ZShOb25lLAotICAgIGNvbnN0cnVjdG9y
SW5pdD0iIi5qb2luKEdlbmVyYXRvci5mcm9udGVuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QpLAog
ICAgIG1ldGhvZHM9IlxuIi5qb2luKEdlbmVyYXRvci5mcm9udGVuZF9tZXRob2RfbGlzdCkpKQog
CiB0eXBlYnVpbGRlcl9oX2ZpbGUud3JpdGUoVGVtcGxhdGVzLnR5cGVidWlsZGVyX2guc3Vic3Rp
dHV0ZShOb25lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5CmluZGV4IGVkOGVlYzQuLjk3NTRlMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3Ry
aW5ncy5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3RvclN0cmluZ3MucHkKQEAgLTI2LDE5ICsyNiwxNiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAotIyBUSGlzIGZpbGUgY29udGFpbnMgc3RyaW5nIHJlc291cmNlcyBmb3IgQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci4KKyMgVGhpcyBmaWxlIGNvbnRhaW5zIHN0cmluZyByZXNvdXJj
ZXMgZm9yIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IuCiAjIEl0cyBzeW50YXggaXMgYSBQeXRob24g
c3ludGF4IHN1YnNldCwgc3VpdGFibGUgZm9yIG1hbnVhbCBwYXJzaW5nLgogCiBmcm9udGVuZF9k
b21haW5fY2xhc3MgPSAoCi0iIiIgICAgY2xhc3MgJGRvbWFpbkNsYXNzTmFtZSB7Ci0gICAgcHVi
bGljOgotICAgICAgICAkZG9tYWluQ2xhc3NOYW1lKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGlu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9Ci0ke2Zyb250ZW5kRG9tYWluTWV0aG9kRGVjbGFy
YXRpb25zfQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLSAgICB9OwotCi0gICAgJGRvbWFpbkNsYXNz
TmFtZSogJGRvbWFpbkZpZWxkTmFtZSgpIHsgcmV0dXJuICZtXyRkb21haW5GaWVsZE5hbWU7IH0K
KyIiImNsYXNzICRkb21haW5DbGFzc05hbWUgeworcHVibGljOgorICAgICRkb21haW5DbGFzc05h
bWUoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDog
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0K
KyR7ZnJvbnRlbmREb21haW5NZXRob2REZWNsYXJhdGlvbnN9cHJpdmF0ZToKKyAgICBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworfTsKIAogIiIi
KQogCkBAIC02Miw3ICs1OSw3IEBAICR7cmVzcG9uc2VDb29rfQogfQogIiIiKQogCi1mcm9udGVu
ZF9tZXRob2QgPSAoIiIidm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6JGRvbWFpbk5hbWU6OiRldmVu
dE5hbWUoJHBhcmFtZXRlcnMpCitmcm9udGVuZF9tZXRob2QgPSAoIiIidm9pZCBJbnNwZWN0b3Ik
e2RvbWFpbk5hbWV9RnJvbnRlbmREaXNwYXRjaGVyOjokZXZlbnROYW1lKCRwYXJhbWV0ZXJzKQog
ewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKCJtZXRob2QiLCAiJGRv
bWFpbk5hbWUuJGV2ZW50TmFtZSIpOwpAQCAtOTQsMjcgKzkxLDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCi0vLyBCb3RoIEluc3Bl
Y3Rvck9iamVjdCBhbmQgSW5zcGVjdG9yQXJyYXkgbWF5IG9yIG1heSBub3QgYmUgZGVjbGFyZWQg
YXQgdGhpcyBwb2ludCBhcyBkZWZpbmVkIGJ5IEVOQUJMRURfSU5TUEVDVE9SLgotLy8gRG91Ymxl
LWNoZWNrIHdlIGhhdmUgdGhlbSBhdCBsZWFzdCBhcyBmb3J3YXJkIGRlY2xhcmF0aW9uLgotY2xh
c3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci0KLXR5cGVkZWYgU3Ry
aW5nIEVycm9yU3RyaW5nOwotCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmQgewotcHVibGljOgotICAgIEluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCopOwotCi0KICRkb21haW5DbGFzc0xpc3QKLXByaXZhdGU6Ci0ke2ZpZWxk
RGVjbGFyYXRpb25zfX07CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGcm9udGVuZF9o
KQogIiIiKQogCkBAIC0yMDUsMTIgKzE4OSwxMSBAQCBiYWNrZW5kX2NwcCA9ICgKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIK
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDkzLDIyICs0NzYsMTcgQEAgZnJvbnRlbmRfY3Bw
ID0gKAogIiIiCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnNwZWN0b3JGcm9udGVuZDo6SW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwpCi0gICAgOiAkY29uc3RydWN0b3JJbml0ewotfQotCiAkbWV0aG9kcwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdl
LmNwcAppbmRleCA5MTM0YjdmLi4wYzk3MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJJZGVudGlm
aWVyc0ZhY3RvcnkuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCkBAIC0xODgsNyArMTg3LDcgQEAgc3RhdGlj
IFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkVudW0gbWVzc2Fn
ZUxldmVsVmFsdWUoTWVzc2EKICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpMZXZlbDo6TG9nOwogfQogCi12b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zy
b250ZW5kKEluc3BlY3RvckZyb250ZW5kOjpDb25zb2xlKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KQor
dm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25zb2xlRnJvbnRl
bmREaXNwYXRjaGVyKiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpCiB7CiAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZT4ganNvbk9iaiA9
IFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6Y3JlYXRlKCkKICAgICAgICAg
LnNldFNvdXJjZShtZXNzYWdlU291cmNlVmFsdWUobV9zb3VyY2UpKQpAQCAtMjMwLDEyICsyMjks
MTIgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVu
ZDo6Q29uc29sZSogZnJvbnRlbmQsIEluamVjdGUKICAgICB9CiAgICAgaWYgKG1fY2FsbFN0YWNr
KQogICAgICAgICBqc29uT2JqLT5zZXRTdGFja1RyYWNlKG1fY2FsbFN0YWNrLT5idWlsZEluc3Bl
Y3RvckFycmF5KCkpOwotICAgIGZyb250ZW5kLT5tZXNzYWdlQWRkZWQoanNvbk9iaik7CisgICAg
Y29uc29sZUZyb250ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZUFkZGVkKGpzb25PYmopOwogfQogCi12
b2lkIENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0b3JG
cm9udGVuZDo6Q29uc29sZSogZnJvbnRlbmQpCit2b2lkIENvbnNvbGVNZXNzYWdlOjp1cGRhdGVS
ZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBj
b25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKQogewotICAgIGZyb250ZW5kLT5tZXNzYWdlUmVwZWF0
Q291bnRVcGRhdGVkKG1fcmVwZWF0Q291bnQpOworICAgIGNvbnNvbGVGcm9udGVuZERpc3BhdGNo
ZXItPm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQobV9yZXBlYXRDb3VudCk7CiB9CiAKIGJvb2wg
Q29uc29sZU1lc3NhZ2U6OmlzRXF1YWwoQ29uc29sZU1lc3NhZ2UqIG1zZykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKaW5kZXggY2IyNmRhMDkuLjA3Zjg4
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC00Miw3
ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93OwogY2xhc3Mg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJ
bnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBTY3JpcHRBcmd1bWVudHM7CiBjbGFzcyBTY3JpcHRDYWxs
RnJhbWU7CkBAIC01OCw4ICs1Nyw4IEBAIHB1YmxpYzoKICAgICBDb25zb2xlTWVzc2FnZShib29s
IGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRz
PiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7
CiAgICAgfkNvbnNvbGVNZXNzYWdlKCk7CiAKLSAgICB2b2lkIGFkZFRvRnJvbnRlbmQoSW5zcGVj
dG9yRnJvbnRlbmQ6OkNvbnNvbGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBib29sIGdlbmVy
YXRlUHJldmlldyk7Ci0gICAgdm9pZCB1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0
b3JGcm9udGVuZDo6Q29uc29sZSopOworICAgIHZvaWQgYWRkVG9Gcm9udGVuZChJbnNwZWN0b3JD
b25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgYm9vbCBn
ZW5lcmF0ZVByZXZpZXcpOworICAgIHZvaWQgdXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5z
cGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciopOwogICAgIHZvaWQgaW5jcmVtZW50Q291
bnQoKSB7ICsrbV9yZXBlYXRDb3VudDsgfQogICAgIGJvb2wgaXNFcXVhbChDb25zb2xlTWVzc2Fn
ZSogbXNnKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0SG9zdC5oCmluZGV4IGI5MTFlZDAuLjRhODQxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTQ2LDcgKzQ2LDYgQEAgY2xhc3MgSW5z
cGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLWNs
YXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5z
cGVjdG9yVmFsdWU7CiBjbGFzcyBOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHAKaW5kZXggYTVjMDEwMi4uNGVhZGRlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC01OCw5ICs1OCw4IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBwYWdl
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2Vu
dDxJbnNwZWN0b3JBZ2VudD4oIkluc3BlY3RvciIsIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAg
OiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJJbnNwZWN0b3IiKSwgaW5zdHJ1bWVu
dGluZ0FnZW50cykKICAgICAsIG1faW5zcGVjdGVkUGFnZShwYWdlKQotICAgICwgbV9mcm9udGVu
ZCgwKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQogICAgICwgbV9lbmFibGVkKGZhbHNlKQogewpAQCAtOTQsMTUgKzkzLDE3IEBAIHZvaWQgSW5z
cGVjdG9yQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXb3JsZCYKICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzY3JpcHRT
b3VyY2UudG9TdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OnNldEZyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kKiBpbnNwZWN0b3JGcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewotICAgIG1fZnJvbnRlbmQgPSBpbnNwZWN0b3JGcm9udGVuZDsKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5zcGVjdG9yRnJv
bnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVy
LT5yZWdpc3RlckFnZW50KHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckFnZW50OjpjbGVhckZy
b250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKCkKIHsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CisKICAgICBtX3Bl
bmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kcy5jbGVhcigpOwotICAgIG1fZnJvbnRlbmQgPSAwOwog
ICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjYXJkSW5qZWN0ZWRTY3JpcHRzKCk7CiAg
ICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgZGlzYWJsZSgmZXJyb3IpOwpAQCAtMTIwLDggKzEy
MSw4IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAgICAgaWYg
KG1fcGVuZGluZ0luc3BlY3REYXRhLmZpcnN0KQogICAgICAgICBpbnNwZWN0KG1fcGVuZGluZ0lu
c3BlY3REYXRhLmZpcnN0LCBtX3BlbmRpbmdJbnNwZWN0RGF0YS5zZWNvbmQpOwogCi0gICAgZm9y
IChWZWN0b3I8cGFpcjxsb25nLCBTdHJpbmc+Pjo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdFdmFs
dWF0ZVRlc3RDb21tYW5kcy5iZWdpbigpOyBtX2Zyb250ZW5kICYmIGl0ICE9IG1fcGVuZGluZ0V2
YWx1YXRlVGVzdENvbW1hbmRzLmVuZCgpOyArK2l0KQotICAgICAgICBtX2Zyb250ZW5kLT5pbnNw
ZWN0b3IoKS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChzdGF0aWNfY2FzdDxpbnQ+KCgqaXQp
LmZpcnN0KSwgKCppdCkuc2Vjb25kKTsKKyAgICBmb3IgKFZlY3RvcjxwYWlyPGxvbmcsIFN0cmlu
Zz4+OjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmJlZ2luKCk7
IG1fZnJvbnRlbmREaXNwYXRjaGVyICYmIGl0ICE9IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1h
bmRzLmVuZCgpOyArK2l0KQorICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZXZhbHVhdGVG
b3JUZXN0SW5Gcm9udGVuZChzdGF0aWNfY2FzdDxpbnQ+KCgqaXQpLmZpcnN0KSwgKCppdCkuc2Vj
b25kKTsKICAgICBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kcy5jbGVhcigpOwogfQogCkBA
IC0xMzcsOCArMTM4LDggQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZG9tQ29udGVudExvYWRlZEV2
ZW50RmlyZWQoKQogCiB2b2lkIEluc3BlY3RvckFnZW50OjpldmFsdWF0ZUZvclRlc3RJbkZyb250
ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKLSAgICBpZiAobV9lbmFi
bGVkICYmIG1fZnJvbnRlbmQpCi0gICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5ldmFs
dWF0ZUZvclRlc3RJbkZyb250ZW5kKHN0YXRpY19jYXN0PGludD4oY2FsbElkKSwgc2NyaXB0KTsK
KyAgICBpZiAobV9lbmFibGVkICYmIG1fZnJvbnRlbmREaXNwYXRjaGVyKQorICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChzdGF0aWNfY2FzdDxp
bnQ+KGNhbGxJZCksIHNjcmlwdCk7CiAgICAgZWxzZQogICAgICAgICBtX3BlbmRpbmdFdmFsdWF0
ZVRlc3RDb21tYW5kcy5hcHBlbmQocGFpcjxsb25nLCBTdHJpbmc+KGNhbGxJZCwgc2NyaXB0KSk7
CiB9CkBAIC0xNTAsOCArMTUxLDggQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6c2V0SW5qZWN0ZWRT
Y3JpcHRGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmkKIAogdm9pZCBJ
bnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGhpbnRzKQogewotICAgIGlmIChtX2VuYWJsZWQgJiYgbV9mcm9udGVuZCkgewotICAgICAgICBt
X2Zyb250ZW5kLT5pbnNwZWN0b3IoKS0+aW5zcGVjdChvYmplY3RUb0luc3BlY3QsIGhpbnRzKTsK
KyAgICBpZiAobV9lbmFibGVkICYmIG1fZnJvbnRlbmREaXNwYXRjaGVyKSB7CisgICAgICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5pbnNwZWN0KG9iamVjdFRvSW5zcGVjdCwgaGludHMpOwogICAg
ICAgICBtX3BlbmRpbmdJbnNwZWN0RGF0YS5maXJzdCA9IDA7CiAgICAgICAgIG1fcGVuZGluZ0lu
c3BlY3REYXRhLnNlY29uZCA9IDA7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggMjhlM2U4ZC4uZjhmM2IwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xh
c3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kOwor
Y2xhc3MgSW5zcGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAgLTUx
LDcgKzUxLDcgQEAgY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAK
LWNsYXNzIEluc3BlY3RvckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yQ29t
bWFuZEhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3RvckNvbW1h
bmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBZ2VudCk7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGNyZWF0ZShQYWdl
KiBwYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKQEAgLTcwLDE3ICs3MCwxNSBA
QCBwdWJsaWM6CiAgICAgVVJMIGluc3BlY3RlZFVSTCgpIGNvbnN0OwogICAgIFVSTCBpbnNwZWN0
ZWRVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdDsKIAotICAgIEluc3BlY3RvckZyb250ZW5kKiBm
cm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRlbmQ7IH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwotICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJh
bWUqLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwogICAg
IHZvaWQgZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQoKTsKIAotICAgIGJvb2wgaGFzRnJvbnRl
bmQoKSBjb25zdCB7IHJldHVybiBtX2Zyb250ZW5kOyB9CisgICAgYm9vbCBoYXNGcm9udGVuZCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9mcm9udGVuZERpc3BhdGNoZXI7IH0KIAogICAgIC8vIEdlbmVy
aWMgY29kZSBjYWxsZWQgZnJvbSBjdXN0b20gaW1wbGVtZW50YXRpb25zLgogICAgIHZvaWQgZXZh
bHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIHRlc3RDYWxsSWQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KTsKQEAgLTkzLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JBZ2VudChQYWdl
KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zdHJ1bWVudGluZ0FnZW50cyopOwogCiAgICAg
UGFnZSogbV9pbnNwZWN0ZWRQYWdlOwotICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5k
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNo
ZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXI7CiAKICAgICBWZWN0b3I8cGFpcjxsb25nLCBTdHJpbmc+PiBt
X3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcAppbmRleCA2MGVkNDYzLi4wOTlkMWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVn
aXN0cnkuY3BwCkBAIC0zMiwyNyArMzIsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJh
c2VBZ2VudEludGVyZmFjZT4gYWdlbnQpCit2b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFw
cGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4gYWdlbnQpCiB7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKGFnZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpzZXRG
cm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit2b2lkIEluc3BlY3RvckFnZW50
UmVnaXN0cnk6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hZ2VudHMuc2l6
ZSgpOyBpKyspCi0gICAgICAgIG1fYWdlbnRzW2ldLT5zZXRGcm9udGVuZChmcm9udGVuZCk7Cisg
ICAgICAgIG1fYWdlbnRzW2ldLT5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRD
aGFubmVsLCBiYWNrZW5kRGlzcGF0Y2hlcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeTo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fYWdlbnRzLnNpemUoKTsgaSsrKQotICAgICAgICBtX2FnZW50c1tpXS0+Y2xlYXJGcm9udGVu
ZCgpOwotfQotCi12b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OnJlZ2lzdGVySW5EaXNwYXRj
aGVyKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKQotewotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9hZ2VudHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fYWdlbnRz
W2ldLT5yZWdpc3RlckluRGlzcGF0Y2hlcihkaXNwYXRjaGVyKTsKKyAgICAgICAgbV9hZ2VudHNb
aV0tPndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeTo6ZGlzY2FyZEFnZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaAppbmRleCA2MDkyZTE4Li40ZmQwMzUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmgKQEAgLTM0LDE5ICszNCwxNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogCiBjbGFz
cyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChQYXNz
T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZT4pOworICAgIHZvaWQgYXBwZW5kKFBh
c3NPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pik7CiAKLSAgICB2b2lkIHNldEZyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kKik7Ci0gICAgdm9pZCBjbGVhckZyb250ZW5kKCk7Ci0gICAgdm9pZCBy
ZWdpc3RlckluRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopOworICAgIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCgpOwogICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOwogCiBwcml2YXRlOgot
ICAgIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlPj4gbV9hZ2VudHM7
CisgICAgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+PiBtX2FnZW50czsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggMjM0Nzhm
Yy4uNzVmMjVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQ1LDIxICs0NSwyMiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Oklu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KEFTQ0lJTGl0ZXJh
bCgiQXBwbGljYXRpb25DYWNoZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVj
dG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb25DYWNoZSIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQotICAgICwgbV9mcm9udGVu
ZCgwKQogewogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6c2V0RnJv
bnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQordm9pZCBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZC0+YXBwbGlj
YXRpb25jYWNoZSgpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENo
YW5uZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOwogfQog
Ci12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2
b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoKQogeworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKKwogICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
KDApOwotICAgIG1fZnJvbnRlbmQgPSAwOwogfQogCiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKQEAgLTgxLDEzICs4MiwxMyBAQCB2b2lk
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0
YXR1cyhGcmFtZSogZnJhbWUpCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyBp
bmZvID0gaG9zdC0+YXBwbGljYXRpb25DYWNoZUluZm8oKTsKIAogICAgIFN0cmluZyBtYW5pZmVz
dFVSTCA9IGluZm8ubV9tYW5pZmVzdC5zdHJpbmcoKTsKLSAgICBtX2Zyb250ZW5kLT5hcHBsaWNh
dGlvbkNhY2hlU3RhdHVzVXBkYXRlZChtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSksIG1hbmlm
ZXN0VVJMLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykpOworICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5hcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBkYXRlZChtX3BhZ2VBZ2VudC0+ZnJhbWVJZChm
cmFtZSksIG1hbmlmZXN0VVJMLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykpOwogfQogCiB2b2lk
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiB7
CiAgICAgYm9vbCBpc05vd09ubGluZSA9IG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkub25MaW5lKCk7
Ci0gICAgbV9mcm9udGVuZC0+bmV0d29ya1N0YXRlVXBkYXRlZChpc05vd09ubGluZSk7CisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPm5ldHdvcmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxpbmUpOwog
fQogCiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1h
bmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuaAppbmRleCA2ZWUzZTE0Li5lNGZhYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKLWNsYXNzIEluc3BlY3RvckZy
b250ZW5kOworY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hl
cjsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNs
YXNzIEluc3BlY3RvclZhbHVlOwpAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OkFwcGxpY2F0aW9uQ2FjaGVDb21tYW5kSGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OkFwcGxpY2F0aW9uQ2FjaGVDb21tYW5kSGFuZGxlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCkBA
IC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICB+SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KCkgeyB9CiAKICAgICAvLyBJbnNwZWN0b3JCYXNlQWdlbnQKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJG
cm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBPVkVSUklERTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBBUEkKICAgICB2
b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoRnJhbWUqKTsKQEAgLTgwLDcgKzgwLDcg
QEAgcHJpdmF0ZToKICAgICBEb2N1bWVudExvYWRlciogYXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRM
b2FkZXIoRXJyb3JTdHJpbmcqLCBTdHJpbmcgZnJhbWVJZCk7CiAKICAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIG1fcGFnZUFnZW50OwotICAgIEluc3BlY3RvckZyb250ZW5kOjpBcHBsaWNhdGlvbkNh
Y2hlKiBtX2Zyb250ZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYXNlQWdlbnQuaAppbmRleCAyODBiOTg0Li5mZTUwMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oCkBAIC0zMiw1NSArMzIsMzIgQEAKICNk
ZWZpbmUgSW5zcGVjdG9yQmFzZUFnZW50X2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JG
cm9udGVuZDsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3RydW1l
bnRpbmdBZ2VudHM7CiAKLWNsYXNzIEluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZSB7CitjbGFz
cyBJbnNwZWN0b3JCYXNlQWdlbnQgewogcHVibGljOgotICAgIEluc3BlY3RvckJhc2VBZ2VudElu
dGVyZmFjZShjb25zdCBTdHJpbmcmIG5hbWUsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMpCisgICAgdmlydHVhbCB+SW5zcGVjdG9yQmFzZUFnZW50KCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzY2FyZEFnZW50KCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBJbnNwZWN0b3JCYXNl
QWdlbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5n
QWdlbnRzKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2UoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBj
bGVhckZyb250ZW5kKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW5EaXNwYXRjaGVy
KEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNj
YXJkQWdlbnQoKSB7IH0KLQotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
OyB9Ci0KLXByb3RlY3RlZDoKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRp
bmdBZ2VudHM7Ci0KLXByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBJbnNwZWN0b3JCYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QmFzZUFnZW50SW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JCYXNl
QWdlbnQoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckluRGlzcGF0Y2hlcihJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0Y2hlcikKLSAgICB7Ci0gICAgICAgIGRpc3Bh
dGNoZXItPnJlZ2lzdGVyQWdlbnQoc3RhdGljX2Nhc3Q8VCo+KHRoaXMpKTsKLSAgICB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBJbnNwZWN0b3JCYXNlQWdlbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICAgICA6IEluc3BlY3Rv
ckJhc2VBZ2VudEludGVyZmFjZShuYW1lLCBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIHsKLSAg
ICB9Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJ
bnNwZWN0b3JCYXNlQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCmluZGV4IGViZWRjNzIuLjYwNzdjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNjE2LDggKzYxNiw3IEBA
IENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUq
IHJ1bGUpCiB9CiAKIEluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9t
QWdlbnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQ1NTQWdlbnQ+KCJDU1Mi
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICwgbV9mcm9udGVuZCgwKQorICAgIDogSW5zcGVj
dG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQ1NTIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAg
ICAgLCBtX2RvbUFnZW50KGRvbUFnZW50KQogICAgICwgbV9sYXN0U3R5bGVTaGVldElkKDEpCiB7
CkBAIC02MzAsMTYgKzYyOSwxNiBAQCBJbnNwZWN0b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0Fn
ZW50KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRGcm9u
dGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKIHsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmQpOwotICAgIG1fZnJvbnRlbmQgPSBmcm9u
dGVuZC0+Y3NzKCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckNTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBi
YWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpCiB7Ci0gICAgQVNTRVJUKG1fZnJvbnRlbmQpOwot
ICAgIG1fZnJvbnRlbmQgPSAwOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsK
KwogICAgIHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsKICAgICBTdHJpbmcgZXJyb3JTdHJpbmc7
CiAgICAgc3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKCZlcnJvclN0cmluZywgZmFsc2UpOwpAQCAt
NjgyLDggKzY4MSw4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJp
bmcqKQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgp
CiB7Ci0gICAgaWYgKG1fZnJvbnRlbmQpCi0gICAgICAgIG1fZnJvbnRlbmQtPm1lZGlhUXVlcnlS
ZXN1bHRDaGFuZ2VkKCk7CisgICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyKQorICAgICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVu
dCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCkBAIC02OTMsNyArNjkyLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwg
V2ViS2l0TmFtZWRGbG93KgogICAgICAgICByZXR1cm47CiAKICAgICBFcnJvclN0cmluZyBlcnJv
clN0cmluZzsKLSAgICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dDcmVhdGVkKGJ1aWxkT2JqZWN0Rm9y
TmFtZWRGbG93KCZlcnJvclN0cmluZywgbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uYW1lZEZsb3dDcmVhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFt
ZWRGbG93KCZlcnJvclN0cmluZywgbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOwogfQogCiB2
b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1
bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCkBAIC03MDgsNyArNzA3LDcgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1l
bnQsIFdlYktpdE5hbWVkRmxvdyoKICAgICBpZiAobV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzaykK
ICAgICAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzay0+dW5zY2hlZHVsZShuYW1lZEZsb3cp
OwogCi0gICAgbV9mcm9udGVuZC0+bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFt
ZWRGbG93LT5uYW1lKCkuc3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uYW1l
ZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3ctPm5hbWUoKS5zdHJpbmcoKSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJlZ2lvbkxheW91dChEb2N1
bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQpAQCAtNzMwLDcgKzcy
OSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbkxheW91dFVwZGF0ZWQoV2ViS2l0
TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2N1CiAgICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJp
bmc7CiAgICAgUmVmPFdlYktpdE5hbWVkRmxvdz4gcHJvdGVjdCgqbmFtZWRGbG93KTsKIAotICAg
IG1fZnJvbnRlbmQtPnJlZ2lvbkxheW91dFVwZGF0ZWQoYnVpbGRPYmplY3RGb3JOYW1lZEZsb3co
JmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7CisgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPnJlZ2lvbkxheW91dFVwZGF0ZWQoYnVpbGRPYmplY3RGb3JOYW1lZEZsb3co
JmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoRG9jdW1lbnQqIGRvY3VtZW50
LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKQEAgLTc1Miw3ICs3NTEsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpyZWdpb25PdmVyc2V0Q2hhbmdlZChXZWJLaXROYW1lZEZsb3cqIG5h
bWVkRmxvdywgaW50IGRvYwogICAgIEVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIFJlZjxX
ZWJLaXROYW1lZEZsb3c+IHByb3RlY3QoKm5hbWVkRmxvdyk7CiAgICAgCi0gICAgbV9mcm9udGVu
ZC0+cmVnaW9uT3ZlcnNldENoYW5nZWQoYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coJmVycm9yU3Ry
aW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KCZlcnJvclN0
cmluZywgbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIE5vZGUqIGNvbnRlbnRFbGVtZW50LCBO
b2RlKiBuZXh0Q29udGVudEVsZW1lbnQpCkBAIC03NjQsNyArNzYzLDcgQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCog
ZG9jdW1lbnQsIFcKICAgICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKICAgICBpbnQgY29udGVu
dEVsZW1lbnROb2RlSWQgPSBtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRlbmQoJmVycm9yU3Ry
aW5nLCBkb2N1bWVudE5vZGVJZCwgY29udGVudEVsZW1lbnQpOwogICAgIGludCBuZXh0Q29udGVu
dEVsZW1lbnROb2RlSWQgPSBuZXh0Q29udGVudEVsZW1lbnQgPyBtX2RvbUFnZW50LT5wdXNoTm9k
ZVRvRnJvbnRlbmQoJmVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVt
ZW50KSA6IDA7Ci0gICAgbV9mcm9udGVuZC0+cmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3ctPm5hbWUoKS5zdHJpbmcoKSwgY29udGVudEVs
ZW1lbnROb2RlSWQsIG5leHRDb250ZW50RWxlbWVudE5vZGVJZCk7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPnJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudE5vZGVJ
ZCwgbmFtZWRGbG93LT5uYW1lKCkuc3RyaW5nKCksIGNvbnRlbnRFbGVtZW50Tm9kZUlkLCBuZXh0
Q29udGVudEVsZW1lbnROb2RlSWQpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRV
bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJL
aXROYW1lZEZsb3cqIG5hbWVkRmxvdywgTm9kZSogY29udGVudEVsZW1lbnQpCkBAIC03NzksNyAr
Nzc4LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0Nv
bnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwKICAgICAgICAgLy8gV2UndmUgYWxyZWFk
eSBub3RpZmllZCB0aGF0IHRoZSBET00gbm9kZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBET00sIHNv
IHRoZXJlJ3Mgbm8gbmVlZCB0byBzZW5kIGFub3RoZXIgZXZlbnQuCiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgbV9mcm9udGVuZC0+dW5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1l
bnQoZG9jdW1lbnROb2RlSWQsIG5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygpLCBjb250ZW50RWxl
bWVudE5vZGVJZCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnVucmVnaXN0ZXJlZE5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3ctPm5hbWUoKS5zdHJp
bmcoKSwgY29udGVudEVsZW1lbnROb2RlSWQpOwogfQogCiBib29sIEluc3BlY3RvckNTU0FnZW50
Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9U
eXBlIHBzZXVkb1R5cGUpCkBAIC0xMDk2LDcgKzEwOTUsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3Rv
clBybwogICAgIGlmICghbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlKQogICAgICAgICByZXR1cm4g
MDsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiByZXN1bHQ7
Ci0gICAgaWYgKG1fZnJvbnRlbmQgJiYgbmVlZFByb2ZpbGUpCisgICAgaWYgKG1fZnJvbnRlbmRE
aXNwYXRjaGVyICYmIG5lZWRQcm9maWxlKQogICAgICAgICByZXN1bHQgPSBtX2N1cnJlbnRTZWxl
Y3RvclByb2ZpbGUtPnRvSW5zcGVjdG9yT2JqZWN0KCk7CiAgICAgbV9jdXJyZW50U2VsZWN0b3JQ
cm9maWxlLmNsZWFyKCk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CkBAIC0xNDUxLDgg
KzE0NTAsOCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRNb2RpZnlET01BdHRyKEVsZW1l
bnQqIGVsZW1lbnQpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0eWxlU2hlZXRDaGFuZ2Vk
KEluc3BlY3RvclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiB7Ci0gICAgaWYgKG1fZnJvbnRlbmQp
Ci0gICAgICAgIG1fZnJvbnRlbmQtPnN0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlU2hlZXQtPmlkKCkp
OworICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlcikKKyAgICAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPnN0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlU2hlZXQtPmlkKCkpOwogfQogCiB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpyZXNldFBzZXVkb1N0YXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDUyOWFkMTkuLmNiZTZjMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC01MCw3ICs1
MCw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOwotY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmQ7CitjbGFzcyBJbnNwZWN0b3JDU1NGcm9udGVuZERpc3BhdGNoZXI7
CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBO
b2RlOwpAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudAotICAgIDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDU1NBZ2VudD4KKyAgICA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlz
dGVuZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q1NTQ29tbWFu
ZEhhbmRsZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JTdHlsZVNoZWV0OjpMaXN0ZW5lciB7CkBA
IC05Niw4ICs5Niw4IEBAIHB1YmxpYzoKICAgICB+SW5zcGVjdG9yQ1NTQWdlbnQoKTsKIAogICAg
IGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwotICAg
IHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJk
QWdlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCByZXNldFBzZXVkb1N0YXRlcygpOwogCi0gICAgSW5zcGVjdG9yRnJv
bnRlbmQ6OkNTUyogbV9mcm9udGVuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQ1NT
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3JE
T01BZ2VudCogbV9kb21BZ2VudDsKIAogICAgIElkVG9JbnNwZWN0b3JTdHlsZVNoZWV0IG1faWRU
b0luc3BlY3RvclN0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCA1ODgxYzMxLi4zZGU4ZDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTYy
LDEwICs2Miw5IEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlk
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9y
Q2FudmFzQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNhbnZh
c0FnZW50PigiQ2FudmFzIiwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckJh
c2VBZ2VudChBU0NJSUxpdGVyYWwoIkNhbnZhcyIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAg
ICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIo
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9lbmFi
bGVkKGZhbHNlKQogewogfQpAQCAtNzQsMTYgKzczLDE3IEBAIEluc3BlY3RvckNhbnZhc0FnZW50
Ojp+SW5zcGVjdG9yQ2FudmFzQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit2b2lkIEluc3Bl
Y3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBBU1NFUlQoZnJvbnRlbmQpOwotICAgIG1fZnJv
bnRlbmQgPSBmcm9udGVuZC0+Y2FudmFzKCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNhbnZhc0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRDaGFubmVsKTsKKyAgICBiYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIElu
c3BlY3RvckNhbnZhc0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpCiB7Ci0g
ICAgbV9mcm9udGVuZCA9IDA7Ci0gICAgZGlzYWJsZSgwKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IG51bGxwdHI7CisKKyAgICBkaXNhYmxlKG51bGxwdHIpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckNhbnZhc0FnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQpAQCAtMTk5LDcgKzE5OSw3IEBA
IFNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEZvckluc3RydW1lbnRhdGlvbihjCiAKIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgU2NyaXB0T2JqZWN0
JiB3cmFwcGVkQ29udGV4dCkKIHsKLSAgICBBU1NFUlQobV9mcm9udGVuZCk7CisgICAgQVNTRVJU
KG1fZnJvbnRlbmREaXNwYXRjaGVyKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUg
PSB3cmFwcGVkQ29udGV4dC5zY3JpcHRTdGF0ZSgpOwogICAgIERPTVdpbmRvdyogZG9tV2luZG93
ID0gc2NyaXB0U3RhdGUgPyBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKHNjcmlwdFN0YXRlKSA6IDA7
CiAgICAgRnJhbWUqIGZyYW1lID0gZG9tV2luZG93ID8gZG9tV2luZG93LT5mcmFtZSgpIDogMDsK
QEAgLTIwNyw3ICsyMDcsNyBAQCBTY3JpcHRPYmplY3QgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Om5v
dGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKGNvbnN0IFNjcmlwdAogICAgICAgICBtX2Zy
YW1lc1dpdGhVbmluc3RydW1lbnRlZENhbnZhc2VzLnNldChmcmFtZSwgZmFsc2UpOwogICAgIFN0
cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOwogICAgIGlmICghZnJh
bWVJZC5pc0VtcHR5KCkpCi0gICAgICAgIG1fZnJvbnRlbmQtPmNvbnRleHRDcmVhdGVkKGZyYW1l
SWQpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y29udGV4dENyZWF0ZWQoZnJhbWVJ
ZCk7CiAgICAgcmV0dXJuIHdyYXBwZWRDb250ZXh0OwogfQogCkBAIC0yNzAsNyArMjcwLDcgQEAg
dm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZmluZEZyYW1lc1dpdGhVbmluc3RydW1lbnRlZENh
bnZhc2VzKCkKICAgICBmb3IgKEZyYW1lc1dpdGhVbmluc3RydW1lbnRlZENhbnZhc2VzOjppdGVy
YXRvciBpdCA9IG1fZnJhbWVzV2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFzZXMuYmVnaW4oKTsgaXQg
IT0gbV9mcmFtZXNXaXRoVW5pbnN0cnVtZW50ZWRDYW52YXNlcy5lbmQoKTsgKytpdCkgewogICAg
ICAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGl0LT5rZXkpOwogICAg
ICAgICBpZiAoIWZyYW1lSWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9mcm9udGVuZC0+Y29u
dGV4dENyZWF0ZWQoZnJhbWVJZCk7CisgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
Y29udGV4dENyZWF0ZWQoZnJhbWVJZCk7CiAgICAgfQogfQogCkBAIC0yODksMTQgKzI4OSwxNCBA
QCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpmcmFtZU5hdmlnYXRlZChGcmFtZSogZnJhbWUp
CiAgICAgaWYgKGZyYW1lID09IG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKSkgewogICAgICAgICBm
b3IgKEZyYW1lc1dpdGhVbmluc3RydW1lbnRlZENhbnZhc2VzOjppdGVyYXRvciBpdCA9IG1fZnJh
bWVzV2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFzZXMuYmVnaW4oKTsgaXQgIT0gbV9mcmFtZXNXaXRo
VW5pbnN0cnVtZW50ZWRDYW52YXNlcy5lbmQoKTsgKytpdCkKICAgICAgICAgICAgIG1fZnJhbWVz
V2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFzZXMuc2V0KGl0LT5rZXksIGZhbHNlKTsKLSAgICAgICAg
bV9mcm9udGVuZC0+dHJhY2VMb2dzUmVtb3ZlZCgwLCAwKTsKKyAgICAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPnRyYWNlTG9nc1JlbW92ZWQoMCwgMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
d2hpbGUgKGZyYW1lKSB7CiAgICAgICAgICAgICBpZiAobV9mcmFtZXNXaXRoVW5pbnN0cnVtZW50
ZWRDYW52YXNlcy5jb250YWlucyhmcmFtZSkpCiAgICAgICAgICAgICAgICAgbV9mcmFtZXNXaXRo
VW5pbnN0cnVtZW50ZWRDYW52YXNlcy5zZXQoZnJhbWUsIGZhbHNlKTsKICAgICAgICAgICAgIGlm
IChtX3BhZ2VBZ2VudC0+aGFzSWRGb3JGcmFtZShmcmFtZSkpIHsKICAgICAgICAgICAgICAgICBT
dHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKTsKLSAgICAgICAgICAg
ICAgICBtX2Zyb250ZW5kLT50cmFjZUxvZ3NSZW1vdmVkKCZmcmFtZUlkLCAwKTsKKyAgICAgICAg
ICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dHJhY2VMb2dzUmVtb3ZlZCgmZnJhbWVJZCwg
MCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggN2U5NDU1My4uMmViYzcxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmgKQEAgLTUzLDcgKzUz
LDcgQEAgY2xhc3MgU2NyaXB0T2JqZWN0OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsK
IAotY2xhc3MgSW5zcGVjdG9yQ2FudmFzQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3RvckNhbnZhc0FnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpDYW52YXNDb21tYW5kSGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JDYW52YXNBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FudmFzQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PEluc3BlY3RvckNhbnZhc0FnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgIHsKQEAgLTYxLDggKzYxLDgg
QEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9yQ2FudmFzQWdlbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwotICAgIHZpcnR1YWwg
dm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChGcmFtZSop
OwogICAgIHZvaWQgZnJhbWVEZXRhY2hlZChGcmFtZSopOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHBy
aXZhdGU6CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgSW5zcGVjdG9y
RnJvbnRlbmQ6OkNhbnZhcyogbV9mcm9udGVuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yQ2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBi
b29sIG1fZW5hYmxlZDsKICAgICAvLyBDb250YWlucyBhbGwgZnJhbWVzIHdpdGggY2FudmFzZXMs
IHZhbHVlIGlzIHRydWUgb25seSBmb3IgZnJhbWVzIHRoYXQgaGF2ZSBhbiB1bmluc3RydW1lbnRl
ZCBjYW52YXMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPEZyYW1lKiwgYm9vbD4gRnJhbWVzV2l0aFVu
aW5zdHJ1bWVudGVkQ2FudmFzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDI0MDBhMGEuLjYyYjllMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBA
IC01OSw5ICs1OSw4IEBAIHN0YXRpYyBjb25zdCBpbnQgZXhwaXJlQ29uc29sZU1lc3NhZ2VzU3Rl
cCA9IDEwMDsKIGludCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNfZW5hYmxlZEFnZW50Q291bnQg
PSAwOwogCiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ+KCJDb25zb2xlIiwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6
IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkNvbnNvbGUiKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFu
YWdlcikKLSAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCiAg
ICAgLCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KDApCiAgICAgLCBtX2VuYWJsZWQoZmFs
c2UpCkBAIC04OCwxMiArODcsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJs
ZShFcnJvclN0cmluZyopCiAKICAgICBpZiAobV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCkg
ewogICAgICAgICBDb25zb2xlTWVzc2FnZSBleHBpcmVkTWVzc2FnZSghaXNXb3JrZXJBZ2VudCgp
LCBPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVs
LCBTdHJpbmc6OmZvcm1hdCgiJWQgY29uc29sZSBtZXNzYWdlcyBhcmUgbm90IHNob3duLiIsIG1f
ZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQpKTsKLSAgICAgICAgZXhwaXJlZE1lc3NhZ2UuYWRk
VG9Gcm9udGVuZChtX2Zyb250ZW5kLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlciwgZmFsc2UpOwor
ICAgICAgICBleHBpcmVkTWVzc2FnZS5hZGRUb0Zyb250ZW5kKG1fZnJvbnRlbmREaXNwYXRjaGVy
LmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlciwgZmFsc2UpOwogICAgIH0KIAogICAgIHNp
emVfdCBtZXNzYWdlQ291bnQgPSBtX2NvbnNvbGVNZXNzYWdlcy5zaXplKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlQ291bnQ7ICsraSkKLSAgICAgICAgbV9jb25zb2xlTWVz
c2FnZXNbaV0tPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZCwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIGZhbHNlKTsKKyAgICAgICAgbV9jb25zb2xlTWVzc2FnZXNbaV0tPmFkZFRvRnJvbnRlbmQo
bV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBmYWxz
ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5n
KikKQEAgLTExMSw4ICsxMTAsOCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJN
ZXNzYWdlcyhFcnJvclN0cmluZyopCiAgICAgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCA9
IDA7CiAgICAgbV9wcmV2aW91c01lc3NhZ2UgPSAwOwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAoImNvbnNvbGUiKTsKLSAgICBpZiAobV9mcm9udGVuZCAm
JiBtX2VuYWJsZWQpCi0gICAgICAgIG1fZnJvbnRlbmQtPm1lc3NhZ2VzQ2xlYXJlZCgpOworICAg
IGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlciAmJiBtX2VuYWJsZWQpCisgICAgICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5tZXNzYWdlc0NsZWFyZWQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OnJlc2V0KCkKQEAgLTEyMywxNCArMTIyLDE2IEBAIHZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjpyZXNldCgpCiAgICAgbV9jb3VudHMuY2xlYXIoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVu
ZCkKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kID0g
ZnJvbnRlbmQtPmNvbnNvbGUoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFu
bmVsKTsKKyAgICBiYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQordm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIHsKLSAgICBt
X2Zyb250ZW5kID0gMDsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CisKICAg
ICBTdHJpbmcgZXJyb3JTdHJpbmc7CiAgICAgZGlzYWJsZSgmZXJyb3JTdHJpbmcpOwogfQpAQCAt
MTcxLDcgKzE3Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9D
b25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwCiAgICAgICAgIGNsZWFyTWVz
c2FnZXMoJmVycm9yKTsKICAgICB9CiAKLSAgICBib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrID0g
IWlzV29ya2VyQWdlbnQoKSAmJiBtX2Zyb250ZW5kOworICAgIGJvb2wgY2FuR2VuZXJhdGVDYWxs
U3RhY2sgPSAhaXNXb3JrZXJBZ2VudCgpICYmIG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIGFk
ZENvbnNvbGVNZXNzYWdlKGFkb3B0UHRyKG5ldyBDb25zb2xlTWVzc2FnZShjYW5HZW5lcmF0ZUNh
bGxTdGFjaywgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgc2NyaXB0SUQsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKSkpOwogfQogCkBAIC0y
NDksNyArMjUwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZEZpbmlzaFhIUkxv
YWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwKIHsKICAgICBpZiAoIWRldmVs
b3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2Zyb250ZW5k
ICYmIG1fbW9uaXRvcmluZ1hIUkVuYWJsZWQpIHsKKyAgICBpZiAobV9mcm9udGVuZERpc3BhdGNo
ZXIgJiYgbV9tb25pdG9yaW5nWEhSRW5hYmxlZCkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9
ICJYSFIgZmluaXNoZWQgbG9hZGluZzogXCIiICsgdXJsICsgIlwiLiI7CiAgICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoTmV0d29ya01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBEZWJ1
Z01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIsIHNlbmRDb2x1
bW5OdW1iZXIsIDAsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB9CkBAIC0zMDAsMTYgKzMwMSwx
NiBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UoUGFzc093
blB0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZQogCiAgICAgaWYgKG1fcHJldmlvdXNNZXNzYWdl
ICYmICFpc0dyb3VwTWVzc2FnZShtX3ByZXZpb3VzTWVzc2FnZS0+dHlwZSgpKSAmJiBtX3ByZXZp
b3VzTWVzc2FnZS0+aXNFcXVhbChjb25zb2xlTWVzc2FnZS5nZXQoKSkpIHsKICAgICAgICAgbV9w
cmV2aW91c01lc3NhZ2UtPmluY3JlbWVudENvdW50KCk7Ci0gICAgICAgIGlmIChtX2Zyb250ZW5k
ICYmIG1fZW5hYmxlZCkKLSAgICAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT51cGRhdGVSZXBl
YXRDb3VudEluQ29uc29sZShtX2Zyb250ZW5kKTsKKyAgICAgICAgaWYgKG1fZnJvbnRlbmREaXNw
YXRjaGVyICYmIG1fZW5hYmxlZCkKKyAgICAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT51cGRh
dGVSZXBlYXRDb3VudEluQ29uc29sZShtX2Zyb250ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZS5nZXQo
KTsKICAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMuYXBwZW5kKGNvbnNvbGVNZXNzYWdlKTsKLSAg
ICAgICAgaWYgKG1fZnJvbnRlbmQgJiYgbV9lbmFibGVkKQotICAgICAgICAgICAgbV9wcmV2aW91
c01lc3NhZ2UtPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZCwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIHRydWUpOworICAgICAgICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIgJiYgbV9lbmFibGVk
KQorICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPmFkZFRvRnJvbnRlbmQobV9mcm9udGVu
ZERpc3BhdGNoZXIuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCB0cnVlKTsKICAgICB9
CiAKLSAgICBpZiAoIW1fZnJvbnRlbmQgJiYgbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpID49IG1h
eGltdW1Db25zb2xlTWVzc2FnZXMpIHsKKyAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyICYm
IG1fY29uc29sZU1lc3NhZ2VzLnNpemUoKSA+PSBtYXhpbXVtQ29uc29sZU1lc3NhZ2VzKSB7CiAg
ICAgICAgIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQgKz0gZXhwaXJlQ29uc29sZU1lc3Nh
Z2VzU3RlcDsKICAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMucmVtb3ZlKDAsIGV4cGlyZUNvbnNv
bGVNZXNzYWdlc1N0ZXApOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCBjN2YxYzhhLi40NTA0YWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC00Miw3
ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiBj
bGFzcyBET01XaW5kb3c7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluamVjdGVk
U2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwpAQCAtNTMsNyArNTIsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxlOwogCiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+LCBwdWJsaWMgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNvbnNvbGVDb21tYW5kSGFuZGxlciB7CitjbGFzcyBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNvbnNvbGVDb21tYW5kSGFuZGxlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ29uc29sZUFnZW50KTsKIHB1YmxpYzoKICAg
ICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVjdGVkU2Ny
aXB0TWFuYWdlciopOwpAQCAtNjUsOCArNjQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdm9pZCByZXNldCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwogICAgIHZvaWQgYWRkTWVzc2FnZVRv
Q29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUqID0gMCwgdW5zaWduZWQg
bG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwpAQCAtMTAxLDcgKzEwMCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIGJvb2wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpID0gMDsKIAogICAg
IEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgSW5z
cGVjdG9yRnJvbnRlbmQ6OkNvbnNvbGUqIG1fZnJvbnRlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVy
OwogICAgIENvbnNvbGVNZXNzYWdlKiBtX3ByZXZpb3VzTWVzc2FnZTsKICAgICBWZWN0b3I8T3du
UHRyPENvbnNvbGVNZXNzYWdlPj4gbV9jb25zb2xlTWVzc2FnZXM7CiAgICAgaW50IG1fZXhwaXJl
ZENvbnNvbGVNZXNzYWdlQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggM2M5ZTZmNS4uY2JmYzIxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODAsNiAr
ODAsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBh
Z2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgIDogbV9pbnN0cnVtZW50aW5nQWdl
bnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgpKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVGb3JQYWdlKCkpCiAgICAgLCBt
X292ZXJsYXkoSW5zcGVjdG9yT3ZlcmxheTo6Y3JlYXRlKHBhZ2UsIGluc3BlY3RvckNsaWVudCkp
CisgICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQogICAgICwgbV9wYWdl
KHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiAgICAgLCBt
X2lzVW5kZXJUZXN0KGZhbHNlKQpAQCAtMjIzLDMwICsyMjQsMjkgQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01X
cmFwcGVyV28KIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQogewogICAgIEFTU0VSVChmcm9u
dGVuZENoYW5uZWwpOwotCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJ
bnNwZWN0b3JGcm9udGVuZChmcm9udGVuZENoYW5uZWwpKTsKLQotICAgIG1fYWdlbnRzLnNldEZy
b250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOwotCi0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kQ3JlYXRl
ZCgpOwotCiAgICAgQVNTRVJUKG1faW5zcGVjdG9yQ2xpZW50KTsKKyAgICBBU1NFUlQoIW1faW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKKyAgICBBU1NFUlQoIW1faW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIpOworCisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENo
YW5uZWw7CiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKIAotICAgIG1fYWdlbnRzLnJl
Z2lzdGVySW5EaXNwYXRjaGVyKG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwor
ICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWws
IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5n
QWdlbnRzLmdldCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kQ3Jl
YXRlZCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVu
ZCgpCiB7Ci0gICAgaWYgKCFtX2luc3BlY3RvckZyb250ZW5kKQorICAgIGlmICghbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKKworICAgIG1fYWdlbnRzLndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCk7CisKICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLT5jbGVhckZyb250ZW5kKCk7CiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jbGVhcigpOwotCi0gICAgbV9hZ2VudHMuY2xlYXJGcm9udGVuZCgpOwotCi0gICAgbV9pbnNw
ZWN0b3JGcm9udGVuZC5jbGVhcigpOworICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsID0g
bnVsbHB0cjsKIAogICAgIC8vIHJlbGVzZSBvdmVybGF5IHBhZ2UgcmVzb3VyY2VzCiAgICAgbV9v
dmVybGF5LT5mcmVlUGFnZSgpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2hvdygpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kKQorICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCkKICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5nRnJvbnRlbmRUb0Zyb250
KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlz
KTsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3coKQog
CiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKCkKIHsKLSAgICBpZiAoIW1faW5zcGVj
dG9yRnJvbnRlbmQpCisgICAgaWYgKCFtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogICAgIG1faW5zcGVjdG9yQ2xp
ZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA1ZjI3M2FjLi45NWVjN2UzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTUzLDcg
KzUzLDYgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7
CiBjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNwZWN0
b3JNZW1vcnlBZ2VudDsKQEAgLTkyLDcgKzkxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAotICAgIGJv
b2wgaGFzRnJvbnRlbmQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kOyB9Cisg
ICAgYm9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWw7IH0KICAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogICAgIHZvaWQgc2V0UHJv
Y2Vzc0lkKGxvbmcpOwpAQCAtMTQ5LDcgKzE0OCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7
CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5k
Q2xpZW50OwotICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gbV9pbnNwZWN0b3JGcm9udGVu
ZDsKKyAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9y
Q2xpZW50OwogICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA4NWQ3OTNhLi5l
NmJjYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTIxMSwxMiArMjExLDExIEBAIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9F
cnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJiBlYykKIH0KIAogSW5zcGVjdG9yRE9NQWdl
bnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSwgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
RE9NQWdlbnQ+KCJET00iLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQmFz
ZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRE9NIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBt
X3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKICAgICAsIG1fY2xp
ZW50KGNsaWVudCkKLSAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fZG9tTGlzdGVuZXIoMCkK
ICAgICAsIG1fbGFzdE5vZGVJZCgxKQogICAgICwgbV9sYXN0QmFja2VuZE5vZGVJZCgtMSkKQEAg
LTIzMiwxMyArMjMxLDE0IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQo
KQogICAgIEFTU0VSVCghbV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQordm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRnJvbnRl
bmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5y
ZWdpc3RlckFnZW50KHRoaXMpOworCiAgICAgbV9oaXN0b3J5ID0gYWRvcHRQdHIobmV3IEluc3Bl
Y3Rvckhpc3RvcnkoKSk7CiAgICAgbV9kb21FZGl0b3IgPSBhZG9wdFB0cihuZXcgRE9NRWRpdG9y
KG1faGlzdG9yeS5nZXQoKSkpOwogCi0gICAgbV9mcm9udGVuZCA9IGZyb250ZW5kLT5kb20oKTsK
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRPTUFnZW50KHRoaXMpOwog
ICAgIG1fZG9jdW1lbnQgPSBtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAK
QEAgLTI0Niw5ICsyNDYsOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRGcm9udGVuZChJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgICAgIGZvY3VzTm9kZSgpOwogfQogCi12
b2lkIEluc3BlY3RvckRPTUFnZW50OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIHsKLSAgICBBU1NFUlQobV9m
cm9udGVuZCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogCiAgICAgbV9o
aXN0b3J5LmNsZWFyKCk7CiAgICAgbV9kb21FZGl0b3IuY2xlYXIoKTsKQEAgLTI1Nyw3ICsyNTcs
NiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpjbGVhckZyb250ZW5kKCkKICAgICBzZXRTZWFy
Y2hpbmdGb3JOb2RlKCZlcnJvciwgZmFsc2UsIDApOwogICAgIGhpZGVIaWdobGlnaHQoJmVycm9y
KTsKIAotICAgIG1fZnJvbnRlbmQgPSAwOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9yRE9NQWdlbnQoMCk7CiAgICAgbV9kb2N1bWVudFJlcXVlc3RlZCA9IGZhbHNlOwog
ICAgIHJlc2V0KCk7CkBAIC0zMDUsNyArMzA0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvYykKIAogICAgIC8vIEltbWVkaWF0ZWx5IGNvbW11bmlj
YXRlIDAgZG9jdW1lbnQgb3IgZG9jdW1lbnQgdGhhdCBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAg
ICBpZiAoIWRvYyB8fCAhZG9jLT5wYXJzaW5nKCkpCi0gICAgICAgIG1fZnJvbnRlbmQtPmRvY3Vt
ZW50VXBkYXRlZCgpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZG9jdW1lbnRVcGRh
dGVkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbGVhc2VEYW5nbGluZ05vZGVz
KCkKQEAgLTQ2Miw3ICs0NjEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGRO
b2Rlc1RvRnJvbnRlbmQoaW50IG5vZGVJZCwgaW50IGRlcHRoKQogICAgIH0KIAogICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0g
YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsKLSAg
ICBtX2Zyb250ZW5kLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgY2hpbGRyZW4ucmVsZWFzZSgpKTsK
KyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2Rlcyhub2RlSWQsIGNoaWxkcmVu
LnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5n
cygpCkBAIC01ODksNyArNTg4LDcgQEAgaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBh
dGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgICAgICBtX2RhbmdsaW5nTm9k
ZVRvSWRNYXBzLmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsKICAgICAgICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gVHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICAg
ICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCBkYW5n
bGluZ01hcCkpOwotICAgICAgICAgICAgbV9mcm9udGVuZC0+c2V0Q2hpbGROb2RlcygwLCBjaGls
ZHJlbik7CisgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2Rlcygw
LCBjaGlsZHJlbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHBhdGguYXBwZW5kKHBhcmVudCk7CkBAIC0xMDY4LDcgKzEwNjcsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjppbnNwZWN0KE5vZGUqIGluc3BlY3RlZE5vZGUpCiAKIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmZvY3VzTm9kZSgpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kKQorICAg
IGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VS
VChtX25vZGVUb0ZvY3VzKTsKQEAgLTE1NzUsNyArMTU3NCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6Om1haW5GcmFtZURPTUNvbnRlbnRMb2FkZWQoKQogICAgIC8vIFJlLXB1c2ggZG9jdW1l
bnQgb25jZSBpdCBpcyBsb2FkZWQuCiAgICAgZGlzY2FyZEJpbmRpbmdzKCk7CiAgICAgaWYgKG1f
ZG9jdW1lbnRSZXF1ZXN0ZWQpCi0gICAgICAgIG1fZnJvbnRlbmQtPmRvY3VtZW50VXBkYXRlZCgp
OworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZG9jdW1lbnRVcGRhdGVkKCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENvbW1pdExvYWQoRG9jdW1lbnQqIGRvY3VtZW50
KQpAQCAtMTU5MCwxMyArMTU4OSwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDb21t
aXRMb2FkKERvY3VtZW50KiBkb2N1bWVudCkKIAogICAgIC8vIFJlLWFkZCBmcmFtZSBvd25lciBl
bGVtZW50IHRvZ2V0aGVyIHdpdGggaXRzIG5ldyBjaGlsZHJlbi4KICAgICBpbnQgcGFyZW50SWQg
PSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KGlubmVyUGFyZW50Tm9kZShmcmFtZU93bmVyKSk7
Ci0gICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlUmVtb3ZlZChwYXJlbnRJZCwgZnJhbWVPd25lcklk
KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlUmVtb3ZlZChwYXJlbnRJZCwg
ZnJhbWVPd25lcklkKTsKICAgICB1bmJpbmQoZnJhbWVPd25lciwgJm1fZG9jdW1lbnROb2RlVG9J
ZE1hcCk7CiAKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gdmFsdWUgPSBidWls
ZE9iamVjdEZvck5vZGUoZnJhbWVPd25lciwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CiAg
ICAgTm9kZSogcHJldmlvdXNTaWJsaW5nID0gaW5uZXJQcmV2aW91c1NpYmxpbmcoZnJhbWVPd25l
cik7CiAgICAgaW50IHByZXZJZCA9IHByZXZpb3VzU2libGluZyA/IG1fZG9jdW1lbnROb2RlVG9J
ZE1hcC5nZXQocHJldmlvdXNTaWJsaW5nKSA6IDA7Ci0gICAgbV9mcm9udGVuZC0+Y2hpbGROb2Rl
SW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgdmFsdWUucmVsZWFzZSgpKTsKKyAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgdmFsdWUu
cmVsZWFzZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9k
ZShOb2RlKiBub2RlKQpAQCAtMTYxOCwxMyArMTYxNywxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUqIG5vZGUpCiAKICAgICBpZiAoIW1fY2hpbGRyZW5S
ZXF1ZXN0ZWQuY29udGFpbnMocGFyZW50SWQpKSB7CiAgICAgICAgIC8vIE5vIGNoaWxkcmVuIGFy
ZSBtYXBwZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hpbGRyZW4uCi0g
ICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgaW5uZXJD
aGlsZE5vZGVDb3VudChwYXJlbnQpKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNo
aWxkTm9kZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgaW5uZXJDaGlsZE5vZGVDb3VudChwYXJlbnQp
KTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVk
IC0+IHJldHVybiB2YWx1ZSBvZiBhIG5ldyBjaGlsZC4KICAgICAgICAgTm9kZSogcHJldlNpYmxp
bmcgPSBpbm5lclByZXZpb3VzU2libGluZyhub2RlKTsKICAgICAgICAgaW50IHByZXZJZCA9IHBy
ZXZTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwcmV2U2libGluZykgOiAwOwog
ICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gdmFsdWUgPSBidWlsZE9iamVj
dEZvck5vZGUobm9kZSwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7Ci0gICAgICAgIG1fZnJv
bnRlbmQtPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQsIHZhbHVlLnJlbGVhc2Uo
KSk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVJbnNlcnRlZChwYXJl
bnRJZCwgcHJldklkLCB2YWx1ZS5yZWxlYXNlKCkpOwogICAgIH0KIH0KIApAQCAtMTY0NCw5ICsx
NjQzLDkgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlKiBu
b2RlKQogICAgIGlmICghbV9jaGlsZHJlblJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsK
ICAgICAgICAgLy8gTm8gY2hpbGRyZW4gYXJlIG1hcHBlZCB5ZXQgLT4gb25seSBub3RpZnkgb24g
Y2hhbmdlcyBvZiBoYXNDaGlsZHJlbi4KICAgICAgICAgaWYgKGlubmVyQ2hpbGROb2RlQ291bnQo
cGFyZW50KSA9PSAxKQotICAgICAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlQ291bnRVcGRh
dGVkKHBhcmVudElkLCAwKTsKKyAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGls
ZE5vZGVDb3VudFVwZGF0ZWQocGFyZW50SWQsIDApOwogICAgIH0gZWxzZQotICAgICAgICBtX2Zy
b250ZW5kLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBtX2RvY3VtZW50Tm9kZVRvSWRNYXAu
Z2V0KG5vZGUpKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZVJlbW92
ZWQocGFyZW50SWQsIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSkpOwogICAgIHVuYmlu
ZChub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKIH0KIApAQCAtMTY3MCw3ICsxNjY5LDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG4KICAgICBpZiAobV9kb21MaXN0ZW5lcikKICAgICAg
ICAgbV9kb21MaXN0ZW5lci0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsKIAotICAgIG1fZnJv
bnRlbmQtPmF0dHJpYnV0ZU1vZGlmaWVkKGlkLCBuYW1lLCB2YWx1ZSk7CisgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmF0dHJpYnV0ZU1vZGlmaWVkKGlkLCBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQpAQCAtMTY4Myw3ICsxNjgyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIG4KICAgICBpZiAobV9kb21MaXN0ZW5lcikKICAgICAgICAgbV9kb21MaXN0
ZW5lci0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsKIAotICAgIG1fZnJvbnRlbmQtPmF0dHJp
YnV0ZVJlbW92ZWQoaWQsIG5hbWUpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hdHRyaWJ1
dGVSZW1vdmVkKGlkLCBuYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVB
dHRyaWJ1dGVJbnZhbGlkYXRlZChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cykKQEAg
LTE3MDAsNyArMTY5OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnN0eWxlQXR0cmlidXRl
SW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVuCiAgICAgICAgICAgICBt
X2RvbUxpc3RlbmVyLT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOwogICAgICAgICBub2RlSWRz
LT5hZGRJdGVtKGlkKTsKICAgICB9Ci0gICAgbV9mcm9udGVuZC0+aW5saW5lU3R5bGVJbnZhbGlk
YXRlZChub2RlSWRzLnJlbGVhc2UoKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmlubGlu
ZVN0eWxlSW52YWxpZGF0ZWQobm9kZUlkcy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSogY2hhcmFjdGVy
RGF0YSkKQEAgLTE3MTEsNyArMTcxMCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNoYXJh
Y3RlckRhdGFNb2RpZmllZChDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQogICAgICAgICBk
aWRJbnNlcnRET01Ob2RlKGNoYXJhY3RlckRhdGEpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIG1fZnJvbnRlbmQtPmNoYXJhY3RlckRhdGFNb2RpZmllZChpZCwgY2hhcmFjdGVyRGF0YS0+
ZGF0YSgpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hhcmFjdGVyRGF0YU1vZGlmaWVk
KGlkLCBjaGFyYWN0ZXJEYXRhLT5kYXRhKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5vZGUqIG5vZGUpCkBAIC0xNzMwLDcgKzE3MjksNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50KiBob3N0
LCBTaGFkb3dSb290KiByb290KQogewogICAgIGludCBob3N0SWQgPSBtX2RvY3VtZW50Tm9kZVRv
SWRNYXAuZ2V0KGhvc3QpOwogICAgIGlmIChob3N0SWQpCi0gICAgICAgIG1fZnJvbnRlbmQtPnNo
YWRvd1Jvb3RQdXNoZWQoaG9zdElkLCBidWlsZE9iamVjdEZvck5vZGUocm9vdCwgMCwgJm1fZG9j
dW1lbnROb2RlVG9JZE1hcCkpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2hhZG93
Um9vdFB1c2hlZChob3N0SWQsIGJ1aWxkT2JqZWN0Rm9yTm9kZShyb290LCAwLCAmbV9kb2N1bWVu
dE5vZGVUb0lkTWFwKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxQb3BTaGFk
b3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqIHJvb3QpCkBAIC0xNzM4LDcgKzE3Mzcs
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsUG9wU2hhZG93Um9vdChFbGVtZW50KiBo
b3N0LCBTaGFkb3dSb290KiByb290KQogICAgIGludCBob3N0SWQgPSBtX2RvY3VtZW50Tm9kZVRv
SWRNYXAuZ2V0KGhvc3QpOwogICAgIGludCByb290SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAu
Z2V0KHJvb3QpOwogICAgIGlmIChob3N0SWQgJiYgcm9vdElkKQotICAgICAgICBtX2Zyb250ZW5k
LT5zaGFkb3dSb290UG9wcGVkKGhvc3RJZCwgcm9vdElkKTsKKyAgICAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPnNoYWRvd1Jvb3RQb3BwZWQoaG9zdElkLCByb290SWQpOwogfQogCiB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSogZnJhbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDNmODMzYWMu
LjMxZWQ2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNs
YXNzIEV2ZW50OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmQ7CiBjbGFzcyBJbnNwZWN0b3JIaXN0b3J5OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNs
YXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKQEAgLTkxLDcgKzkwLDcgQEAgc3RydWN0IEV2ZW50TGlz
dGVuZXJJbmZvIHsKICAgICBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yIGV2ZW50TGlzdGVuZXJW
ZWN0b3I7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JET01BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JC
YXNlQWdlbnQ8SW5zcGVjdG9yRE9NQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OkRPTUNvbW1hbmRIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpET01Db21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
RE9NQWdlbnQpOwogcHVibGljOgogICAgIHN0cnVjdCBET01MaXN0ZW5lciB7CkBAIC0xMTIsOCAr
MTExLDggQEAgcHVibGljOgogCiAgICAgfkluc3BlY3RvckRPTUFnZW50KCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIFZlY3RvcjxEb2N1bWVudCo+IGRvY3VtZW50cygp
OwogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTI0NSw3ICsyNDQsNyBAQCBwcml2YXRlOgogICAgIElu
amVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVj
dG9yT3ZlcmxheSogbV9vdmVybGF5OwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7Ci0g
ICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRPTSogbV9mcm9udGVuZDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yRE9NRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsK
ICAgICBET01MaXN0ZW5lciogbV9kb21MaXN0ZW5lcjsKICAgICBOb2RlVG9JZE1hcCBtX2RvY3Vt
ZW50Tm9kZVRvSWRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgQmFja2Vu
ZE5vZGVJZD4gTm9kZVRvQmFja2VuZElkTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDAwZTBlNTAuLmNm
ZTVlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgUGFzc093blB0cjxJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50PiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5z
dHJ1bWUKIH0KIAogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0
b3JET01BZ2VudCogZG9tQWdlbnQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdl
bnQsIEluc3BlY3RvckFnZW50KikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50PigiRE9NRGVidWdnZXIiLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAg
IDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRE9NRGVidWdnZXIiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKICAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCiAgICAgLCBtX2RlYnVn
Z2VyQWdlbnQoZGVidWdnZXJBZ2VudCkKICAgICAsIG1fcGF1c2VJbk5leHRFdmVudExpc3RlbmVy
KGZhbHNlKQpAQCAtMTExLDcgKzExMSwxMiBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OmRpc2FibGUoKQogICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit7CisgICAgYmFj
a2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyQWdlbnQodGhpcyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKQogewogICAg
IGRpc2FibGUoKTsKIH0KQEAgLTE3Miw3ICsxNzcsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoTm9kZSogbm9kZSkKICAgICBpZiAoaGFz
QnJlYWtwb2ludChub2RlLCBBdHRyaWJ1dGVNb2RpZmllZCkpIHsKICAgICAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBBdHRyaWJ1dGVNb2RpZmllZCwgZmFs
c2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9n
cmFtKEluc3BlY3RvckZyb250ZW5kOjpEZWJ1Z2dlcjo6UmVhc29uOjpET00sIGV2ZW50RGF0YS5y
ZWxlYXNlKCkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0
b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIGV2ZW50RGF0YS5yZWxl
YXNlKCkpOwogICAgIH0KIH0KIApAQCAtMjcyLDcgKzI3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUoTm9kZSogcGFyZW50KQogICAgIGlmICho
YXNCcmVha3BvaW50KHBhcmVudCwgU3VidHJlZU1vZGlmaWVkKSkgewogICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KHBhcmVudCwgU3VidHJlZU1vZGlmaWVkLCB0
cnVlLCBldmVudERhdGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJv
Z3JhbShJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6RE9NLCBldmVudERhdGEu
cmVsZWFzZSgpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVj
dG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBldmVudERhdGEucmVs
ZWFzZSgpKTsKICAgICB9CiB9CiAKQEAgLTI4MiwxMSArMjg3LDExIEBAIHZvaWQgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKICAgICBpZiAo
aGFzQnJlYWtwb2ludChub2RlLCBOb2RlUmVtb3ZlZCkpIHsKICAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAg
ICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBOb2RlUmVtb3ZlZCwgZmFsc2UsIGV2ZW50
RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3Bl
Y3RvckZyb250ZW5kOjpEZWJ1Z2dlcjo6UmVhc29uOjpET00sIGV2ZW50RGF0YS5yZWxlYXNlKCkp
OworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwog
ICAgIH0gZWxzZSBpZiAocGFyZW50Tm9kZSAmJiBoYXNCcmVha3BvaW50KHBhcmVudE5vZGUsIFN1
YnRyZWVNb2RpZmllZCkpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnRE
YXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JE
T01FdmVudChub2RlLCBTdWJ0cmVlTW9kaWZpZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0KCkpOwot
ICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JGcm9udGVuZDo6
RGVidWdnZXI6OlJlYXNvbjo6RE9NLCBldmVudERhdGEucmVsZWFzZSgpKTsKKyAgICAgICAgbV9k
ZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6RE9NLCBldmVudERhdGEucmVsZWFzZSgpKTsKICAgICB9CiB9CiAKQEAg
LTI5NSw3ICszMDAsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxNb2Rp
ZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKGhhc0JyZWFrcG9pbnQoZWxlbWVu
dCwgQXR0cmlidXRlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGRlc2NyaXB0
aW9uRm9yRE9NRXZlbnQoZWxlbWVudCwgQXR0cmlidXRlTW9kaWZpZWQsIGZhbHNlLCBldmVudERh
dGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0
b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6RE9NLCBldmVudERhdGEucmVsZWFzZSgpKTsK
KyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBldmVudERhdGEucmVsZWFzZSgpKTsKICAg
ICB9CiB9CiAKQEAgLTM2OSw5ICszNzQsOSBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29ucwogICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImV2ZW50TmFtZSIsIGZ1bGxFdmVudE5h
bWUpOwogICAgIGlmIChzeW5jaHJvbm91cykKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkV2ZW50TGlzdGVu
ZXIsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFr
UHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFdmVu
dExpc3RlbmVyLCBldmVudERhdGEucmVsZWFzZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fZGVi
dWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JGcm9udGVu
ZDo6RGVidWdnZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwgZXZlbnREYXRhLnJlbGVhc2UoKSk7
CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJ
bnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFdmVudExpc3RlbmVy
LCBldmVudERhdGEucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRYSFJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpCkBA
IC00MTQsNyArNDE5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2Vu
ZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZXZlbnRE
YXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRVUkwiLCBicmVha3BvaW50VVJMKTsKICAgICBldmVu
dERhdGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFr
UHJvZ3JhbShJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6WEhSLCBldmVudERh
dGEucmVsZWFzZSgpKTsKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0
b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpYSFIsIGV2ZW50RGF0YS5yZWxl
YXNlKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNsZWFyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dC5oCmluZGV4IDM4MWUyMTQuLmFlMjVhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtNDYsMjEgKzQ2LDIwIEBA
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRP
TUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3RvckZy
b250ZW5kOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50
czsKIGNsYXNzIE5vZGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50PiwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxp
c3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRPTURlYnVnZ2VyQ29t
bWFuZEhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5l
ciwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpET01EZWJ1Z2dlckNvbW1hbmRI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckRPTUFnZW50Kiwg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCosIEluc3BlY3RvckFnZW50Kik7CiAKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCk7CiAKLSAgICAvLyBET01EZWJ1Z2dlciBBUEkg
Zm9yIEluc3BlY3RvckZyb250ZW5kCisgICAgLy8gRE9NRGVidWdnZXIgQVBJCiAgICAgdmlydHVh
bCB2b2lkIHNldFhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCk7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHVybCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEV2ZW50TGlzdGVuZXJCcmVha3Bv
aW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpOwpAQCAtODAsNyArNzks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgdXJsKTsKICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01F
dmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpOwogCi0gICAg
dmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRB
Z2VudCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCA1OWE5ODEwLi40MTlhZjkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcApAQCAtNTYsOSArNTYsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KCJE
T01TdG9yYWdlIiwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckJhc2VBZ2Vu
dChBU0NJSUxpdGVyYWwoIkRPTVN0b3JhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAs
IG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKLSAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fZW5h
YmxlZChmYWxzZSkKIHsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudCh0aGlzKTsKQEAgLTcwLDE1ICs2OSwxNyBAQCBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6On5JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cyA9IDA7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzZXRGcm9u
dGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit2b2lkIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZCA9IGZyb250ZW5kOworICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRl
bmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5y
ZWdpc3RlckFnZW50KHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6
Y2xlYXJGcm9udGVuZCgpCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKQogewotICAgIG1fZnJvbnRlbmQgPSAwOwotICAgIGRpc2Fi
bGUoMCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOworCisgICAgZGlzYWJs
ZShudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVuYWJsZShF
cnJvclN0cmluZyopCkBAIC0xNjQsMTkgKzE2NSwxOSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFn
ZQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdl
RXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sIFBhZ2UqKQogewotICAgIGlmICghbV9mcm9udGVuZCB8fCAhbV9lbmFi
bGVkKQorICAgIGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIgfHwgIW1fZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdl
SWQ+IGlkID0gc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLCBzdG9yYWdlVHlwZSA9PSBMb2NhbFN0
b3JhZ2UpOwogCiAgICAgaWYgKGtleS5pc051bGwoKSkKLSAgICAgICAgbV9mcm9udGVuZC0+ZG9t
c3RvcmFnZSgpLT5kb21TdG9yYWdlSXRlbXNDbGVhcmVkKGlkKTsKKyAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQoaWQpOwogICAgIGVsc2UgaWYgKG5l
d1ZhbHVlLmlzTnVsbCgpKQotICAgICAgICBtX2Zyb250ZW5kLT5kb21zdG9yYWdlKCktPmRvbVN0
b3JhZ2VJdGVtUmVtb3ZlZChpZCwga2V5KTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmRvbVN0b3JhZ2VJdGVtUmVtb3ZlZChpZCwga2V5KTsKICAgICBlbHNlIGlmIChvbGRWYWx1ZS5p
c051bGwoKSkKLSAgICAgICAgbV9mcm9udGVuZC0+ZG9tc3RvcmFnZSgpLT5kb21TdG9yYWdlSXRl
bUFkZGVkKGlkLCBrZXksIG5ld1ZhbHVlKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmRvbVN0b3JhZ2VJdGVtQWRkZWQoaWQsIGtleSwgbmV3VmFsdWUpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9mcm9udGVuZC0+ZG9tc3RvcmFnZSgpLT5kb21TdG9yYWdlSXRlbVVwZGF0ZWQoaWQsIGtl
eSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRv
bVN0b3JhZ2VJdGVtVXBkYXRlZChpZCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogfQogCiBQ
YXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9y
YWdlQXJlYShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBzdG9yYWdlSWQsIEZyYW1lKiYgdGFyZ2V0RnJhbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXggYTlhMDhj
ZC4uODRhYjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNwZWN0b3JG
cm9udGVuZDsKK2NsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI7CiBj
bGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xh
c3MgUGFnZTsKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4sIHB1Ymxp
YyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RE9NU3RvcmFnZUNvbW1hbmRIYW5kbGVyIHsK
K2NsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RE9NU3RvcmFnZUNvbW1hbmRI
YW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICB7CkBAIC01Nyw4ICs1Nyw4IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQt
ZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKQEAgLTgxLDcgKzgx
LDcgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBmaW5kU3RvcmFnZUFy
ZWEoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYsIEZyYW1lKiYp
OwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBJbnNwZWN0b3JG
cm9udGVuZCogbV9mcm9udGVuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRE9NU3Rv
cmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgYm9vbCBt
X2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggZjQyODhhNy4uN2E3NzQxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAt
MjAxLDggKzIwMSw4IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkT3BlbkRhdGFi
YXNlKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBjb25zCiAgICAgUmVmUHRyPEluc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2U+IHJlc291cmNlID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZTo6Y3JlYXRlKGRhdGFiYXNlLCBkb21haW4sIG5hbWUsIHZlcnNpb24pOwogICAgIG1fcmVzb3Vy
Y2VzLnNldChyZXNvdXJjZS0+aWQoKSwgcmVzb3VyY2UpOwogICAgIC8vIFJlc291cmNlcyBhcmUg
b25seSBib3VuZCB3aGlsZSB2aXNpYmxlLgotICAgIGlmIChtX2Zyb250ZW5kICYmIG1fZW5hYmxl
ZCkKLSAgICAgICAgcmVzb3VyY2UtPmJpbmQobV9mcm9udGVuZCk7CisgICAgaWYgKG1fZnJvbnRl
bmREaXNwYXRjaGVyICYmIG1fZW5hYmxlZCkKKyAgICAgICAgcmVzb3VyY2UtPmJpbmQobV9mcm9u
dGVuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OmNsZWFyUmVzb3VyY2VzKCkKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6OmNsZWFyUmVzb3VyY2VzKCkKIH0KIAogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+
KCJEYXRhYmFzZSIsIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JCYXNlQWdl
bnQoQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwg
bV9lbmFibGVkKGZhbHNlKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVj
dG9yRGF0YWJhc2VBZ2VudCh0aGlzKTsKQEAgLTIyMiwxNSArMjIyLDE3IEBAIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6On5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
KQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kID0g
ZnJvbnRlbmQtPmRhdGFiYXNlKCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENo
YW5uZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOwogfQog
Ci12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQordm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpCiB7Ci0g
ICAgbV9mcm9udGVuZCA9IDA7Ci0gICAgZGlzYWJsZSgwKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IG51bGxwdHI7CisKKyAgICBkaXNhYmxlKG51bGxwdHIpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCkBAIC0yNDEsNyArMjQzLDcg
QEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogCiAg
ICAgRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGRhdGFiYXNlc0VuZCA9IG1fcmVzb3Vy
Y2VzLmVuZCgpOwogICAgIGZvciAoRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZGF0YWJhc2VzRW5kOyArK2l0KQotICAgICAgICBp
dC0+dmFsdWUtPmJpbmQobV9mcm9udGVuZCk7CisgICAgICAgIGl0LT52YWx1ZS0+YmluZChtX2Zy
b250ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZGlzYWJsZShFcnJvclN0cmluZyopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCA1OGExZDY1Li5hMjFiY2E4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAg
LTQyLDEyICs0MiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXRhYmFzZTsKIGNs
YXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTsKLWNs
YXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+LCBwdWJs
aWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRhdGFiYXNlQ29tbWFuZEhhbmRsZXIgewor
Y2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQs
IHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RGF0YWJhc2VDb21tYW5kSGFuZGxl
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAg
ewpAQCAtNTUsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgY2xl
YXJSZXNvdXJjZXMoKTsKIApAQCAtNzYsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIERhdGFiYXNl
KiBkYXRhYmFzZUZvcklkKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCk7CiAgICAgSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZSogZmluZEJ5RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7
CiAKLSAgICBJbnNwZWN0b3JGcm9udGVuZDo6RGF0YWJhc2UqIG1fZnJvbnRlbmQ7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250
ZW5kRGlzcGF0Y2hlcjsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZT4+IERhdGFiYXNlUmVzb3VyY2VzTWFwOwogICAgIERhdGFiYXNl
UmVzb3VyY2VzTWFwIG1fcmVzb3VyY2VzOwogICAgIGJvb2wgbV9lbmFibGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3Bw
CmluZGV4IDBmNDY1MzguLjlkNGI3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKQEAgLTU2LDE0ICs1NiwxNCBA
QCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKFBh
c3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYQogewogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2U6OmJpbmQoSW5zcGVjdG9yRnJvbnRlbmQ6OkRhdGFiYXNlKiBmcm9udGVuZCkKK3Zv
aWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnNwZWN0b3JEYXRhYmFzZUZyb250
ZW5kRGlzcGF0Y2hlciogZGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIpCiB7CiAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U+IGpzb25PYmplY3QgPSBUeXBlQnVpbGRl
cjo6RGF0YWJhc2U6OkRhdGFiYXNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQobV9pZCkKICAg
ICAgICAgLnNldERvbWFpbihtX2RvbWFpbikKICAgICAgICAgLnNldE5hbWUobV9uYW1lKQogICAg
ICAgICAuc2V0VmVyc2lvbihtX3ZlcnNpb24pOwotICAgIGZyb250ZW5kLT5hZGREYXRhYmFzZShq
c29uT2JqZWN0KTsKKyAgICBkYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlci0+YWRkRGF0YWJhc2Uo
anNvbk9iamVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oCmluZGV4IGE2
YmIwYzAuLjgwYzJhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaApAQCAtMzksMTQgKzM5LDE0IEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xhc3MgRGF0
YWJhc2U7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIAogY2xhc3MgSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlPiBjcmVhdGUoUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAKLSAg
ICB2b2lkIGJpbmQoSW5zcGVjdG9yRnJvbnRlbmQ6OkRhdGFiYXNlKik7CisgICAgdm9pZCBiaW5k
KEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyKik7CiAgICAgRGF0YWJhc2UqIGRh
dGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0RGF0YWJh
c2UoUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UpIHsgbV9kYXRhYmFzZSA9IGRhdGFiYXNl
OyB9CiAgICAgU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDZm
YWVlODkuLjJkZjU4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTU1LDkgKzU1LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY29uc3QgY2hhciogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0
R3JvdXAgPSAiYmFja3RyYWNlIjsKIAogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PigiRGVidWdnZXIiLCBpbnN0cnVt
ZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRGVi
dWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1f
cGF1c2VkU2NyaXB0U3RhdGUoMCkKICAgICAsIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2lu
dElEKG5vQnJlYWtwb2ludElEKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQpAQCAtMTI2LDcgKzEy
NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikK
IAogICAgIGVuYWJsZSgpOwogCi0gICAgQVNTRVJUKG1fZnJvbnRlbmQpOworICAgIEFTU0VSVCht
X2Zyb250ZW5kRGlzcGF0Y2hlcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlzYWJsZShFcnJvclN0cmluZyopCkBAIC0xMzcsMTcgKzEzNiwxNSBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIGRpc2FibGUoKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9u
dGVuZCogZnJvbnRlbmQpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAg
IG1fZnJvbnRlbmQgPSBmcm9udGVuZC0+ZGVidWdnZXIoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgYmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyQWdl
bnQodGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJGcm9udGVu
ZCgpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKCkKIHsKLSAgICBtX2Zyb250ZW5kID0gMDsKLQotICAgIGlmICghZW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm47CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogCiAg
ICAgZGlzYWJsZSgpOwogfQpAQCAtMTczLDcgKzE3MCw3IEBAIGJvb2wgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6cnVubmluZ05lc3RlZE1lc3NhZ2VMb29wKCkKIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZVR5cGUgdHlwZSkKIHsKICAgICBpZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5wYXVzZU9uRXhjZXB0
aW9uc1N0YXRlKCkgIT0gU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyAm
JiBzb3VyY2UgPT0gQ29uc29sZUFQSU1lc3NhZ2VTb3VyY2UgJiYgdHlwZSA9PSBBc3NlcnRNZXNz
YWdlVHlwZSkKLSAgICAgICAgYnJlYWtQcm9ncmFtKEluc3BlY3RvckZyb250ZW5kOjpEZWJ1Z2dl
cjo6UmVhc29uOjpBc3NlcnQsIDApOworICAgICAgICBicmVha1Byb2dyYW0oSW5zcGVjdG9yRGVi
dWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QXNzZXJ0LCAwKTsKIH0KIAogc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29r
aWUoY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgYWN0aW9ucywg
Ym9vbCBpc1JlZ2V4LCBib29sIGF1dG9Db250aW51ZSkKQEAgLTQ2Nyw3ICs0NjQsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0RnVuY3Rpb25EZXRhaWxz
KGVycm9yU3RyaW5nLCBmdW5jdGlvbklkLCAmZGV0YWlscyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JGcm9u
dGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxl
UGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6
OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRh
dGEpCiB7CiAgICAgaWYgKG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkKQogICAgICAgICByZXR1
cm47CkBAIC02MzYsNyArNjMzLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3Jp
cHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmUKICAgICBpZiAo
c2NyaXB0RGVidWdTZXJ2ZXIoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgIT0gU2NyaXB0RGVi
dWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucykgewogICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBkaXJlY3RpdmUgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAg
ICBkaXJlY3RpdmUtPnNldFN0cmluZygiZGlyZWN0aXZlVGV4dCIsIGRpcmVjdGl2ZVRleHQpOwot
ICAgICAgICBicmVha1Byb2dyYW0oSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246
OkNTUFZpb2xhdGlvbiwgZGlyZWN0aXZlLnJlbGVhc2UoKSk7CisgICAgICAgIGJyZWFrUHJvZ3Jh
bShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpDU1BWaW9sYXRp
b24sIGRpcmVjdGl2ZS5yZWxlYXNlKCkpOwogICAgIH0KIH0KIApAQCAtNjkwLDcgKzY4Nyw3IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoU291cmNlSUQgc291
cmNlSUQsIGNvbnN0IFNjcmlwdCYgaW5TCiAgICAgU3RyaW5nKiBzb3VyY2VNYXBVUkxQYXJhbSA9
IHNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMLmlzTnVsbCgpID8gMCA6ICZzY3JpcHQuc291cmNlTWFw
cGluZ1VSTDsKICAgICBjb25zdCBib29sKiBpc0NvbnRlbnRTY3JpcHQgPSBzY3JpcHQuaXNDb250
ZW50U2NyaXB0ID8gJnNjcmlwdC5pc0NvbnRlbnRTY3JpcHQgOiAwOwogICAgIFN0cmluZyBzY3Jp
cHRJRFN0ciA9IFN0cmluZzo6bnVtYmVyKHNvdXJjZUlEKTsKLSAgICBtX2Zyb250ZW5kLT5zY3Jp
cHRQYXJzZWQoc2NyaXB0SURTdHIsIHNjcmlwdFVSTCwgc2NyaXB0LnN0YXJ0TGluZSwgc2NyaXB0
LnN0YXJ0Q29sdW1uLCBzY3JpcHQuZW5kTGluZSwgc2NyaXB0LmVuZENvbHVtbiwgaXNDb250ZW50
U2NyaXB0LCBzb3VyY2VNYXBVUkxQYXJhbSwgaGFzU291cmNlVVJMUGFyYW0pOworICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5zY3JpcHRQYXJzZWQoc2NyaXB0SURTdHIsIHNjcmlwdFVSTCwgc2Ny
aXB0LnN0YXJ0TGluZSwgc2NyaXB0LnN0YXJ0Q29sdW1uLCBzY3JpcHQuZW5kTGluZSwgc2NyaXB0
LmVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0LCBzb3VyY2VNYXBVUkxQYXJhbSwgaGFzU291cmNl
VVJMUGFyYW0pOwogCiAgICAgbV9zY3JpcHRzLnNldChzb3VyY2VJRCwgc2NyaXB0KTsKIApAQCAt
NzE5LDEzICs3MTYsMTMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNv
dXJjZShTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0JiBpblMKIAogICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNvbHZlQnJl
YWtwb2ludChpdC0+a2V5LCBzb3VyY2VJRCwgYnJlYWtwb2ludCk7CiAgICAgICAgIGlmIChsb2Nh
dGlvbikKLSAgICAgICAgICAgIG1fZnJvbnRlbmQtPmJyZWFrcG9pbnRSZXNvbHZlZChpdC0+a2V5
LCBsb2NhdGlvbik7CisgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YnJlYWtwb2lu
dFJlc29sdmVkKGl0LT5rZXksIGxvY2F0aW9uKTsKICAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX2Zyb250ZW5kLT5zY3JpcHRGYWlsZWRUb1BhcnNl
KHVybCwgZGF0YSwgZmlyc3RMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CisgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnNjcmlwdEZhaWxlZFRvUGFyc2UodXJsLCBkYXRhLCBmaXJzdExp
bmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlw
dFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQpAQCAtNzM3
LDEzICs3MzQsMTMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFYKICAgICBpZiAoIWV4Y2VwdGlv
bi5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUp
OwogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewotICAgICAgICAg
ICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3RvckZyb250ZW5kOjpEZWJ1Z2dlcjo6UmVhc29uOjpF
eGNlcHRpb247CisgICAgICAgICAgICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yRGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RXhjZXB0aW9uOwogICAgICAgICAgICAgbV9icmVh
a0F1eERhdGEgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KGV4Y2VwdGlvbiwgImJhY2t0cmFj
ZSIpLT5vcGVuQWNjZXNzb3JzKCk7CiAgICAgICAgICAgICAvLyBtX2JyZWFrQXV4RGF0YSBtaWdo
dCBiZSBudWxsIGFmdGVyIHRoaXMuCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Zyb250ZW5k
LT5wYXVzZWQoY3VycmVudENhbGxGcmFtZXMoKSwgbV9icmVha1JlYXNvbiwgbV9icmVha0F1eERh
dGEpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5wYXVzZWQoY3VycmVudENhbGxGcmFtZXMo
KSwgbV9icmVha1JlYXNvbiwgbV9icmVha0F1eERhdGEpOwogICAgIG1famF2YVNjcmlwdFBhdXNl
U2NoZWR1bGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9jb250aW51ZVRvTG9jYXRpb25CcmVha3Bv
aW50SUQgIT0gbm9CcmVha3BvaW50SUQpIHsKQEAgLTc1OSwxMCArNzU2LDEwIEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUoKQogICAgIG1fcGF1c2VkU2NyaXB0U3Rh
dGUgPSAwOwogICAgIG1fY3VycmVudENhbGxTdGFjayA9IFNjcmlwdFZhbHVlKCk7CiAgICAgY2xl
YXJCcmVha0RldGFpbHMoKTsKLSAgICBtX2Zyb250ZW5kLT5yZXN1bWVkKCk7CisgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpicmVha1Byb2dyYW0oSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkVu
dW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKQordm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEpCiB7CiAgICAgbV9icmVha1JlYXNvbiA9IGJyZWFrUmVhc29uOwog
ICAgIG1fYnJlYWtBdXhEYXRhID0gZGF0YTsKQEAgLTc5Myw3ICs3OTAsNyBAQCBib29sIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmFzc2VydFBhdXNlZChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcp
CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJCcmVha0RldGFpbHMoKQogewot
ICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6
T3RoZXI7CisgICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb246Ok90aGVyOwogICAgIG1fYnJlYWtBdXhEYXRhID0gMDsKIH0KIApAQCAt
ODAyLDggKzc5OSw4IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzZXQoKQogICAg
IHNjcmlwdERlYnVnU2VydmVyKCkuY2xlYXJCcmVha3BvaW50cygpOwogICAgIG1fc2NyaXB0cy5j
bGVhcigpOwogICAgIG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2lu
dElEcy5jbGVhcigpOwotICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICBtX2Zyb250ZW5kLT5n
bG9iYWxPYmplY3RDbGVhcmVkKCk7CisgICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyKQorICAg
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Z2xvYmFsT2JqZWN0Q2xlYXJlZCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA5NWUxOWY0Li40Mjk1MWRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTUx
LDcgKzUxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsK
IGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclZhbHVlOwpAQCAtNjEsNyAr
NjAsNyBAQCBjbGFzcyBTY3JpcHRWYWx1ZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFn
ZW50PEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwg
cHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpEZWJ1Z2dlckNvbW1hbmRIYW5kbGVy
IHsKK2NsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFn
ZW50LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpEZWJ1Z2dlckNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJhY2t0cmFjZU9iamVjdEdyb3VwOwpAQCAt
NzIsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhblNldFNjcmlwdFNvdXJj
ZShFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3VwcG9ydHNTZXBhcmF0
ZVNjcmlwdENvbXBpbGF0aW9uQW5kRXhlY3V0aW9uKEVycm9yU3RyaW5nKiwgYm9vbCopOwogCi0g
ICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7Ci0gICAgdmly
dHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICBib29sIGlzUGF1c2VkKCk7CiAgICAg
Ym9vbCBydW5uaW5nTmVzdGVkTWVzc2FnZUxvb3AoKTsKQEAgLTExMyw5ICsxMTIsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBydW5TY3JpcHQoRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OlNjcmlwdElkJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0
IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNB
bmRNdXRlQ29uc29sZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAgICAg
dmlydHVhbCB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
Kik7CiAKLSAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRnJv
bnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhKTsKKyAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1l
bnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBicmVh
a1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwogICAgIHZvaWQgY2Fu
Y2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKLSAgICB2b2lkIGJyZWFrUHJvZ3JhbShJbnNwZWN0
b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKEluc3BlY3Rv
ckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQgc2NyaXB0
RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCk7CiAKICAg
ICBjbGFzcyBMaXN0ZW5lciB7CkBAIC0xNjgsMTQgKzE2NywxNCBAQCBwcml2YXRlOgogICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBCcmVha3BvaW50
SWRlbnRpZmllclRvQnJlYWtwb2ludE1hcDsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciog
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2Vy
KiBtX2Zyb250ZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgSlNDOjpFeGVjU3RhdGUq
IG1fcGF1c2VkU2NyaXB0U3RhdGU7CiAgICAgU2NyaXB0VmFsdWUgbV9jdXJyZW50Q2FsbFN0YWNr
OwogICAgIFNjcmlwdHNNYXAgbV9zY3JpcHRzOwogICAgIEJyZWFrcG9pbnRJZGVudGlmaWVyVG9E
ZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNNYXAgbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdT
ZXJ2ZXJCcmVha3BvaW50SURzOwogICAgIEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50
TWFwIG1famF2YVNjcmlwdEJyZWFrcG9pbnRzOwogICAgIEJyZWFrcG9pbnRJRCBtX2NvbnRpbnVl
VG9Mb2NhdGlvbkJyZWFrcG9pbnRJRDsKLSAgICBJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6
OlJlYXNvbjo6RW51bSBtX2JyZWFrUmVhc29uOworICAgIEluc3BlY3RvckRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gbV9icmVha1JlYXNvbjsKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0YTsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBi
b29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggNGIyYzFi
Ni4uOGNjYmYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCkBAIC00OSw5ICs0OSw4IEBAIFBhc3NPd25QdHI8
SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ+IEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50Ojpj
cmVhdGUoSW5zdHJ1CiB9CiAKIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IElu
c3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudD4oIkhlYXBQcm9maWxl
ciIsIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlM
aXRlcmFsKCJIZWFwUHJvZmlsZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRl
bmQoMCkKICAgICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRIZWFwU25hcHNob3ROdW1iZXIoMSkKICAg
ICAsIG1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQoZmFsc2UpCiB7CkBAIC03MywyMyArNzIsMjUg
QEAgdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6cmVzZXRTdGF0ZSgpCiAKIHZvaWQg
SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm9maWxlcygpCiB7Ci0g
ICAgaWYgKCFtX2Zyb250ZW5kKQorICAgIGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIpCiAgICAg
ICAgIHJldHVybjsKICAgICBpZiAoIW1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAobV9zbmFwc2hvdHMuaXNFbXB0eSgpKQotICAgICAgICBtX2Zyb250
ZW5kLT5yZXNldFByb2ZpbGVzKCk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNl
dFByb2ZpbGVzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnNldEZy
b250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZC0+aGVhcHByb2Zp
bGVyKCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckhlYXBQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAg
ICBiYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIEluc3BlY3Rvckhl
YXBQcm9maWxlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpCiB7CisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOworCiAgICAgbV9wcm9maWxlSGVhZGVyc1Jl
cXVlc3RlZCA9IGZhbHNlOwotICAgIG1fZnJvbnRlbmQgPSAwOwogfQogCiB2b2lkIEluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50Ojpjb2xsZWN0R2FyYmFnZShXZWJDb3JlOjpFcnJvclN0cmluZyop
CkBAIC0xMjUsMTIgKzEyNiwxMiBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50Ojpn
ZXRIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgcgogewogICAgIGNs
YXNzIE91dHB1dFN0cmVhbSA6IHB1YmxpYyBTY3JpcHRIZWFwU25hcHNob3Q6Ok91dHB1dFN0cmVh
bSB7CiAgICAgcHVibGljOgotICAgICAgICBPdXRwdXRTdHJlYW0oSW5zcGVjdG9yRnJvbnRlbmQ6
OkhlYXBQcm9maWxlciogZnJvbnRlbmQsIHVuc2lnbmVkIHVpZCkKLSAgICAgICAgICAgIDogbV9m
cm9udGVuZChmcm9udGVuZCksIG1fdWlkKHVpZCkgeyB9Ci0gICAgICAgIHZvaWQgV3JpdGUoY29u
c3QgU3RyaW5nJiBjaHVuaykgeyBtX2Zyb250ZW5kLT5hZGRIZWFwU25hcHNob3RDaHVuayhtX3Vp
ZCwgY2h1bmspOyB9Ci0gICAgICAgIHZvaWQgQ2xvc2UoKSB7IG1fZnJvbnRlbmQtPmZpbmlzaEhl
YXBTbmFwc2hvdChtX3VpZCk7IH0KKyAgICAgICAgT3V0cHV0U3RyZWFtKEluc3BlY3RvckhlYXBQ
cm9maWxlckZyb250ZW5kRGlzcGF0Y2hlciogZnJvbnRlbmQsIHVuc2lnbmVkIHVpZCkKKyAgICAg
ICAgICAgIDogbV9mcm9udGVuZERpc3BhdGNoZXIoZnJvbnRlbmQpLCBtX3VpZCh1aWQpIHsgfQor
ICAgICAgICB2b2lkIFdyaXRlKGNvbnN0IFN0cmluZyYgY2h1bmspIHsgbV9mcm9udGVuZERpc3Bh
dGNoZXItPmFkZEhlYXBTbmFwc2hvdENodW5rKG1fdWlkLCBjaHVuayk7IH0KKyAgICAgICAgdm9p
ZCBDbG9zZSgpIHsgbV9mcm9udGVuZERpc3BhdGNoZXItPmZpbmlzaEhlYXBTbmFwc2hvdChtX3Vp
ZCk7IH0KICAgICBwcml2YXRlOgotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZDo6SGVhcFByb2Zp
bGVyKiBtX2Zyb250ZW5kOworICAgICAgICBJbnNwZWN0b3JIZWFwUHJvZmlsZXJGcm9udGVuZERp
c3BhdGNoZXIqIG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgICAgICBpbnQgbV91aWQ7CiAgICAg
fTsKIApAQCAtMTQxLDggKzE0Miw4IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6
OmdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCByCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgUmVmUHRyPFNjcmlwdEhlYXBTbmFwc2hvdD4gc25hcHNob3Qg
PSBpdC0+dmFsdWU7Ci0gICAgaWYgKG1fZnJvbnRlbmQpIHsKLSAgICAgICAgT3V0cHV0U3RyZWFt
IHN0cmVhbShtX2Zyb250ZW5kLCB1aWQpOworICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlcikg
eworICAgICAgICBPdXRwdXRTdHJlYW0gc3RyZWFtKG1fZnJvbnRlbmREaXNwYXRjaGVyLmdldCgp
LCB1aWQpOwogICAgICAgICBzbmFwc2hvdC0+d3JpdGVKU09OKCZzdHJlYW0pOwogICAgIH0KIH0K
QEAgLTE1OCwzMyArMTU5LDMzIEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnRh
a2VIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvCiB7CiAgICAgY2xh
c3MgSGVhcFNuYXBzaG90UHJvZ3Jlc3M6IHB1YmxpYyBTY3JpcHRQcm9maWxlcjo6SGVhcFNuYXBz
aG90UHJvZ3Jlc3MgewogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgSGVhcFNuYXBzaG90
UHJvZ3Jlc3MoSW5zcGVjdG9yRnJvbnRlbmQ6OkhlYXBQcm9maWxlciogZnJvbnRlbmQpCi0gICAg
ICAgICAgICA6IG1fZnJvbnRlbmQoZnJvbnRlbmQpIHsgfQorICAgICAgICBleHBsaWNpdCBIZWFw
U25hcHNob3RQcm9ncmVzcyhJbnNwZWN0b3JIZWFwUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXIq
IGZyb250ZW5kKQorICAgICAgICAgICAgOiBtX2Zyb250ZW5kRGlzcGF0Y2hlcihmcm9udGVuZCkg
eyB9CiAgICAgICAgIHZvaWQgU3RhcnQoaW50IHRvdGFsV29yaykKICAgICAgICAgewogICAgICAg
ICAgICAgbV90b3RhbFdvcmsgPSB0b3RhbFdvcms7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBX
b3JrZWQoaW50IHdvcmtEb25lKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9mcm9udGVu
ZCkKLSAgICAgICAgICAgICAgICBtX2Zyb250ZW5kLT5yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVz
cyh3b3JrRG9uZSwgbV90b3RhbFdvcmspOworICAgICAgICAgICAgaWYgKG1fZnJvbnRlbmREaXNw
YXRjaGVyKQorICAgICAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXBvcnRIZWFw
U25hcHNob3RQcm9ncmVzcyh3b3JrRG9uZSwgbV90b3RhbFdvcmspOwogICAgICAgICB9CiAgICAg
ICAgIHZvaWQgRG9uZSgpIHsgfQogICAgICAgICBib29sIGlzQ2FuY2VsZWQoKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kOjpIZWFwUHJv
ZmlsZXIqIG1fZnJvbnRlbmQ7CisgICAgICAgIEluc3BlY3RvckhlYXBQcm9maWxlckZyb250ZW5k
RGlzcGF0Y2hlciogbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgICAgIGludCBtX3RvdGFsV29y
azsKICAgICB9OwogCiAgICAgU3RyaW5nIHRpdGxlID0gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVk
UHJvZmlsZU5hbWVIZWFwLCAnLicsIFN0cmluZzo6bnVtYmVyKG1fbmV4dFVzZXJJbml0aWF0ZWRI
ZWFwU25hcHNob3ROdW1iZXIpKTsKICAgICArK21fbmV4dFVzZXJJbml0aWF0ZWRIZWFwU25hcHNo
b3ROdW1iZXI7CiAKLSAgICBIZWFwU25hcHNob3RQcm9ncmVzcyBwcm9ncmVzcyhyZXBvcnRQcm9n
cmVzcyAmJiAqcmVwb3J0UHJvZ3Jlc3MgPyBtX2Zyb250ZW5kIDogMCk7CisgICAgSGVhcFNuYXBz
aG90UHJvZ3Jlc3MgcHJvZ3Jlc3MocmVwb3J0UHJvZ3Jlc3MgJiYgKnJlcG9ydFByb2dyZXNzID8g
bV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0KCkgOiBudWxscHRyKTsKICAgICBSZWZQdHI8U2NyaXB0
SGVhcFNuYXBzaG90PiBzbmFwc2hvdCA9IFNjcmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNuYXBzaG90
KHRpdGxlLCAmcHJvZ3Jlc3MpOwogICAgIGlmIChzbmFwc2hvdCkgewogICAgICAgICBtX3NuYXBz
aG90cy5hZGQoc25hcHNob3QtPnVpZCgpLCBzbmFwc2hvdCk7Ci0gICAgICAgIGlmIChtX2Zyb250
ZW5kKQotICAgICAgICAgICAgbV9mcm9udGVuZC0+YWRkUHJvZmlsZUhlYWRlcihjcmVhdGVTbmFw
c2hvdEhlYWRlcigqc25hcHNob3QpKTsKKyAgICAgICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVy
KQorICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmFkZFByb2ZpbGVIZWFkZXIoY3Jl
YXRlU25hcHNob3RIZWFkZXIoKnNuYXBzaG90KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCmluZGV4
IDkzNWU4OWEuLjI2YzJkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFNj
cmlwdFByb2ZpbGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OkhlYXBQcm9maWxlckNvbW1hbmRIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpIZWFwUHJvZmlsZXJDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqKTsKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRI
ZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGludCB1aWQpOwogCi0gICAgdmlydHVhbCB2b2lkIHNl
dEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJv
bnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChFcnJvclN0cmlu
ZyosIGNvbnN0IGJvb2wqIHJlcG9ydFByb2dyZXNzKTsKIApAQCAtODMsNyArODMsNyBAQCBwcml2
YXRlOgogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhl
YWRlcj4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90Jik7CiAK
ICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAg
IEluc3BlY3RvckZyb250ZW5kOjpIZWFwUHJvZmlsZXIqIG1fZnJvbnRlbmQ7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3RvckhlYXBQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9u
dGVuZERpc3BhdGNoZXI7CiAgICAgdW5zaWduZWQgbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFw
c2hvdE51bWJlcjsKICAgICBJZFRvSGVhcFNuYXBzaG90TWFwIG1fc25hcHNob3RzOwogICAgIGJv
b2wgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDRmODc5MTIuLjFlMjcy
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcApAQCAtNTU3LDcgKzU1Nyw3IEBAIHB1YmxpYzoKIH0gLy8gbmFtZXNwYWNl
CiAKIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQp
Ci0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+KCJJbmRl
eGVkREIiLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFT
Q0lJTGl0ZXJhbCgiSW5kZXhlZERCIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3BhZ2VB
Z2VudChwYWdlQWdlbnQpCiB7CkBAIC01NjcsOSArNTY3LDE0IEBAIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50Ojp+SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3Rv
ckluZGV4ZWREQkFnZW50OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0g
ICAgZGlzYWJsZSgwKTsKKyAgICBiYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlz
KTsKK30KKwordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoKQoreworICAgIGRpc2FibGUobnVsbHB0cik7CiB9CiAKIHZvaWQgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IDhmOWE4Yzcu
LmVmNDBkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2Vu
dDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckluZGV4
ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JJbmRleGVkREJB
Z2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5kZXhlZERCQ29tbWFu
ZEhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkluZGV4ZWRE
QkNvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0
b3JJbmRleGVkREJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICB7CkBAIC01Miw3ICs1Miw4IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckluZGV4ZWREQkFnZW50KCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9u
dC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwCmluZGV4IDMxNDJl
ZGEuLmYyNmQ3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnB1dEFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5wdXRBZ2VudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SW5zcGVjdG9ySW5wdXRBZ2VudDo6SW5zcGVjdG9ySW5wdXRBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlKQotICAgIDogSW5zcGVjdG9yQmFz
ZUFnZW50PEluc3BlY3RvcklucHV0QWdlbnQ+KCJJbnB1dCIsIGluc3RydW1lbnRpbmdBZ2VudHMp
CisgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJJbnB1dCIpLCBpbnN0cnVt
ZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9CkBAIC02MSw2ICs2MSwxNSBA
QCBJbnNwZWN0b3JJbnB1dEFnZW50Ojp+SW5zcGVjdG9ySW5wdXRBZ2VudCgpCiB7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9ySW5wdXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKK3sKKyAgICBiYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlz
KTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnB1dEFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCgpCit7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5wdXRBZ2VudDo6ZGlzcGF0Y2hLZXlF
dmVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgaW50KiBt
b2RpZmllcnMsIGNvbnN0IGRvdWJsZSogdGltZXN0YW1wLCBjb25zdCBTdHJpbmcqIHRleHQsIGNv
bnN0IFN0cmluZyogdW5tb2RpZmllZFRleHQsIGNvbnN0IFN0cmluZyoga2V5SWRlbnRpZmllciwg
Y29uc3QgaW50KiB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGNvbnN0IGludCogbmF0aXZlVmlydHVh
bEtleUNvZGUsIGNvbnN0IGludCogbWFjQ2hhckNvZGUsIGNvbnN0IGJvb2wqIGF1dG9SZXBlYXQs
IGNvbnN0IGJvb2wqIGlzS2V5cGFkLCBjb25zdCBib29sKiBpc1N5c3RlbUtleSkKIHsKICAgICBQ
bGF0Zm9ybUV2ZW50OjpUeXBlIGNvbnZlcnRlZFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaAppbmRleCBhODVhZDNhYS4uM2Y3MWU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCkBAIC00
NCw3ICs0NCw3IEBAIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwog
Ci1jbGFzcyBJbnNwZWN0b3JJbnB1dEFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJ
bnNwZWN0b3JJbnB1dEFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJ
bnB1dENvbW1hbmRIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvcklucHV0QWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Oklu
cHV0Q29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rvcklu
cHV0QWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvcklucHV0
QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQ
YWdlKiBwYWdlKQpAQCAtNTQsNiArNTQsOSBAQCBwdWJsaWM6CiAKICAgICB+SW5zcGVjdG9ySW5w
dXRBZ2VudCgpOwogCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCgpIE9WRVJSSURFOworCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQg
Zm9yIHNpbXVsYXRpbmcgaW5wdXQuCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoS2V5RXZlbnQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IGludCogbW9kaWZpZXJzLCBj
b25zdCBkb3VibGUqIHRpbWVzdGFtcCwgY29uc3QgU3RyaW5nKiB0ZXh0LCBjb25zdCBTdHJpbmcq
IHVubW9kaWZpZWRUZXh0LCBjb25zdCBTdHJpbmcqIGtleUlkZW50aWZpZXIsIGNvbnN0IGludCog
d2luZG93c1ZpcnR1YWxLZXlDb2RlLCBjb25zdCBpbnQqIG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBj
b25zdCBpbnQqIG1hY0NoYXJDb2RlLCBjb25zdCBib29sKiBhdXRvUmVwZWF0LCBjb25zdCBib29s
KiBpc0tleXBhZCwgY29uc3QgYm9vbCogaXNTeXN0ZW1LZXkpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaE1vdXNlRXZlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCB4
LCBpbnQgeSwgY29uc3QgaW50KiBtb2RpZmllcnMsIGNvbnN0IGRvdWJsZSogdGltZXN0YW1wLCBj
b25zdCBTdHJpbmcqIGJ1dHRvbiwgY29uc3QgaW50KiBjbGlja0NvdW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4
IDlmNTJjNmUuLjM1YTUxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDksOCArNDksNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IElu
c3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4oIkxheWVyVHJlZSIsIGlu
c3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX2Zyb250ZW5kKDApCisgICAgOiBJbnNwZWN0b3JC
YXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJMYXllclRyZWUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykK
IHsKIH0KIApAQCAtNTksMTUgKzU4LDE3IEBAIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkK
K3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmQgPSBm
cm9udGVuZC0+bGF5ZXJ0cmVlKCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRD
aGFubmVsKTsKKyAgICBiYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIElu
c3BlY3RvckxheWVyVHJlZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpCiB7
Ci0gICAgbV9mcm9udGVuZCA9IDA7Ci0gICAgZGlzYWJsZSgwKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IG51bGxwdHI7CisKKyAgICBkaXNhYmxlKG51bGxwdHIpOwogfQogCiB2b2lkIElu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXNldCgpCkBAIC05MCw3ICs5MSw3IEBAIHZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogCiB2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpsYXllclRyZWVEaWRDaGFuZ2UoKQogewotICAgIG1fZnJvbnRl
bmQtPmxheWVyVHJlZURpZENoYW5nZSgpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sYXll
clRyZWVEaWRDaGFuZ2UoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVu
ZGVyTGF5ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRl
eCA1M2JhNjMxLi4yN2Q1NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBJbnN0cnVt
ZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpMYXll
clRyZWVDb21tYW5kSGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6TGF5ZXJUcmVlQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPEluc3BlY3RvckxheWVyVHJlZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cykKICAgICB7CkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgfkluc3BlY3RvckxheWVyVHJlZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJG
cm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBPVkVSUklERTsKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICB2b2lkIGxheWVyVHJlZURpZENo
YW5nZSgpOwpAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBiaW5kUHNldWRv
RWxlbWVudChQc2V1ZG9FbGVtZW50Kik7CiAgICAgdm9pZCB1bmJpbmRQc2V1ZG9FbGVtZW50KFBz
ZXVkb0VsZW1lbnQqKTsKIAotICAgIEluc3BlY3RvckZyb250ZW5kOjpMYXllclRyZWUqIG1fZnJv
bnRlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckxheWVyVHJlZUZyb250ZW5kRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRl
ckxheWVyKiwgU3RyaW5nPiBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwOwogICAgIEhhc2hNYXA8U3Ry
aW5nLCBjb25zdCBSZW5kZXJMYXllcio+IG1faWRUb0xheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggMjYzMmJkNC4uM2My
NjlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCkBAIC02Nyw2ICs2NywxNSBAQCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6fkluc3Bl
Y3Rvck1lbW9yeUFnZW50KCkKIHsKIH0KIAordm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3sKKyAgICBiYWNrZW5k
RGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsKK30KKwordm9pZCBJbnNwZWN0b3JNZW1v
cnlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKQoreworfQorCiB2b2lkIElu
c3BlY3Rvck1lbW9yeUFnZW50OjpnZXRET01Db3VudGVycyhFcnJvclN0cmluZyosIGludCogZG9j
dW1lbnRzLCBpbnQqIG5vZGVzLCBpbnQqIGpzRXZlbnRMaXN0ZW5lcnMpCiB7CiAgICAgKmRvY3Vt
ZW50cyA9IEluc3BlY3RvckNvdW50ZXJzOjpjb3VudGVyVmFsdWUoSW5zcGVjdG9yQ291bnRlcnM6
OkRvY3VtZW50Q291bnRlcik7CkBAIC03NSw4ICs4NCw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5
QWdlbnQ6OmdldERPTUNvdW50ZXJzKEVycm9yU3RyaW5nKiwgaW50KiBkb2N1bWVudHMsIGludCog
bm9kCiB9CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFz
ZUFnZW50PEluc3BlY3Rvck1lbW9yeUFnZW50PigiTWVtb3J5IiwgaW5zdHJ1bWVudGluZ0FnZW50
cykKLSAgICAsIG1fZnJvbnRlbmQoMCkKKyAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxp
dGVyYWwoIk1lbW9yeSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogewogfQogCkBAIC04NSwxOCAr
OTMsNiBAQCBQYXNzT3duUHRyPEluc3BlY3Rvck1lbW9yeUFnZW50PiBJbnNwZWN0b3JNZW1vcnlB
Z2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudAogICAgIHJldHVybiBhZG9wdFB0cihuZXcg
SW5zcGVjdG9yTWVtb3J5QWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cykpOwogfQogCi0KLXZvaWQg
SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCkKLXsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmQpOwotICAgIG1fZnJvbnRlbmQgPSBmcm9u
dGVuZC0+bWVtb3J5KCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmNsZWFyRnJv
bnRlbmQoKQotewotICAgIG1fZnJvbnRlbmQgPSAwOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCA3MWQ0NzBkLi5mMTRkYmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaApA
QCAtNDUsMjEgKzQ1LDE5IEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+LCBwdWJsaWMgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6Ok1lbW9yeUNvbW1hbmRIYW5kbGVyIHsKK2NsYXNzIEluc3Bl
Y3Rvck1lbW9yeUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZW1vcnlDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yTWVtb3J5QWdlbnQpOwogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPEluc3BlY3Rvck1lbW9yeUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTWVtb3J5
QWdlbnQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBnZXRET01Db3VudGVycyhFcnJvclN0cmlu
ZyosIGludCogZG9jdW1lbnRzLCBpbnQqIG5vZGVzLCBpbnQqIGpzRXZlbnRMaXN0ZW5lcnMpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7Ci0gICAg
dmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKLQogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JN
ZW1vcnlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0KLSAgICBJbnNwZWN0b3JGcm9udGVu
ZDo6TWVtb3J5KiBtX2Zyb250ZW5kOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAz
NjU5MTllLi5lMTM2ZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcApAQCAtMzQ4LDEyICszNDgsMTEgQEAgVHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6RW51bSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlw
ZUpzb24KIH0KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSwgSW5zcGVjdG9y
QWdlbnQqIGluc3BlY3RvckFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlciwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92
ZXJsYXkpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUGFnZUFnZW50PigiUGFn
ZSIsIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlM
aXRlcmFsKCJQYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2UocGFnZSkK
ICAgICAsIG1faW5zcGVjdG9yQWdlbnQoaW5zcGVjdG9yQWdlbnQpCiAgICAgLCBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2NsaWVudChjbGll
bnQpCi0gICAgLCBtX2Zyb250ZW5kKDApCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKICAgICAs
IG1fbGFzdFNjcmlwdElkZW50aWZpZXIoMCkKICAgICAsIG1fc2NyZWVuV2lkdGhPdmVycmlkZSgw
KQpAQCAtMzY5LDE5ICszNjgsMjEgQEAgSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdl
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywKIHsKIH0KIAot
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBm
cm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5k
ID0gZnJvbnRlbmQtPnBhZ2UoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yUGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVs
KTsKKyAgICBiYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIHsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlciA9IG51bGxwdHI7CisKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBkaXNh
YmxlKCZlcnJvcik7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICB1cGRhdGVUb3VjaEV2
ZW50RW11bGF0aW9uSW5QYWdlKGZhbHNlKTsKICNlbmRpZgotICAgIG1fZnJvbnRlbmQgPSAwOwog
fQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6d2ViVmlld1Jlc2l6ZWQoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKQEAgLTgxOSw3ICs4MjAsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcgogICAg
IGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXItPmRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKTsKIAotICAgIGlmICghbV9mcm9udGVuZCkKKyAg
ICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
bV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCkgewpAQCAtODM4LDEyICs4MzksMTIgQEAgdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJh
bWUsIERPTVdyYXBwZXJXb3IKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpkb21Db250ZW50RXZl
bnRGaXJlZCgpCiB7CiAgICAgbV9pc0ZpcnN0TGF5b3V0QWZ0ZXJPbkxvYWQgPSB0cnVlOwotICAg
IG1fZnJvbnRlbmQtPmRvbUNvbnRlbnRFdmVudEZpcmVkKGN1cnJlbnRUaW1lKCkpOworICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5kb21Db250ZW50RXZlbnRGaXJlZChjdXJyZW50VGltZSgpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRFdmVudEZpcmVkKCkKIHsKLSAgICBt
X2Zyb250ZW5kLT5sb2FkRXZlbnRGaXJlZChjdXJyZW50VGltZSgpKTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+bG9hZEV2ZW50RmlyZWQoY3VycmVudFRpbWUoKSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpmcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciogbG9hZGVyKQpA
QCAtODU0LDE0ICs4NTUsMTQgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdh
dGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIG1fcGVuZGluZ1NjcmlwdFRvRXZh
bHVhdGVPbkxvYWRPbmNlID0gU3RyaW5nKCk7CiAgICAgICAgIG1fcGVuZGluZ1NjcmlwdFByZXBy
b2Nlc3NvciA9IFN0cmluZygpOwogICAgIH0KLSAgICBtX2Zyb250ZW5kLT5mcmFtZU5hdmlnYXRl
ZChidWlsZE9iamVjdEZvckZyYW1lKGxvYWRlci0+ZnJhbWUoKSkpOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5mcmFtZU5hdmlnYXRlZChidWlsZE9iamVjdEZvckZyYW1lKGxvYWRlci0+ZnJh
bWUoKSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVEZXRhY2hlZChGcmFt
ZSogZnJhbWUpCiB7CiAgICAgSGFzaE1hcDxGcmFtZSosIFN0cmluZz46Oml0ZXJhdG9yIGl0ZXJh
dG9yID0gbV9mcmFtZVRvSWRlbnRpZmllci5maW5kKGZyYW1lKTsKICAgICBpZiAoaXRlcmF0b3Ig
IT0gbV9mcmFtZVRvSWRlbnRpZmllci5lbmQoKSkgewotICAgICAgICBtX2Zyb250ZW5kLT5mcmFt
ZURldGFjaGVkKGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5mcmFtZURldGFjaGVkKGl0ZXJhdG9yLT52YWx1ZSk7CiAgICAgICAgIG1faWRlbnRpZmllclRv
RnJhbWUucmVtb3ZlKGl0ZXJhdG9yLT52YWx1ZSk7CiAgICAgICAgIG1fZnJhbWVUb0lkZW50aWZp
ZXIucmVtb3ZlKGl0ZXJhdG9yKTsKICAgICB9CkBAIC05NDUsMzIgKzk0NiwzMiBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lU3RhcnRlZExvYWRpbmco
RnJhbWUqIGZyYW1lKQogewotICAgIG1fZnJvbnRlbmQtPmZyYW1lU3RhcnRlZExvYWRpbmcoZnJh
bWVJZChmcmFtZSkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5mcmFtZVN0YXJ0ZWRMb2Fk
aW5nKGZyYW1lSWQoZnJhbWUpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1l
U3RvcHBlZExvYWRpbmcoRnJhbWUqIGZyYW1lKQogewotICAgIG1fZnJvbnRlbmQtPmZyYW1lU3Rv
cHBlZExvYWRpbmcoZnJhbWVJZChmcmFtZSkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5m
cmFtZVN0b3BwZWRMb2FkaW5nKGZyYW1lSWQoZnJhbWUpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmZyYW1lU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFtZSogZnJhbWUsIGRvdWJsZSBk
ZWxheSkKIHsKLSAgICBtX2Zyb250ZW5kLT5mcmFtZVNjaGVkdWxlZE5hdmlnYXRpb24oZnJhbWVJ
ZChmcmFtZSksIGRlbGF5KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZnJhbWVTY2hlZHVs
ZWROYXZpZ2F0aW9uKGZyYW1lSWQoZnJhbWUpLCBkZWxheSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lKiBmcmFtZSkK
IHsKLSAgICBtX2Zyb250ZW5kLT5mcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKGZyYW1l
SWQoZnJhbWUpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZnJhbWVDbGVhcmVkU2NoZWR1
bGVkTmF2aWdhdGlvbihmcmFtZUlkKGZyYW1lKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50Ojp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgbV9mcm9udGVuZC0+amF2YXNjcmlwdERpYWxvZ09wZW5pbmcobWVzc2FnZSk7CisgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPmphdmFzY3JpcHREaWFsb2dPcGVuaW5nKG1lc3NhZ2UpOwogfQog
CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUnVuSmF2YVNjcmlwdERpYWxvZygpCiB7Ci0g
ICAgbV9mcm9udGVuZC0+amF2YXNjcmlwdERpYWxvZ0Nsb3NlZCgpOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5qYXZhc2NyaXB0RGlhbG9nQ2xvc2VkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjphcHBseVNjcmVlbldpZHRoT3ZlcnJpZGUobG9uZyogd2lkdGgpCkBAIC0xMDM1
LDcgKzEwMzYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2NyaXB0c0VuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpCiAgICAgaWYgKG1faWdub3JlU2NyaXB0c0VuYWJsZWROb3RpZmljYXRpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJvbnRlbmQtPnNjcmlwdHNFbmFibGVkKGlzRW5h
YmxlZCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNjcmlwdHNFbmFibGVkKGlzRW5hYmxl
ZCk7CiB9CiAKIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDRlNmFiN2IuLjc2NDVm
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgK
QEAgLTY3LDcgKzY3LDcgQEAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUGFnZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpQYWdlQ29tbWFuZEhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUGFn
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpQYWdlQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CiBwdWJsaWM6CiAgICAgZW51bSBSZXNvdXJjZVR5cGUg
ewpAQCAtMTYyLDggKzE2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcmlwdHNFbmFibGVkKGJv
b2wgaXNFbmFibGVkKTsKIAogICAgIC8vIEluc3BlY3RvciBDb250cm9sbGVyIEFQSQotICAgIHZp
cnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwotICAgIHZpcnR1YWwg
dm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCB3ZWJWaWV3UmVzaXplZChjb25zdCBJ
bnRTaXplJik7CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckFn
ZW50KiBtX2luc3BlY3RvckFnZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKLSAgICBJ
bnNwZWN0b3JGcm9udGVuZDo6UGFnZSogbV9mcm9udGVuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yUGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAg
ICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5OwogICAgIGxvbmcgbV9sYXN0U2NyaXB0SWRl
bnRpZmllcjsKICAgICBTdHJpbmcgbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5jcHAKaW5kZXggZDVjMTg0Ni4uZDY0NjVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtMTIxLDEwICsxMjEsOSBA
QCBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IEluc3BlY3RvclByb2ZpbGVyQWdl
bnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQQogI2VuZGlmCiAKIEluc3BlY3RvclByb2ZpbGVyQWdl
bnQ6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQsIEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFz
ZUFnZW50PEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+KCJQcm9maWxlciIsIGluc3RydW1lbnRpbmdB
Z2VudHMpCisgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJQcm9maWxlciIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9jb25zb2xlQWdlbnQoY29uc29sZUFnZW50
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQot
ICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQogICAgICwgbV9wcm9m
aWxlSGVhZGVyc1JlcXVlc3RlZChmYWxzZSkKICAgICAsIG1fcmVjb3JkaW5nQ1BVUHJvZmlsZShm
YWxzZSkKQEAgLTE0NSwxNCArMTQ0LDE0IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
YWRkUHJvZmlsZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuCiB7CiAg
ICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBwcnBQcm9maWxlOwogICAgIG1fcHJv
ZmlsZXMuYWRkKHByb2ZpbGUtPnVpZCgpLCBwcm9maWxlKTsKLSAgICBpZiAobV9mcm9udGVuZCAm
JiBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkKQotICAgICAgICBtX2Zyb250ZW5kLT5hZGRQcm9m
aWxlSGVhZGVyKGNyZWF0ZVByb2ZpbGVIZWFkZXIoKnByb2ZpbGUpKTsKKyAgICBpZiAobV9mcm9u
dGVuZERpc3BhdGNoZXIgJiYgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZCkKKyAgICAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPmFkZFByb2ZpbGVIZWFkZXIoY3JlYXRlUHJvZmlsZUhlYWRlcigq
cHJvZmlsZSkpOwogICAgIGFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNvbGUocHJvZmls
ZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNvbGUoUGFz
c1JlZlB0cjxTY3JpcHRQcm9maWxlPiBwcnBQcm9maWxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1
bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIGlm
ICghbV9mcm9udGVuZCkKKyAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyKQogICAgICAgICBy
ZXR1cm47CiAgICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBwcnBQcm9maWxlOwog
ICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhwcm9maWxlLT50aXRsZSgpLCAnIycsIFN0
cmluZzo6bnVtYmVyKHByb2ZpbGUtPnVpZCgpKSk7CkBAIC0xNjEsNyArMTYwLDcgQEAgdm9pZCBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjphZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xl
KFBhc3NSZWZQdHI8U2NyaXAKIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjphZGRTdGFy
dFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQg
bGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmQpCisgICAgaWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hl
cikKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25z
b2xlKENvbnNvbGVBUElNZXNzYWdlU291cmNlLCBQcm9maWxlTWVzc2FnZVR5cGUsIERlYnVnTWVz
c2FnZUxldmVsLCB0aXRsZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwog
fQpAQCAtMjYwLDEyICsyNTksMTIgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgT3V0cHV0U3RyZWFt
IDogcHVibGljIFNjcmlwdEhlYXBTbmFwc2hvdDo6T3V0cHV0U3RyZWFtIHsKIHB1YmxpYzoKLSAg
ICBPdXRwdXRTdHJlYW0oSW5zcGVjdG9yRnJvbnRlbmQ6OlByb2ZpbGVyKiBmcm9udGVuZCwgdW5z
aWduZWQgdWlkKQotICAgICAgICA6IG1fZnJvbnRlbmQoZnJvbnRlbmQpLCBtX3VpZCh1aWQpIHsg
fQotICAgIHZvaWQgV3JpdGUoY29uc3QgU3RyaW5nJiBjaHVuaykgeyBtX2Zyb250ZW5kLT5hZGRI
ZWFwU25hcHNob3RDaHVuayhtX3VpZCwgY2h1bmspOyB9Ci0gICAgdm9pZCBDbG9zZSgpIHsgbV9m
cm9udGVuZC0+ZmluaXNoSGVhcFNuYXBzaG90KG1fdWlkKTsgfQorICAgIE91dHB1dFN0cmVhbShJ
bnNwZWN0b3JQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlciogZnJvbnRlbmQsIHVuc2lnbmVkIHVp
ZCkKKyAgICAgICAgOiBtX2Zyb250ZW5kRGlzcGF0Y2hlcihmcm9udGVuZCksIG1fdWlkKHVpZCkg
eyB9CisgICAgdm9pZCBXcml0ZShjb25zdCBTdHJpbmcmIGNodW5rKSB7IG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5hZGRIZWFwU25hcHNob3RDaHVuayhtX3VpZCwgY2h1bmspOyB9CisgICAgdm9pZCBD
bG9zZSgpIHsgbV9mcm9udGVuZERpc3BhdGNoZXItPmZpbmlzaEhlYXBTbmFwc2hvdChtX3VpZCk7
IH0KIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OlByb2ZpbGVyKiBtX2Zyb250ZW5k
OworICAgIEluc3BlY3RvclByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyKiBtX2Zyb250ZW5kRGlz
cGF0Y2hlcjsKICAgICBpbnQgbV91aWQ7CiB9OwogCkBAIC0yOTMsOCArMjkyLDggQEAgdm9pZCBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgcmF3VWkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBSZWZQdHI8U2Ny
aXB0SGVhcFNuYXBzaG90PiBzbmFwc2hvdCA9IGl0LT52YWx1ZTsKLSAgICBpZiAobV9mcm9udGVu
ZCkgewotICAgICAgICBPdXRwdXRTdHJlYW0gc3RyZWFtKG1fZnJvbnRlbmQsIHVpZCk7CisgICAg
aWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyKSB7CisgICAgICAgIE91dHB1dFN0cmVhbSBzdHJlYW0o
bV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0KCksIHVpZCk7CiAgICAgICAgIHNuYXBzaG90LT53cml0
ZUpTT04oJnN0cmVhbSk7CiAgICAgfQogfQpAQCAtMzIyLDIyICszMjEsMjQgQEAgdm9pZCBJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0YXRlKCkKIAogdm9pZCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpyZXNldEZyb250ZW5kUHJvZmlsZXMoKQogewotICAgIGlmICghbV9mcm9udGVuZCkK
KyAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyKQogICAgICAgICByZXR1cm47CiAgICAgaWYg
KCFtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1f
cHJvZmlsZXMuaXNFbXB0eSgpICYmIG1fc25hcHNob3RzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9m
cm9udGVuZC0+cmVzZXRQcm9maWxlcygpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
cmVzZXRQcm9maWxlcygpOwogfQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnNldEZy
b250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZCA9IGZyb250ZW5kLT5wcm9maWxlcigpOwor
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQcm9m
aWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBiYWNrZW5kRGlz
cGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6d2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKQogewotICAgIG1fZnJvbnRlbmQgPSAwOworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKKwogICAgIHN0b3AoKTsKICAgICBFcnJv
clN0cmluZyBlcnJvcjsKICAgICBkaXNhYmxlKCZlcnJvcik7CkBAIC0zNzQsMjEgKzM3NSwyMSBA
QCBuYW1lc3BhY2UgewogCiBjbGFzcyBIZWFwU25hcHNob3RQcm9ncmVzczogcHVibGljIFNjcmlw
dFByb2ZpbGVyOjpIZWFwU25hcHNob3RQcm9ncmVzcyB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
SGVhcFNuYXBzaG90UHJvZ3Jlc3MoSW5zcGVjdG9yRnJvbnRlbmQ6OlByb2ZpbGVyKiBmcm9udGVu
ZCkKLSAgICAgICAgOiBtX2Zyb250ZW5kKGZyb250ZW5kKSB7IH0KKyAgICBleHBsaWNpdCBIZWFw
U25hcHNob3RQcm9ncmVzcyhJbnNwZWN0b3JQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlciogZnJv
bnRlbmQpCisgICAgICAgIDogbV9mcm9udGVuZERpc3BhdGNoZXIoZnJvbnRlbmQpIHsgfQogICAg
IHZvaWQgU3RhcnQoaW50IHRvdGFsV29yaykKICAgICB7CiAgICAgICAgIG1fdG90YWxXb3JrID0g
dG90YWxXb3JrOwogICAgIH0KICAgICB2b2lkIFdvcmtlZChpbnQgd29ya0RvbmUpCiAgICAgewot
ICAgICAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAgICAgIG1fZnJvbnRlbmQtPnJlcG9ydEhl
YXBTbmFwc2hvdFByb2dyZXNzKHdvcmtEb25lLCBtX3RvdGFsV29yayk7CisgICAgICAgIGlmICht
X2Zyb250ZW5kRGlzcGF0Y2hlcikKKyAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5y
ZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzcyh3b3JrRG9uZSwgbV90b3RhbFdvcmspOwogICAgIH0K
ICAgICB2b2lkIERvbmUoKSB7IH0KICAgICBib29sIGlzQ2FuY2VsZWQoKSB7IHJldHVybiBmYWxz
ZTsgfQogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JGcm9udGVuZDo6UHJvZmlsZXIqIG1fZnJvbnRl
bmQ7CisgICAgSW5zcGVjdG9yUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXIqIG1fZnJvbnRlbmRE
aXNwYXRjaGVyOwogICAgIGludCBtX3RvdGFsV29yazsKIH07CiAKQEAgLTM5OSwxOSArNDAwLDE5
IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6dGFrZUhlYXBTbmFwc2hvdChFcnJvclN0
cmluZyosIGNvbnN0IGJvb2wqIHJlcG9ydFByCiAgICAgU3RyaW5nIHRpdGxlID0gbWFrZVN0cmlu
ZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcuJywgU3RyaW5nOjpudW1iZXIobV9uZXh0VXNl
ckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlcikpOwogICAgICsrbV9uZXh0VXNlckluaXRpYXRl
ZEhlYXBTbmFwc2hvdE51bWJlcjsKIAotICAgIEhlYXBTbmFwc2hvdFByb2dyZXNzIHByb2dyZXNz
KHJlcG9ydFByb2dyZXNzICYmICpyZXBvcnRQcm9ncmVzcyA/IG1fZnJvbnRlbmQgOiAwKTsKKyAg
ICBIZWFwU25hcHNob3RQcm9ncmVzcyBwcm9ncmVzcyhyZXBvcnRQcm9ncmVzcyAmJiAqcmVwb3J0
UHJvZ3Jlc3MgPyBtX2Zyb250ZW5kRGlzcGF0Y2hlci5nZXQoKSA6IG51bGxwdHIpOwogICAgIFJl
ZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHNuYXBzaG90ID0gU2NyaXB0UHJvZmlsZXI6OnRha2VI
ZWFwU25hcHNob3QodGl0bGUsICZwcm9ncmVzcyk7CiAgICAgaWYgKHNuYXBzaG90KSB7CiAgICAg
ICAgIG1fc25hcHNob3RzLmFkZChzbmFwc2hvdC0+dWlkKCksIHNuYXBzaG90KTsKLSAgICAgICAg
aWYgKG1fZnJvbnRlbmQpCi0gICAgICAgICAgICBtX2Zyb250ZW5kLT5hZGRQcm9maWxlSGVhZGVy
KGNyZWF0ZVNuYXBzaG90SGVhZGVyKCpzbmFwc2hvdCkpOworICAgICAgICBpZiAobV9mcm9udGVu
ZERpc3BhdGNoZXIpCisgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YWRkUHJvZmls
ZUhlYWRlcihjcmVhdGVTbmFwc2hvdEhlYWRlcigqc25hcHNob3QpKTsKICAgICB9CiB9CiAKIHZv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9m
aWxpbmcpCiB7Ci0gICAgaWYgKG1fZnJvbnRlbmQpCi0gICAgICAgIG1fZnJvbnRlbmQtPnNldFJl
Y29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOworICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hl
cikKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldFJlY29yZGluZ1Byb2ZpbGUoaXNQ
cm9maWxpbmcpOwogfQogCiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5
SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNo
b3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAppbmRleCA0MjIzZjI0Li42ZWM3N2Vh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rvck9i
amVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwpAQCAtNTUsNyAr
NTQsNyBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QmFzZUFnZW50PEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OlByb2ZpbGVyQ29tbWFuZEhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6UHJvZmlsZXJDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdl
bnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ29uc29sZUFnZW50Kiwg
UGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwpAQCAtOTAsOCArODksOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGludCB1aWQp
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBpbnQgdWlkKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNw
ZWN0b3JGcm9udGVuZCopOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCB2b2lkIHRha2VIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBjb25zdCBib29s
KiByZXBvcnRQcm9ncmVzcyk7CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCBpc1By
b2ZpbGluZyk7CkBAIC0xMTYsNyArMTE1LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3RvckNv
bnNvbGVBZ2VudCogbV9jb25zb2xlQWdlbnQ7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBJbnNwZWN0b3JGcm9udGVuZDo6UHJvZmlsZXIq
IG1fZnJvbnRlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclByb2ZpbGVyRnJvbnRl
bmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBib29sIG1fZW5hYmxlZDsK
ICAgICBib29sIG1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQ7CiAgICAgYm9vbCBtX3JlY29yZGlu
Z0NQVVByb2ZpbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggYTUwZDRlOS4uMjA4ODAyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNzYs
MTQgKzc2LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmQgPSBmcm9udGVu
ZC0+bmV0d29yaygpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwor
ICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOwogfQogCi12b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpCiB7Ci0gICAgbV9mcm9u
dGVuZCA9IDA7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOworCiAgICAgRXJy
b3JTdHJpbmcgZXJyb3I7CiAgICAgZGlzYWJsZSgmZXJyb3IpOwogfQpAQCAtMjE2LDEyICsyMTgs
MTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICBUeXBlQnVpbGRlcjo6UGFnZTo6UmVz
b3VyY2VUeXBlOjpFbnVtIHJlc291cmNlVHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3Vy
Y2VUeXBlSnNvbih0eXBlKTsKIAogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5p
dGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZy
YW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKLSAgICBtX2Zyb250ZW5k
LT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRl
ci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgp
LnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgY3VycmVu
dFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2Uo
cmVkaXJlY3RSZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90
aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogMCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9h
ZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRlci0+dXJs
KCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBjdXJy
ZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25z
ZShyZWRpcmVjdFJlc3BvbnNlLCBsb2FkZXIpLCB0eXBlICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6
T3RoZXJSZXNvdXJjZSA/ICZyZXNvdXJjZVR5cGUgOiAwKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpCiB7Ci0gICAgbV9mcm9udGVuZC0+cmVxdWVzdFNlcnZlZEZyb21DYWNoZShJZGVudGlmaWVy
c0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnJlcXVlc3RTZXJ2ZWRGcm9tQ2FjaGUoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQo
aWRlbnRpZmllcikpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlciogcmVz
b3VyY2VMb2FkZXIpCkBAIC0yNTUsNyArMjU3LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWUK
ICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCBtX3BhZ2VB
Z2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCByZXNwb25zZSk7CiAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5zZXRSZXNvdXJjZVR5cGUocmVxdWVzdElkLCB0eXBlKTsKIAotICAgIG1fZnJvbnRl
bmQtPnJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2Fk
ZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgY3VycmVudFRpbWUo
KSwgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpLCByZXNvdXJjZVJl
c3BvbnNlKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VSZWNlaXZlZChyZXF1
ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50
LT5sb2FkZXJJZChsb2FkZXIpLCBjdXJyZW50VGltZSgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJl
c291cmNlVHlwZUpzb24odHlwZSksIHJlc291cmNlUmVzcG9uc2UpOwogCiAgICAgLy8gSWYgd2Ug
cmV2YWxpZGF0ZWQgdGhlIHJlc291cmNlIGFuZCBnb3QgTm90IG1vZGlmaWVkLCBzZW5kIGNvbnRl
bnQgbGVuZ3RoIGZvbGxvd2luZyBkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAvLyBhcyB0aGVyZSB3
aWxsIGJlIG5vIGNhbGxzIHRvIGRpZFJlY2VpdmVEYXRhIGZyb20gdGhlIG5ldHdvcmsgc3RhY2su
CkBAIC0yNzgsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNl
aXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIKICAgICAgICAgICAg
IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRhLCBk
YXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2Zyb250ZW5kLT5kYXRhUmVjZWl2ZWQocmVxdWVz
dElkLCBjdXJyZW50VGltZSgpLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIGN1cnJlbnRUaW1l
KCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCkBAIC0yOTksNyArMzAx
LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnQKICAgICBpZiAocmVzb3VyY2VEYXRhICYmIHJl
c291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKICAgICAgICAgc291cmNlTWFwcGluZ1VSTCA9
IEluc3BlY3RvclBhZ2VBZ2VudDo6c291cmNlTWFwVVJMRm9yUmVzb3VyY2UocmVzb3VyY2VEYXRh
LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAotICAgIG1fZnJvbnRlbmQtPmxvYWRpbmdGaW5pc2hlZChy
ZXF1ZXN0SWQsIGZpbmlzaFRpbWUsICFzb3VyY2VNYXBwaW5nVVJMLmlzRW1wdHkoKSA/ICZzb3Vy
Y2VNYXBwaW5nVVJMIDogMCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmxvYWRpbmdGaW5p
c2hlZChyZXF1ZXN0SWQsIGZpbmlzaFRpbWUsICFzb3VyY2VNYXBwaW5nVVJMLmlzRW1wdHkoKSA/
ICZzb3VyY2VNYXBwaW5nVVJMIDogMCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTMxNSw3ICszMTcsNyBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMbwogICAgIH0KIAogICAgIGJvb2wgY2FuY2VsZWQgPSBl
cnJvci5pc0NhbmNlbGxhdGlvbigpOwotICAgIG1fZnJvbnRlbmQtPmxvYWRpbmdGYWlsZWQocmVx
dWVzdElkLCBjdXJyZW50VGltZSgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLCBjYW5j
ZWxlZCA/ICZjYW5jZWxlZCA6IDApOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkaW5n
RmFpbGVkKHJlcXVlc3RJZCwgY3VycmVudFRpbWUoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKSwgY2FuY2VsZWQgPyAmY2FuY2VsZWQgOiAwKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpAQCAtMzM0LDcgKzMzNiw3IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KERvY3VtZW50TG9hZGVyKiBsb2FkCiAKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVy
LT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogMCk7CiAKLSAgICBtX2Zy
b250ZW5kLT5yZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwg
bG9hZGVySWQsIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRv
ck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgbG9hZGVyKSk7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUo
cmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3Vy
cmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNl
KHJlc291cmNlLCBsb2FkZXIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpz
ZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlU3RyaW5nKQpAQCAtNDY3LDE0ICs0NjksMTQgQEAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpidWls
ZEluaXRpYXQKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVXZWJTb2Nr
ZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpCiB7Ci0g
ICAgbV9mcm9udGVuZC0+d2ViU29ja2V0Q3JlYXRlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVl
c3RJZChpZGVudGlmaWVyKSwgcmVxdWVzdFVSTC5zdHJpbmcoKSk7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPndlYlNvY2tldENyZWF0ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQo
aWRlbnRpZmllciksIHJlcXVlc3RVUkwuc3RyaW5nKCkpOwogfQogCiB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q+IHJlcXVlc3RPYmpl
Y3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdDo6Y3JlYXRlKCkKICAg
ICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRl
ckZpZWxkcygpKSk7Ci0gICAgbV9mcm9udGVuZC0+d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VS
ZXF1ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50
VGltZSgpLCByZXF1ZXN0T2JqZWN0KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29j
a2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElk
KGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCByZXF1ZXN0T2JqZWN0KTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKQEAgLTQ4MywxMiArNDg1LDEyIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcKICAgICAg
ICAgLnNldFN0YXR1cyhyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKQogICAgICAgICAuc2V0U3Rh
dHVzVGV4dChyZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKQogICAgICAgICAuc2V0SGVhZGVycyhi
dWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSk7Ci0gICAg
bV9mcm9udGVuZC0+d2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZChJZGVudGlmaWVy
c0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgcmVzcG9uc2VP
YmplY3QpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBj
dXJyZW50VGltZSgpLCByZXNwb25zZU9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewot
ICAgIG1fZnJvbnRlbmQtPndlYlNvY2tldENsb3NlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVl
c3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPndlYlNvY2tldENsb3NlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlm
aWVyKSwgY3VycmVudFRpbWUoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
V2ViU29ja2V0RnJhbWUmIGZyYW1lKQpAQCAtNDk3LDcgKzQ5OSw3IEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwKICAgICAgICAgLnNldE9wY29kZShmcmFtZS5vcENvZGUpCiAgICAgICAgIC5zZXRN
YXNrKGZyYW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRhKFN0cmluZyhmcmFtZS5w
YXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7Ci0gICAgbV9mcm9udGVuZC0+d2ViU29ja2V0
RnJhbWVSZWNlaXZlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwg
Y3VycmVudFRpbWUoKSwgZnJhbWVPYmplY3QpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53
ZWJTb2NrZXRGcmFtZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50
aWZpZXIpLCBjdXJyZW50VGltZSgpLCBmcmFtZU9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQpAQCAtNTA2LDEyICs1MDgsMTIgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb24KICAgICAgICAgLnNldE9wY29kZShmcmFtZS5vcENvZGUp
CiAgICAgICAgIC5zZXRNYXNrKGZyYW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRh
KFN0cmluZyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7Ci0gICAgbV9mcm9u
dGVuZC0+d2ViU29ja2V0RnJhbWVTZW50KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlk
ZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBmcmFtZU9iamVjdCk7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPndlYlNvY2tldEZyYW1lU2VudChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJ
ZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgZnJhbWVPYmplY3QpOwogfQogCiB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAg
bV9mcm9udGVuZC0+d2ViU29ja2V0RnJhbWVFcnJvcihJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVl
c3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgZXJyb3JNZXNzYWdlKTsKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVFcnJvcihJZGVudGlmaWVyc0ZhY3Rvcnk6
OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgZXJyb3JNZXNzYWdlKTsKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKQEAgLTUyOSw3ICs1MzEsNyBAQCB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAKIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmQpCisg
ICAgaWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hlcikKICAgICAgICAgcmV0dXJuOwogICAgIG1fZW5h
YmxlZCA9IHRydWU7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KHRoaXMpOwpAQCAtNjQ3LDEwICs2NDksOSBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogfQog
CiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFn
ZUFnZW50LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2Vu
dDxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PigiTmV0d29yayIsIGluc3RydW1lbnRpbmdBZ2VudHMp
CisgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2Ns
aWVudChjbGllbnQpCi0gICAgLCBtX2Zyb250ZW5kKDApCiAgICAgLCBtX3Jlc291cmNlc0RhdGEo
YWRvcHRQdHIobmV3IE5ldHdvcmtSZXNvdXJjZXNEYXRhKCkpKQogICAgICwgbV9lbmFibGVkKGZh
bHNlKQogICAgICwgbV9jYWNoZURpc2FibGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggM2I5MjFiZS4uYWZlYTFl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oCkBAIC01NSw3ICs1NSw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRUUEhlYWRlck1h
cDsKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwotY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0
b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwpAQCAtNzcsMjAgKzc2LDE4
IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFn
ZW50PEluc3BlY3RvclJlc291cmNlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6Ok5ldHdvcmtDb21tYW5kSGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpOZXR3b3JrQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwg
SW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEluc3BlY3RvclJlc291cmNlQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgcGFnZUFnZW50
LCBjbGllbnQpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVj
dG9yRnJvbnRlbmQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwotCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gcmVzdG9yZShQYWdlKiwg
SW5zcGVjdG9yRnJvbnRlbmQqKTsKLQogICAgIH5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7
CisKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxhb2RlciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7CkBAIC0xNTYsNyArMTUzLDcgQEAgcHJpdmF0ZToK
IAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yQ2xp
ZW50KiBtX2NsaWVudDsKLSAgICBJbnNwZWN0b3JGcm9udGVuZDo6TmV0d29yayogbV9mcm9udGVu
ZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hl
cj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgU3RyaW5nIG1fdXNlckFnZW50T3ZlcnJpZGU7
CiAgICAgT3duUHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNlc0RhdGE7CiAgICAg
Ym9vbCBtX2VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDk4MWJlM2IuLjhiMzQ2OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIHN0YXRpYyBib29sIGFzQm9vbChjb25zdCBib29sKiBjb25zdCBiKQogfQogCiBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JSdW50
aW1lQWdlbnQ+KCJSdW50aW1lIiwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3Rv
ckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIlJ1bnRpbWUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykK
ICAgICAsIG1fZW5hYmxlZChmYWxzZSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRl
eCBkMzViMzYxLi4zZTM1MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC00Myw3ICs0Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwog
Y2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIElu
c3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclZhbHVlOwogY2xhc3MgSW5zdHJ1bWVudGlu
Z0FnZW50czsKQEAgLTUyLDcgKzUxLDcgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclJ1bnRpbWVBZ2VudD4sIHB1Ymxp
YyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6UnVudGltZUNvbW1hbmRIYW5kbGVyIHsKK2Ns
YXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1
YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6UnVudGltZUNvbW1hbmRIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSdW50aW1lQWdlbnQpOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDg5YTVk
NjAuLmYwNGRjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTYzLDI0ICs2MywyNSBAQCB2b2lkIFRpbWVsaW5lVGlt
ZUNvbnZlcnRlcjo6cmVzZXQoKQogCiBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpCiB7Ci0gICAgY2xlYXJGcm9udGVuZCgpOwogfQogCi12b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVu
ZCkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZCA9
IGZyb250ZW5kLT50aW1lbGluZSgpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRD
aGFubmVsKTsKKyAgICBiYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKQogewor
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKKwogICAgIEVycm9yU3RyaW5nIGVy
cm9yOwogICAgIHN0b3AoJmVycm9yKTsKLSAgICBtX2Zyb250ZW5kID0gMDsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydChFcnJvclN0cmluZyosIGNvbnN0IGludCogbWF4
Q2FsbFN0YWNrRGVwdGgsIGNvbnN0IGJvb2wqIGluY2x1ZGVEb21Db3VudGVycykKIHsKLSAgICBp
ZiAoIW1fZnJvbnRlbmQpCisgICAgaWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hlcikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1heENhbGxTdGFja0RlcHRoICYmICptYXhDYWxsU3RhY2tEZXB0
aCA+IDApCkBAIC01NzgsMTAgKzU3OSw5IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogfQogCiBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFn
ZW50LCBJbnNwZWN0b3JNZW1vcnlBZ2VudCogbWVtb3J5QWdlbnQsIEluc3BlY3RvclR5cGUgdHlw
ZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5z
cGVjdG9yVGltZWxpbmVBZ2VudD4oIlRpbWVsaW5lIiwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAg
ICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX21lbW9y
eUFnZW50KG1lbW9yeUFnZW50KQotICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9pZCgxKQog
ICAgICwgbV9tYXhDYWxsU3RhY2tEZXB0aCg1KQogICAgICwgbV9pbnNwZWN0b3JUeXBlKHR5cGUp
CkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZW5kRXZl
bnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50KQogewogICAgIC8vIEZJWE1FOiBy
dW50aW1lQ2FzdCBpcyBhIGhhY2suIFdlIGRvIGl0IGJlY2F1c2Ugd2UgY2FuJ3QgYnVpbGQgVGlt
ZWxpbmVFdmVudCBkaXJlY3RseSBub3cuCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6VGltZWxpbmVFdmVudD4gcmVjb3JkQ2hlY2tlZCA9IFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6
VGltZWxpbmVFdmVudDo6cnVudGltZUNhc3QoZXZlbnQpOwotICAgIG1fZnJvbnRlbmQtPmV2ZW50
UmVjb3JkZWQocmVjb3JkQ2hlY2tlZC5yZWxlYXNlKCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5ldmVudFJlY29yZGVkKHJlY29yZENoZWNrZWQucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUsIGJvb2wgY2FwdHVyZUNh
bGxTdGFjaywgRnJhbWUqIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggMmZmNzRiMS4uNzA3ZTIyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC00
Nyw3ICs0Nyw2IEBAIGNsYXNzIEV2ZW50OwogY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNz
IEluc3BlY3Rvck1lbW9yeUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3Mg
SW5zdHJ1bWVudGluZ0FnZW50czsKQEAgLTEyMiw3ICsxMjEsNyBAQCBwcml2YXRlOgogfTsKIAog
Y2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudAotICAgIDogcHVibGljIEluc3BlY3RvckJhc2VB
Z2VudDxJbnNwZWN0b3JUaW1lbGluZUFnZW50PgorICAgIDogcHVibGljIEluc3BlY3RvckJhc2VB
Z2VudAogICAgICwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpUaW1lbGluZUNv
bW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KTsKIHB1YmxpYzoKQEAgLTEzNSw4ICsxMzQsOCBAQCBwdWJsaWM6CiAKICAgICB+SW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxT
dGFja0RlcHRoLCBjb25zdCBib29sKiBpbmNsdWRlRG9tQ291bnRlcnMpOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wKEVycm9yU3RyaW5nKik7CkBAIC0yNTksNyArMjU4LDcgQEAgcHJpdmF0ZToKICAg
ICBJbnNwZWN0b3JNZW1vcnlBZ2VudCogbV9tZW1vcnlBZ2VudDsKICAgICBUaW1lbGluZVRpbWVD
b252ZXJ0ZXIgbV90aW1lQ29udmVydGVyOwogCi0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OlRpbWVs
aW5lKiBtX2Zyb250ZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JUaW1lbGluZUZy
b250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgZG91YmxlIG1fdGlt
ZXN0YW1wT2Zmc2V0OwogCiAgICAgVmVjdG9yPFRpbWVsaW5lUmVjb3JkRW50cnk+IG1fcmVjb3Jk
U3RhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcAppbmRleCAyNDlmZjU1Li4yNWQyMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTQ4LDggKzQ4LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OldvcmtlckZyb250
ZW5kQ2hhbm5lbCA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5zcGVjdG9y
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBX
b3JrZXJGcm9udGVuZENoYW5uZWwoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBXb3JrZXJH
bG9iYWxTY29wZVByb3h5KiBwcm94eSkKLSAgICAgICAgOiBtX2Zyb250ZW5kKGZyb250ZW5kKQor
ICAgIGV4cGxpY2l0IFdvcmtlckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JXb3JrZXJGcm9udGVu
ZERpc3BhdGNoZXIqIGZyb250ZW5kRGlzcGF0Y2hlciwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSog
cHJveHkpCisgICAgICAgIDogbV9mcm9udGVuZERpc3BhdGNoZXIoZnJvbnRlbmREaXNwYXRjaGVy
KQogICAgICAgICAsIG1fcHJveHkocHJveHkpCiAgICAgICAgICwgbV9pZChzX25leHRJZCsrKQog
ICAgICAgICAsIG1fY29ubmVjdGVkKGZhbHNlKQpAQCAtODksMTAgKzg5LDEwIEBAIHByaXZhdGU6
CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2VPYmplY3QgPSB2YWx1ZS0+
YXNPYmplY3QoKTsKICAgICAgICAgaWYgKCFtZXNzYWdlT2JqZWN0KQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBtX2Zyb250ZW5kLT53b3JrZXIoKS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVdv
cmtlcihtX2lkLCBtZXNzYWdlT2JqZWN0KTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIobV9pZCwgbWVzc2FnZU9iamVjdCk7CiAgICAgfQog
Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRlbmQ7CisgICAgSW5zcGVjdG9yV29ya2Vy
RnJvbnRlbmREaXNwYXRjaGVyKiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBXb3JrZXJHbG9i
YWxTY29wZVByb3h5KiBtX3Byb3h5OwogICAgIGludCBtX2lkOwogICAgIGJvb2wgbV9jb25uZWN0
ZWQ7CkBAIC0xMDcsOCArMTA3LDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JXb3JrZXJBZ2VudD4g
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnQKIH0KIAogSW5z
cGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yV29ya2VyQWdlbnQ+KCJXb3JrZXIiLCBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICwgbV9p
bnNwZWN0b3JGcm9udGVuZCgwKQorICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJh
bCgiV29ya2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2Up
CiAgICAgLCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydChmYWxzZSkKIHsKQEAg
LTEyMCwzMSArMTE5LDM1IEBAIEluc3BlY3RvcldvcmtlckFnZW50Ojp+SW5zcGVjdG9yV29ya2Vy
QWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yV29ya2VyQWdl
bnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OnNldEZyb250ZW5kKEluc3Bl
Y3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQog
ewotICAgIG1faW5zcGVjdG9yRnJvbnRlbmQgPSBmcm9udGVuZDsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRj
aGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFn
ZW50KHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpjbGVhckZyb250ZW5k
KCkKK3ZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKCkKIHsKICAgICBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydCA9IGZhbHNl
OwotICAgIGRpc2FibGUoMCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IDA7CisgICAgZGlz
YWJsZShudWxscHRyKTsKKworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIHsKICAg
ICBtX2VuYWJsZWQgPSB0cnVlOwotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZCkKKyAgICBp
ZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyKQogICAgICAgICByZXR1cm47CisKICAgICBjcmVhdGVX
b3JrZXJGcm9udGVuZENoYW5uZWxzRm9yRXhpc3RpbmdXb3JrZXJzKCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yV29ya2VyQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewogICAgIG1fZW5hYmxl
ZCA9IGZhbHNlOwotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZCkKKyAgICBpZiAoIW1fZnJv
bnRlbmREaXNwYXRjaGVyKQogICAgICAgICByZXR1cm47CisKICAgICBkZXN0cm95V29ya2VyRnJv
bnRlbmRDaGFubmVscygpOwogfQogCkBAIC0xOTcsNyArMjAwLDcgQEAgYm9vbCBJbnNwZWN0b3JX
b3JrZXJBZ2VudDo6c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KCkgY29uc3QKIHZv
aWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoV29ya2Vy
R2xvYmFsU2NvcGVQcm94eSogd29ya2VyR2xvYmFsU2NvcGVQcm94eSwgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgbV9kZWRpY2F0ZWRXb3JrZXJzLnNldCh3b3JrZXJHbG9iYWxTY29wZVByb3h5LCB1
cmwuc3RyaW5nKCkpOwotICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kICYmIG1fZW5hYmxlZCkK
KyAgICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIgJiYgbV9lbmFibGVkKQogICAgICAgICBjcmVh
dGVXb3JrZXJGcm9udGVuZENoYW5uZWwod29ya2VyR2xvYmFsU2NvcGVQcm94eSwgdXJsLnN0cmlu
ZygpKTsKIH0KIApAQCAtMjA2LDcgKzIwOSw3IEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6
Ondvcmtlckdsb2JhbFNjb3BlVGVybWluYXRlZChXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBwCiAg
ICAgbV9kZWRpY2F0ZWRXb3JrZXJzLnJlbW92ZShwcm94eSk7CiAgICAgZm9yIChXb3JrZXJDaGFu
bmVsczo6aXRlcmF0b3IgaXQgPSBtX2lkVG9DaGFubmVsLmJlZ2luKCk7IGl0ICE9IG1faWRUb0No
YW5uZWwuZW5kKCk7ICsraXQpIHsKICAgICAgICAgaWYgKHByb3h5ID09IGl0LT52YWx1ZS0+cHJv
eHkoKSkgewotICAgICAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZC0+d29ya2VyKCktPndvcmtl
clRlcm1pbmF0ZWQoaXQtPmtleSk7CisgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
d29ya2VyVGVybWluYXRlZChpdC0+a2V5KTsKICAgICAgICAgICAgIGRlbGV0ZSBpdC0+dmFsdWU7
CiAgICAgICAgICAgICBtX2lkVG9DaGFubmVsLnJlbW92ZShpdCk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0yMzEsMTMgKzIzNCwxMyBAQCB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkZXN0
cm95V29ya2VyRnJvbnRlbmRDaGFubmVscygpCiAKIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6
OmNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbChXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3Jr
ZXJHbG9iYWxTY29wZVByb3h5LCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBXb3JrZXJGcm9u
dGVuZENoYW5uZWwqIGNoYW5uZWwgPSBuZXcgV29ya2VyRnJvbnRlbmRDaGFubmVsKG1faW5zcGVj
dG9yRnJvbnRlbmQsIHdvcmtlckdsb2JhbFNjb3BlUHJveHkpOworICAgIFdvcmtlckZyb250ZW5k
Q2hhbm5lbCogY2hhbm5lbCA9IG5ldyBXb3JrZXJGcm9udGVuZENoYW5uZWwobV9mcm9udGVuZERp
c3BhdGNoZXIuZ2V0KCksIHdvcmtlckdsb2JhbFNjb3BlUHJveHkpOwogICAgIG1faWRUb0NoYW5u
ZWwuc2V0KGNoYW5uZWwtPmlkKCksIGNoYW5uZWwpOwogCi0gICAgQVNTRVJUKG1faW5zcGVjdG9y
RnJvbnRlbmQpOworICAgIEFTU0VSVChtX2Zyb250ZW5kRGlzcGF0Y2hlcik7CiAgICAgaWYgKG1f
c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KQogICAgICAgICBjaGFubmVsLT5jb25u
ZWN0VG9Xb3JrZXJHbG9iYWxTY29wZSgpOwotICAgIG1faW5zcGVjdG9yRnJvbnRlbmQtPndvcmtl
cigpLT53b3JrZXJDcmVhdGVkKGNoYW5uZWwtPmlkKCksIHVybCwgbV9zaG91bGRQYXVzZURlZGlj
YXRlZFdvcmtlck9uU3RhcnQpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53b3JrZXJDcmVh
dGVkKGNoYW5uZWwtPmlkKCksIHVybCwgbV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3Rh
cnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCmluZGV4IGZiZDkwODQuLmM4MWNmMGZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApA
QCAtMzgsMjEgKzM4LDIxIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmpl
Y3Q7CitjbGFzcyBJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnN0
cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgVVJMOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVQcm94
eTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rvcldvcmtl
ckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JXb3JrZXJBZ2VudD4s
IHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6V29ya2VyQ29tbWFuZEhhbmRsZXIg
eworY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OldvcmtlckNvbW1hbmRIYW5kbGVy
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JXb3JrZXJBZ2VudD4g
Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB+SW5zcGVjdG9yV29ya2VyQWdlbnQo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwot
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ2FsbGVkIGZyb20g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgYm9vbCBzaG91bGRQYXVzZURlZGljYXRlZFdv
cmtlck9uU3RhcnQoKSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbChXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29u
c3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgZGVzdHJveVdvcmtlckZyb250ZW5kQ2hhbm5lbHMo
KTsKIAotICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2luc3BlY3RvckZyb250ZW5kOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRl
bmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9lbmFibGVkOwogICAgIGJvb2wgbV9zaG91bGRQYXVz
ZURlZGljYXRlZFdvcmtlck9uU3RhcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmNwcAppbmRleCA0MTgyN2IxLi5iODgzYjk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC01Myw3ICs1Myw2IEBA
IFBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5qCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoaW5z
dHJ1bWVudGluZ0FnZW50cywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9pbnNwZWN0
ZWRQYWdlKHBhZ2UpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCi0gICAgLCBtX2Zyb250
ZW5kKDApCiAgICAgLCBtX21haW5Xb3JsZENvbnRleHRDcmVhdGVkKGZhbHNlKQogewogICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGFnZVJ1bnRpbWVBZ2VudCh0aGlzKTsKQEAgLTY0LDE0
ICs2MywxNiBAQCBQYWdlUnVudGltZUFnZW50Ojp+UGFnZVJ1bnRpbWVBZ2VudCgpCiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlUnVudGltZUFnZW50KDApOwogfQogCi12b2lkIFBh
Z2VSdW50aW1lQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkK
K3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZCA9IGZyb250ZW5k
LT5ydW50aW1lKCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Cisg
ICAgYmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyQWdlbnQodGhpcyk7CiB9CiAKLXZvaWQgUGFn
ZVJ1bnRpbWVBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIHsKLSAgICBtX2Zyb250ZW5kID0gMDsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CisKICAgICBTdHJpbmcgZXJyb3JTdHJp
bmc7CiAgICAgZGlzYWJsZSgmZXJyb3JTdHJpbmcpOwogfQpAQCAtMTA0LDcgKzEwNSw3IEBAIHZv
aWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlTWFpbldvcmxkQ29udGV4dChGcmFtZSogZnJh
bWUpCiAKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCht
X2Zyb250ZW5kKTsKKyAgICBBU1NFUlQobV9mcm9udGVuZERpc3BhdGNoZXIpOwogICAgIFN0cmlu
ZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOwogICAgIEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSk7CiAgICAgbm90aWZ5
Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgc2NyaXB0U3RhdGUsIDAsIHRydWUpOwpAQCAtMTE0LDcg
KzExNSw3IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0
KEZyYW1lKiBmcmFtZSwgSlNDOjpFeGVjU3RhdGUqIHNjCiB7CiAgICAgaWYgKCFtX2VuYWJsZWQp
CiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9mcm9udGVuZCk7CisgICAgQVNTRVJUKG1f
ZnJvbnRlbmREaXNwYXRjaGVyKTsKICAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5m
cmFtZUlkKGZyYW1lKTsKICAgICBub3RpZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBzY3JpcHRT
dGF0ZSwgb3JpZ2luLCBmYWxzZSk7CiB9CkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBQYWdlUnVu
dGltZUFnZW50Ojpub3RpZnlDb250ZXh0Q3JlYXRlZChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIEpT
Qzo6RXhlY1N0YXQKICAgICBBU1NFUlQoc2VjdXJpdHlPcmlnaW4gfHwgaXNQYWdlQ29udGV4dCk7
CiAgICAgaW50IGV4ZWN1dGlvbkNvbnRleHRJZCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLT5p
bmplY3RlZFNjcmlwdElkRm9yKHNjcmlwdFN0YXRlKTsKICAgICBTdHJpbmcgbmFtZSA9IHNlY3Vy
aXR5T3JpZ2luID8gc2VjdXJpdHlPcmlnaW4tPnRvUmF3U3RyaW5nKCkgOiAiIjsKLSAgICBtX2Zy
b250ZW5kLT5leGVjdXRpb25Db250ZXh0Q3JlYXRlZChFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRp
b246OmNyZWF0ZSgpCisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmV4ZWN1dGlvbkNvbnRleHRD
cmVhdGVkKEV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbjo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dElkKGV4ZWN1dGlvbkNvbnRleHRJZCkKICAgICAgICAgLnNldElzUGFnZUNvbnRleHQoaXNQYWdl
Q29udGV4dCkKICAgICAgICAgLnNldE5hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCmluZGV4IGNkZDM0NjcuLmU2YjQxM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtNTEsOCArNTEsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZVJ1bnRpbWVBZ2VudChpbnN0
cnVtZW50aW5nQWdlbnRzLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIHBhZ2UsIHBhZ2VBZ2VudCkp
OwogICAgIH0KICAgICB2aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7Ci0gICAgdmlydHVhbCB2b2lkIGNs
ZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAKQEAgLTcwLDcgKzcwLDcg
QEAgcHJpdmF0ZToKIAogICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAgIEluc3BlY3RvckZyb250ZW5kOjpSdW50aW1lKiBt
X2Zyb250ZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JSdW50aW1lRnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBib29sIG1fbWFpbldvcmxkQ29u
dGV4dENyZWF0ZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
VGltZWxpbmVSZWNvcmRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmgKaW5kZXggY2EzMzQxYi4uZGI0NGIxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaApAQCAtNDEsNyArNDEs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBFdmVudDsKICAgICBjbGFzcyBG
bG9hdFF1YWQ7Ci0gICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAgICAgY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OwogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IGRhYmZkMGIuLjFhZjU0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTEx
NywyMiArMTE3LDE5IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6On5Xb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyKCkKIAogdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0
RnJvbnRlbmQoKQogewotICAgIEFTU0VSVCghbV9mcm9udGVuZCk7CisgICAgQVNTRVJUKCFtX2Zy
b250ZW5kQ2hhbm5lbCk7CiAgICAgbV9mcm9udGVuZENoYW5uZWwgPSBhZG9wdFB0cihuZXcgUGFn
ZUluc3BlY3RvclByb3h5KG1fd29ya2VyR2xvYmFsU2NvcGUpKTsKLSAgICBtX2Zyb250ZW5kID0g
YWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKSk7
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwotICAgIG1fYWdlbnRzLnJlZ2lzdGVySW5E
aXNwYXRjaGVyKG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwotICAgIG1fYWdlbnRzLnNldEZy
b250ZW5kKG1fZnJvbnRlbmQuZ2V0KCkpOworICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5n
ZXQoKSk7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZy
b250ZW5kKCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmQpCisgICAgaWYgKCFtX2Zyb250ZW5kQ2hh
bm5lbCkKICAgICAgICAgcmV0dXJuOworICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+Y2xlYXJGcm9udGVuZCgpOwog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKLSAgICBtX2FnZW50cy5jbGVhckZyb250
ZW5kKCk7Ci0gICAgbV9mcm9udGVuZC5jbGVhcigpOwogICAgIG1fZnJvbnRlbmRDaGFubmVsLmNs
ZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDNjOTM3MDcuLjE2MGY0ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAt
NDUsNyArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0
TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQ7CkBAIC01
OSw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtl
ckdsb2JhbFNjb3BlKik7CiAgICAgfldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKTsKIAotICAg
IGJvb2wgaGFzRnJvbnRlbmQoKSBjb25zdCB7IHJldHVybiBtX2Zyb250ZW5kOyB9CisgICAgYm9v
bCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRlbmRDaGFubmVsOyB9CiAgICAg
dm9pZCBjb25uZWN0RnJvbnRlbmQoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwog
ICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYpOwpAQCAt
NzYsNyArNzUsNiBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudCogbV9ydW50
aW1lQWdlbnQ7CiAgICAgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBPd25Q
dHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKLSAgICBPd25Q
dHI8SW5zcGVjdG9yRnJvbnRlbmQ+IG1fZnJvbnRlbmQ7CiAgICAgUmVmUHRyPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBiNjQzNDBkLi4x
OTRjNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGlt
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFn
ZW50LmNwcApAQCAtNTcsNiArNTcsMTUgQEAgV29ya2VyUnVudGltZUFnZW50Ojp+V29ya2VyUnVu
dGltZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdvcmtlclJ1bnRpbWVB
Z2VudCgwKTsKIH0KIAordm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit7CisgICAgYmFja2VuZERpc3BhdGNoZXItPnJl
Z2lzdGVyQWdlbnQodGhpcyk7Cit9CisKK3ZvaWQgV29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpCit7Cit9CisKIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1
bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJ
ZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmlu
ZGV4IGVmZTFhNmIuLjZjMzI2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyUnVudGltZUFnZW50LmgKQEAgLTQ4LDYgKzQ4LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2
aXJ0dWFsIH5Xb3JrZXJSdW50aW1lQWdlbnQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKKwogICAgIC8vIFByb3RvY29sIGNvbW1h
bmRzLgogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0lucHV0Lmpzb24gYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvSW5wdXQuanNvbgppbmRleCA0ZWUyNTg3Li43ZTM2MTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvSW5wdXQuanNv
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvSW5wdXQuanNvbgpAQCAt
MzMsNiArMzMsNSBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJEaXNwYXRjaGVzIGEgbW91c2UgZXZlbnQgdG8gdGhlIHBhZ2UuIgogICAgICAgICB9Ci0gICAg
XSwKLSAgICAiZXZlbnRzIjogW10KKyAgICBdCiB9Cg==
</data>
<flag name="review"
          id="239777"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>216749</attachid>
            <date>2013-11-12 17:25:23 -0800</date>
            <delta_ts>2013-11-12 17:25:23 -0800</delta_ts>
            <desc>[BEFORE] InspectorFrontend.h</desc>
            <filename>InspectorFrontendBefore.h</filename>
            <type>application/octet-stream</type>
            <size>17276</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Ly8gRmlsZSBpcyBnZW5lcmF0ZWQgYnkgV2ViQ29yZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yLnB5CgovLyBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIENocm9taXVtIEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZF9oCiNkZWZpbmUgSW5z
cGVjdG9yRnJvbnRlbmRfaAoKI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCiNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KCm5hbWVzcGFjZSBXZWJDb3JlIHsKCmNsYXNzIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKCi8vIEJvdGggSW5zcGVjdG9yT2JqZWN0IGFuZCBJbnNw
ZWN0b3JBcnJheSBtYXkgb3IgbWF5IG5vdCBiZSBkZWNsYXJlZCBhdCB0aGlzIHBvaW50IGFzIGRl
ZmluZWQgYnkgRU5BQkxFRF9JTlNQRUNUT1IuCi8vIERvdWJsZS1jaGVjayB3ZSBoYXZlIHRoZW0g
YXQgbGVhc3QgYXMgZm9yd2FyZCBkZWNsYXJhdGlvbi4KY2xhc3MgSW5zcGVjdG9yQXJyYXk7CmNs
YXNzIEluc3BlY3Rvck9iamVjdDsKCnR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwoKI2lmIEVO
QUJMRShJTlNQRUNUT1IpCgpjbGFzcyBJbnNwZWN0b3JGcm9udGVuZCB7CnB1YmxpYzoKICAgIElu
c3BlY3RvckZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwoKCiAgICBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlIHsKICAgIHB1YmxpYzoKICAgICAgICBBcHBsaWNhdGlvbkNhY2hlKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CiAgICAg
ICAgdm9pZCBhcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBkYXRlZChjb25zdCBUeXBlQnVpbGRlcjo6
TmV0d29yazo6RnJhbWVJZCYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCwgaW50
IHN0YXR1cyk7CiAgICAgICAgdm9pZCBuZXR3b3JrU3RhdGVVcGRhdGVkKGJvb2wgaXNOb3dPbmxp
bmUpOwoKICAgIHByb3RlY3RlZDoKICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgfTsKCiAgICBBcHBsaWNhdGlvbkNhY2hlKiBh
cHBsaWNhdGlvbmNhY2hlKCkgeyByZXR1cm4gJm1fYXBwbGljYXRpb25jYWNoZTsgfQoKICAgIGNs
YXNzIENhbnZhcyB7CiAgICBwdWJsaWM6CiAgICAgICAgQ2FudmFzKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CiAgICAgICAgdm9pZCBjb250ZXh0
Q3JlYXRlZChjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCYgZnJhbWVJZCk7CiAg
ICAgICAgdm9pZCB0cmFjZUxvZ3NSZW1vdmVkKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpG
cmFtZUlkKiBjb25zdCBmcmFtZUlkLCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxv
Z0lkKiBjb25zdCB0cmFjZUxvZ0lkKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgIH07CgogICAg
Q2FudmFzKiBjYW52YXMoKSB7IHJldHVybiAmbV9jYW52YXM7IH0KCiAgICBjbGFzcyBDb25zb2xl
IHsKICAgIHB1YmxpYzoKICAgICAgICBDb25zb2xlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGlu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CiAgICAgICAgdm9pZCBtZXNzYWdlQWRkZWQoUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpOwog
ICAgICAgIHZvaWQgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZChpbnQgY291bnQpOwogICAgICAg
IHZvaWQgbWVzc2FnZXNDbGVhcmVkKCk7CgogICAgcHJvdGVjdGVkOgogICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAgICB9OwoKICAg
IENvbnNvbGUqIGNvbnNvbGUoKSB7IHJldHVybiAmbV9jb25zb2xlOyB9CgogICAgY2xhc3MgQ1NT
IHsKICAgIHB1YmxpYzoKICAgICAgICBDU1MoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KICAgICAgICB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFu
Z2VkKCk7CiAgICAgICAgdm9pZCBzdHlsZVNoZWV0Q2hhbmdlZChjb25zdCBUeXBlQnVpbGRlcjo6
Q1NTOjpTdHlsZVNoZWV0SWQmIHN0eWxlU2hlZXRJZCk7CiAgICAgICAgdm9pZCBuYW1lZEZsb3dD
cmVhdGVkKFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBuYW1lZEZsb3cp
OwogICAgICAgIHZvaWQgbmFtZWRGbG93UmVtb3ZlZChpbnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0
IFN0cmluZyYgZmxvd05hbWUpOwogICAgICAgIHZvaWQgcmVnaW9uTGF5b3V0VXBkYXRlZChQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gbmFtZWRGbG93KTsKICAgICAgICB2
b2lkIHJlZ2lvbk92ZXJzZXRDaGFuZ2VkKFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFt
ZWRGbG93PiBuYW1lZEZsb3cpOwogICAgICAgIHZvaWQgcmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRl
bnRFbGVtZW50KGludCBkb2N1bWVudE5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwgaW50
IGNvbnRlbnROb2RlSWQsIGludCBuZXh0Q29udGVudE5vZGVJZCk7CiAgICAgICAgdm9pZCB1bnJl
Z2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChpbnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0
IFN0cmluZyYgZmxvd05hbWUsIGludCBjb250ZW50Tm9kZUlkKTsKCiAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bDsKICAgIH07CgogICAgQ1NTKiBjc3MoKSB7IHJldHVybiAmbV9jc3M7IH0KCiNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQogICAgY2xhc3MgRGF0YWJhc2UgewogICAgcHVibGljOgogICAgICAgIERh
dGFiYXNlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkg
eyB9CiAgICAgICAgdm9pZCBhZGREYXRhYmFzZShQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEYXRh
YmFzZTo6RGF0YWJhc2U+IGRhdGFiYXNlKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgIH07Cgog
ICAgRGF0YWJhc2UqIGRhdGFiYXNlKCkgeyByZXR1cm4gJm1fZGF0YWJhc2U7IH0KCiNlbmRpZiAv
LyBFTkFCTEUoU1FMX0RBVEFCQVNFKQojaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAg
ICBjbGFzcyBEZWJ1Z2dlciB7CiAgICBwdWJsaWM6CiAgICAgICAgRGVidWdnZXIoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KICAgICAgICB2b2lk
IGdsb2JhbE9iamVjdENsZWFyZWQoKTsKICAgICAgICB2b2lkIHNjcmlwdFBhcnNlZChjb25zdCBU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiB1
cmwsIGludCBzdGFydExpbmUsIGludCBzdGFydENvbHVtbiwgaW50IGVuZExpbmUsIGludCBlbmRD
b2x1bW4sIGNvbnN0IGJvb2wqIGNvbnN0IGlzQ29udGVudFNjcmlwdCwgY29uc3QgU3RyaW5nKiBj
b25zdCBzb3VyY2VNYXBVUkwsIGNvbnN0IGJvb2wqIGNvbnN0IGhhc1NvdXJjZVVSTCk7CiAgICAg
ICAgdm9pZCBzY3JpcHRGYWlsZWRUb1BhcnNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHNjcmlwdFNvdXJjZSwgaW50IHN0YXJ0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOwogICAgICAgIHZvaWQgYnJlYWtwb2ludFJlc29sdmVkKGNvbnN0
IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkJiBicmVha3BvaW50SWQsIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24pOwogICAgICAg
IC8vIE5hbWVkIGFmdGVyIHBhcmFtZXRlciAncmVhc29uJyB3aGlsZSBnZW5lcmF0aW5nIGNvbW1h
bmQvZXZlbnQgcGF1c2VkLgogICAgICAgIHN0cnVjdCBSZWFzb24gewogICAgICAgICAgICBlbnVt
IEVudW0gewogICAgICAgICAgICAgICAgWEhSID0gNSwKICAgICAgICAgICAgICAgIERPTSA9IDEx
NSwKICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgPSAxMTYsCiAgICAgICAgICAgICAgICBF
eGNlcHRpb24gPSAxMTcsCiAgICAgICAgICAgICAgICBBc3NlcnQgPSAzMCwKICAgICAgICAgICAg
ICAgIENTUFZpb2xhdGlvbiA9IDExOCwKICAgICAgICAgICAgICAgIE90aGVyID0gMTcsCiAgICAg
ICAgICAgIH07CiAgICAgICAgfTsgLy8gc3RydWN0IFJlYXNvbgoKICAgICAgICB2b2lkIHBhdXNl
ZChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNh
bGxGcmFtZT4gPiBjYWxsRnJhbWVzLCBSZWFzb246OkVudW0gcmVhc29uLCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gZGF0YSk7CiAgICAgICAgdm9pZCByZXN1bWVkKCk7CgogICAgcHJvdGVj
dGVkOgogICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWw7CiAgICB9OwoKICAgIERlYnVnZ2VyKiBkZWJ1Z2dlcigpIHsgcmV0dXJuICZtX2Rl
YnVnZ2VyOyB9CgojZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICBjbGFz
cyBET00gewogICAgcHVibGljOgogICAgICAgIERPTShJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChp
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQogICAgICAgIHZvaWQgZG9jdW1lbnRVcGRhdGVk
KCk7CiAgICAgICAgdm9pZCBzZXRDaGlsZE5vZGVzKGludCBwYXJlbnRJZCwgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gPiBub2Rlcyk7CiAgICAg
ICAgdm9pZCBhdHRyaWJ1dGVNb2RpZmllZChpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgICAgIHZvaWQgYXR0cmlidXRlUmVtb3ZlZChpbnQg
bm9kZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgICAgIHZvaWQgaW5saW5lU3R5bGVJbnZh
bGlkYXRlZChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+ID4gbm9kZUlkcyk7CiAg
ICAgICAgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiBjaGFyYWN0ZXJEYXRhKTsKICAgICAgICB2b2lkIGNoaWxkTm9kZUNvdW50VXBkYXRlZChpbnQg
bm9kZUlkLCBpbnQgY2hpbGROb2RlQ291bnQpOwogICAgICAgIHZvaWQgY2hpbGROb2RlSW5zZXJ0
ZWQoaW50IHBhcmVudE5vZGVJZCwgaW50IHByZXZpb3VzTm9kZUlkLCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpET006Ok5vZGU+IG5vZGUpOwogICAgICAgIHZvaWQgY2hpbGROb2RlUmVtb3ZlZChp
bnQgcGFyZW50Tm9kZUlkLCBpbnQgbm9kZUlkKTsKICAgICAgICB2b2lkIHNoYWRvd1Jvb3RQdXNo
ZWQoaW50IGhvc3RJZCwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiByb290KTsK
ICAgICAgICB2b2lkIHNoYWRvd1Jvb3RQb3BwZWQoaW50IGhvc3RJZCwgaW50IHJvb3RJZCk7Cgog
ICAgcHJvdGVjdGVkOgogICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CiAgICB9OwoKICAgIERPTSogZG9tKCkgeyByZXR1cm4gJm1fZG9t
OyB9CgojaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICBjbGFzcyBET01EZWJ1Z2dl
ciB7CiAgICBwdWJsaWM6CiAgICAgICAgRE9NRGVidWdnZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAg
IH07CgogICAgRE9NRGVidWdnZXIqIGRvbWRlYnVnZ2VyKCkgeyByZXR1cm4gJm1fZG9tZGVidWdn
ZXI7IH0KCiNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgIGNsYXNzIERP
TVN0b3JhZ2UgewogICAgcHVibGljOgogICAgICAgIERPTVN0b3JhZ2UoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KICAgICAgICB2b2lkIGRvbVN0
b3JhZ2VJdGVtc0NsZWFyZWQoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3Rv
cmFnZUlkPiBzdG9yYWdlSWQpOwogICAgICAgIHZvaWQgZG9tU3RvcmFnZUl0ZW1SZW1vdmVkKFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gc3RvcmFnZUlkLCBj
b25zdCBTdHJpbmcmIGtleSk7CiAgICAgICAgdm9pZCBkb21TdG9yYWdlSXRlbUFkZGVkKFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gc3RvcmFnZUlkLCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSk7CiAgICAgICAgdm9pZCBkb21T
dG9yYWdlSXRlbVVwZGF0ZWQoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3Rv
cmFnZUlkPiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgIH07
CgogICAgRE9NU3RvcmFnZSogZG9tc3RvcmFnZSgpIHsgcmV0dXJuICZtX2RvbXN0b3JhZ2U7IH0K
CiAgICBjbGFzcyBGaWxlU3lzdGVtIHsKICAgIHB1YmxpYzoKICAgICAgICBGaWxlU3lzdGVtKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CgogICAg
cHJvdGVjdGVkOgogICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWw7CiAgICB9OwoKICAgIEZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSB7IHJl
dHVybiAmbV9maWxlc3lzdGVtOyB9CgogICAgY2xhc3MgSGVhcFByb2ZpbGVyIHsKICAgIHB1Ymxp
YzoKICAgICAgICBIZWFwUHJvZmlsZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKSB7IH0KICAgICAgICB2b2lkIGFkZFByb2ZpbGVIZWFkZXIoUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBoZWFkZXIpOwog
ICAgICAgIHZvaWQgYWRkSGVhcFNuYXBzaG90Q2h1bmsoaW50IHVpZCwgY29uc3QgU3RyaW5nJiBj
aHVuayk7CiAgICAgICAgdm9pZCBmaW5pc2hIZWFwU25hcHNob3QoaW50IHVpZCk7CiAgICAgICAg
dm9pZCByZXNldFByb2ZpbGVzKCk7CiAgICAgICAgdm9pZCByZXBvcnRIZWFwU25hcHNob3RQcm9n
cmVzcyhpbnQgZG9uZSwgaW50IHRvdGFsKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgIH07Cgog
ICAgSGVhcFByb2ZpbGVyKiBoZWFwcHJvZmlsZXIoKSB7IHJldHVybiAmbV9oZWFwcHJvZmlsZXI7
IH0KCiNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgIGNsYXNzIEluZGV4ZWREQiB7CiAg
ICBwdWJsaWM6CiAgICAgICAgSW5kZXhlZERCKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CgogICAgcHJvdGVjdGVkOgogICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAgICB9OwoKICAg
IEluZGV4ZWREQiogaW5kZXhlZGRiKCkgeyByZXR1cm4gJm1faW5kZXhlZGRiOyB9CgojZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICBjbGFzcyBJbnB1dCB7CiAgICBwdWJsaWM6
CiAgICAgICAgSW5wdXQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKSB7IH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgIH07CgogICAgSW5wdXQqIGlucHV0
KCkgeyByZXR1cm4gJm1faW5wdXQ7IH0KCiAgICBjbGFzcyBJbnNwZWN0b3IgewogICAgcHVibGlj
OgogICAgICAgIEluc3BlY3RvcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpIHsgfQogICAgICAgIHZvaWQgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChp
bnQgdGVzdENhbGxJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOwogICAgICAgIHZvaWQgaW5zcGVj
dChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdCwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKTsKICAgICAgICB2b2lkIGRldGFjaGVk
KGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICAgICB2b2lkIHRhcmdldENyYXNoZWQoKTsKCiAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbDsKICAgIH07CgogICAgSW5zcGVjdG9yKiBpbnNwZWN0b3IoKSB7IHJl
dHVybiAmbV9pbnNwZWN0b3I7IH0KCiAgICBjbGFzcyBMYXllclRyZWUgewogICAgcHVibGljOgog
ICAgICAgIExheWVyVHJlZShJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwpIHsgfQogICAgICAgIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CgogICAgcHJv
dGVjdGVkOgogICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiAgICB9OwoKICAgIExheWVyVHJlZSogbGF5ZXJ0cmVlKCkgeyByZXR1cm4g
Jm1fbGF5ZXJ0cmVlOyB9CgogICAgY2xhc3MgTWVtb3J5IHsKICAgIHB1YmxpYzoKICAgICAgICBN
ZW1vcnkoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwp
IDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7
IH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgIH07CgogICAgTWVtb3J5KiBtZW1vcnkoKSB7IHJl
dHVybiAmbV9tZW1vcnk7IH0KCiAgICBjbGFzcyBOZXR3b3JrIHsKICAgIHB1YmxpYzoKICAgICAg
ICBOZXR3b3JrKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCkgeyB9CiAgICAgICAgdm9pZCByZXF1ZXN0V2lsbEJlU2VudChjb25zdCBUeXBlQnVpbGRlcjo6
TmV0d29yazo6UmVxdWVzdElkJiByZXF1ZXN0SWQsIGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpGcmFtZUlkJiBmcmFtZUlkLCBjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6TG9hZGVySWQm
IGxvYWRlcklkLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiByZXF1ZXN0LCBkb3VibGUgdGltZXN0YW1wLCBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvciwgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlZGlyZWN0UmVzcG9uc2UsIFR5cGVC
dWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0qIHR5cGUpOwogICAgICAgIHZvaWQgcmVx
dWVzdFNlcnZlZEZyb21DYWNoZShjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVzdElk
JiByZXF1ZXN0SWQpOwogICAgICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBUeXBlQnVp
bGRlcjo6TmV0d29yazo6UmVxdWVzdElkJiByZXF1ZXN0SWQsIGNvbnN0IFR5cGVCdWlsZGVyOjpO
ZXR3b3JrOjpGcmFtZUlkJiBmcmFtZUlkLCBjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6TG9h
ZGVySWQmIGxvYWRlcklkLCBkb3VibGUgdGltZXN0YW1wLCBUeXBlQnVpbGRlcjo6UGFnZTo6UmVz
b3VyY2VUeXBlOjpFbnVtIHR5cGUsIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJl
c3BvbnNlPiByZXNwb25zZSk7CiAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgVHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVxdWVzdElkLCBkb3VibGUgdGltZXN0YW1wLCBp
bnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICB2b2lkIGxvYWRp
bmdGaW5pc2hlZChjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVzdElkJiByZXF1ZXN0
SWQsIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFN0cmluZyogY29uc3Qgc291cmNlTWFwVVJMKTsK
ICAgICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoY29uc3QgVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJl
cXVlc3RJZCYgcmVxdWVzdElkLCBkb3VibGUgdGltZXN0YW1wLCBjb25zdCBTdHJpbmcmIGVycm9y
VGV4dCwgY29uc3QgYm9vbCogY29uc3QgY2FuY2VsZWQpOwogICAgICAgIHZvaWQgcmVxdWVzdFNl
cnZlZEZyb21NZW1vcnlDYWNoZShjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVzdElk
JiByZXF1ZXN0SWQsIGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkJiBmcmFtZUlk
LCBjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6TG9hZGVySWQmIGxvYWRlcklkLCBjb25zdCBT
dHJpbmcmIGRvY3VtZW50VVJMLCBkb3VibGUgdGltZXN0YW1wLCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvciwgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlKTsKICAgICAgICB2b2lkIHdlYlNv
Y2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6
UmVxdWVzdElkJiByZXF1ZXN0SWQsIGRvdWJsZSB0aW1lc3RhbXAsIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q+IHJlcXVlc3QpOwogICAgICAgIHZvaWQg
d2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZChjb25zdCBUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVxdWVzdElkJiByZXF1ZXN0SWQsIGRvdWJsZSB0aW1lc3RhbXAsIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlc3BvbnNlPiByZXNwb25zZSk7CiAgICAg
ICAgdm9pZCB3ZWJTb2NrZXRDcmVhdGVkKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1
ZXN0SWQmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgICAgIHZvaWQgd2ViU29j
a2V0Q2xvc2VkKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0SWQmIHJlcXVlc3RJ
ZCwgZG91YmxlIHRpbWVzdGFtcCk7CiAgICAgICAgdm9pZCB3ZWJTb2NrZXRGcmFtZVJlY2VpdmVk
KGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0SWQmIHJlcXVlc3RJZCwgZG91Ymxl
IHRpbWVzdGFtcCwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJh
bWU+IHJlc3BvbnNlKTsKICAgICAgICB2b2lkIHdlYlNvY2tldEZyYW1lRXJyb3IoY29uc3QgVHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVxdWVzdElkLCBkb3VibGUgdGltZXN0YW1w
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAgICAgdm9pZCB3ZWJTb2NrZXRGcmFt
ZVNlbnQoY29uc3QgVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVxdWVzdElkLCBk
b3VibGUgdGltZXN0YW1wLCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2Nr
ZXRGcmFtZT4gcmVzcG9uc2UpOwoKICAgIHByb3RlY3RlZDoKICAgICAgICBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgfTsKCiAgICBOZXR3
b3JrKiBuZXR3b3JrKCkgeyByZXR1cm4gJm1fbmV0d29yazsgfQoKICAgIGNsYXNzIFBhZ2Ugewog
ICAgcHVibGljOgogICAgICAgIFBhZ2UoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKSB7IH0KICAgICAgICB2b2lkIGRvbUNvbnRlbnRFdmVudEZpcmVkKGRv
dWJsZSB0aW1lc3RhbXApOwogICAgICAgIHZvaWQgbG9hZEV2ZW50RmlyZWQoZG91YmxlIHRpbWVz
dGFtcCk7CiAgICAgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpQYWdlOjpGcmFtZT4gZnJhbWUpOwogICAgICAgIHZvaWQgZnJhbWVEZXRhY2hlZChjb25zdCBU
eXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCYgZnJhbWVJZCk7CiAgICAgICAgdm9pZCBmcmFt
ZVN0YXJ0ZWRMb2FkaW5nKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkJiBmcmFt
ZUlkKTsKICAgICAgICB2b2lkIGZyYW1lU3RvcHBlZExvYWRpbmcoY29uc3QgVHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OkZyYW1lSWQmIGZyYW1lSWQpOwogICAgICAgIHZvaWQgZnJhbWVTY2hlZHVsZWRO
YXZpZ2F0aW9uKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkJiBmcmFtZUlkLCBk
b3VibGUgZGVsYXkpOwogICAgICAgIHZvaWQgZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlv
bihjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCYgZnJhbWVJZCk7CiAgICAgICAg
dm9pZCBqYXZhc2NyaXB0RGlhbG9nT3BlbmluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAg
ICAgIHZvaWQgamF2YXNjcmlwdERpYWxvZ0Nsb3NlZCgpOwogICAgICAgIHZvaWQgc2NyaXB0c0Vu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpOwoKICAgIHByb3RlY3RlZDoKICAgICAgICBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgfTsKCiAgICBQ
YWdlKiBwYWdlKCkgeyByZXR1cm4gJm1fcGFnZTsgfQoKI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQogICAgY2xhc3MgUHJvZmlsZXIgewogICAgcHVibGljOgogICAgICAgIFByb2ZpbGVy
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CiAg
ICAgICAgdm9pZCBhZGRQcm9maWxlSGVhZGVyKFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2Zp
bGVyOjpQcm9maWxlSGVhZGVyPiBoZWFkZXIpOwogICAgICAgIHZvaWQgYWRkSGVhcFNuYXBzaG90
Q2h1bmsoaW50IHVpZCwgY29uc3QgU3RyaW5nJiBjaHVuayk7CiAgICAgICAgdm9pZCBmaW5pc2hI
ZWFwU25hcHNob3QoaW50IHVpZCk7CiAgICAgICAgdm9pZCBzZXRSZWNvcmRpbmdQcm9maWxlKGJv
b2wgaXNQcm9maWxpbmcpOwogICAgICAgIHZvaWQgcmVzZXRQcm9maWxlcygpOwogICAgICAgIHZv
aWQgcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3MoaW50IGRvbmUsIGludCB0b3RhbCk7CgogICAg
cHJvdGVjdGVkOgogICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWw7CiAgICB9OwoKICAgIFByb2ZpbGVyKiBwcm9maWxlcigpIHsgcmV0dXJu
ICZtX3Byb2ZpbGVyOyB9CgojZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAg
ICBjbGFzcyBSdW50aW1lIHsKICAgIHB1YmxpYzoKICAgICAgICBSdW50aW1lKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CiAgICAgICAgdm9pZCBl
eGVjdXRpb25Db250ZXh0Q3JlYXRlZChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpF
eGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb24+IGNvbnRleHQpOwoKICAgIHByb3RlY3RlZDoKICAg
ICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
OwogICAgfTsKCiAgICBSdW50aW1lKiBydW50aW1lKCkgeyByZXR1cm4gJm1fcnVudGltZTsgfQoK
ICAgIGNsYXNzIFRpbWVsaW5lIHsKICAgIHB1YmxpYzoKICAgICAgICBUaW1lbGluZShJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQogICAgICAgIHZv
aWQgZXZlbnRSZWNvcmRlZChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxp
bmVFdmVudD4gcmVjb3JkKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgIH07CgogICAgVGltZWxp
bmUqIHRpbWVsaW5lKCkgeyByZXR1cm4gJm1fdGltZWxpbmU7IH0KCiNpZiBFTkFCTEUoV09SS0VS
UykKICAgIGNsYXNzIFdvcmtlciB7CiAgICBwdWJsaWM6CiAgICAgICAgV29ya2VyKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CiAgICAgICAgdm9p
ZCB3b3JrZXJDcmVhdGVkKGludCB3b3JrZXJJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaW5z
cGVjdG9yQ29ubmVjdGVkKTsKICAgICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoaW50IHdvcmtl
cklkKTsKICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIoaW50IHdvcmtlcklk
LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSk7CiAgICAgICAgdm9pZCBkaXNj
b25uZWN0ZWRGcm9tV29ya2VyKCk7CgogICAgcHJvdGVjdGVkOgogICAgICAgIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAgICB9OwoKICAgIFdv
cmtlciogd29ya2VyKCkgeyByZXR1cm4gJm1fd29ya2VyOyB9CgojZW5kaWYgLy8gRU5BQkxFKFdP
UktFUlMpCgpwcml2YXRlOgogICAgQXBwbGljYXRpb25DYWNoZSBtX2FwcGxpY2F0aW9uY2FjaGU7
CiAgICBDYW52YXMgbV9jYW52YXM7CiAgICBDb25zb2xlIG1fY29uc29sZTsKICAgIENTUyBtX2Nz
czsKI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICBEYXRhYmFzZSBtX2RhdGFiYXNlOwojZW5k
aWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQogICAgRGVidWdnZXIgbV9kZWJ1Z2dlcjsKI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQogICAgRE9NIG1fZG9tOwojaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAg
ICBET01EZWJ1Z2dlciBtX2RvbWRlYnVnZ2VyOwojZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCiAgICBET01TdG9yYWdlIG1fZG9tc3RvcmFnZTsKICAgIEZpbGVTeXN0ZW0gbV9m
aWxlc3lzdGVtOwogICAgSGVhcFByb2ZpbGVyIG1faGVhcHByb2ZpbGVyOwojaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAgICBJbmRleGVkREIgbV9pbmRleGVkZGI7CiNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgIElucHV0IG1faW5wdXQ7CiAgICBJbnNwZWN0b3IgbV9p
bnNwZWN0b3I7CiAgICBMYXllclRyZWUgbV9sYXllcnRyZWU7CiAgICBNZW1vcnkgbV9tZW1vcnk7
CiAgICBOZXR3b3JrIG1fbmV0d29yazsKICAgIFBhZ2UgbV9wYWdlOwojaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCiAgICBQcm9maWxlciBtX3Byb2ZpbGVyOwojZW5kaWYgLy8gRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICBSdW50aW1lIG1fcnVudGltZTsKICAgIFRpbWVsaW5l
IG1fdGltZWxpbmU7CiNpZiBFTkFCTEUoV09SS0VSUykKICAgIFdvcmtlciBtX3dvcmtlcjsKI2Vu
ZGlmIC8vIEVOQUJMRShXT1JLRVJTKQp9OwoKI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCgp9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGcm9udGVu
ZF9oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>216750</attachid>
            <date>2013-11-12 17:25:39 -0800</date>
            <delta_ts>2013-11-12 17:25:39 -0800</delta_ts>
            <desc>[AFTER] InspectorFrontend.h</desc>
            <filename>InspectorFrontend.h</filename>
            <type>application/octet-stream</type>
            <size>13725</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Ly8gRmlsZSBpcyBnZW5lcmF0ZWQgYnkgV2ViQ29yZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yLnB5CgovLyBDb3B5cmlnaHQgKGMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgovLyBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIENocm9taXVtIEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZF9oCiNkZWZpbmUgSW5zcGVj
dG9yRnJvbnRlbmRfaAoKI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCiNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KCm5hbWVzcGFjZSBXZWJDb3JlIHsKCmNsYXNzIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDsKCiNpZiBFTkFCTEUoSU5TUEVDVE9SKQoKY2xhc3MgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlciB7CnB1YmxpYzoKICAgIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KICAgIHZvaWQgYXBwbGljYXRpb25D
YWNoZVN0YXR1c1VwZGF0ZWQoY29uc3QgVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQmIGZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwsIGludCBzdGF0dXMpOwogICAgdm9pZCBu
ZXR3b3JrU3RhdGVVcGRhdGVkKGJvb2wgaXNOb3dPbmxpbmUpOwpwcml2YXRlOgogICAgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKfTsKCmNsYXNz
IEluc3BlY3RvckNTU0Zyb250ZW5kRGlzcGF0Y2hlciB7CnB1YmxpYzoKICAgIEluc3BlY3RvckNT
U0Zyb250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpIHsgfQogICAgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwogICAg
dm9pZCBzdHlsZVNoZWV0Q2hhbmdlZChjb25zdCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0
SWQmIHN0eWxlU2hlZXRJZCk7CiAgICB2b2lkIG5hbWVkRmxvd0NyZWF0ZWQoUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IG5hbWVkRmxvdyk7CiAgICB2b2lkIG5hbWVkRmxv
d1JlbW92ZWQoaW50IGRvY3VtZW50Tm9kZUlkLCBjb25zdCBTdHJpbmcmIGZsb3dOYW1lKTsKICAg
IHZvaWQgcmVnaW9uTGF5b3V0VXBkYXRlZChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5h
bWVkRmxvdz4gbmFtZWRGbG93KTsKICAgIHZvaWQgcmVnaW9uT3ZlcnNldENoYW5nZWQoUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IG5hbWVkRmxvdyk7CiAgICB2b2lkIHJl
Z2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChpbnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0
IFN0cmluZyYgZmxvd05hbWUsIGludCBjb250ZW50Tm9kZUlkLCBpbnQgbmV4dENvbnRlbnROb2Rl
SWQpOwogICAgdm9pZCB1bnJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChpbnQgZG9j
dW1lbnROb2RlSWQsIGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIGludCBjb250ZW50Tm9kZUlkKTsK
cHJpdmF0ZToKICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWw7Cn07CgpjbGFzcyBJbnNwZWN0b3JDYW52YXNGcm9udGVuZERpc3BhdGNoZXIgewpw
dWJsaWM6CiAgICBJbnNwZWN0b3JDYW52YXNGcm9udGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KICAgIHZvaWQgY29udGV4
dENyZWF0ZWQoY29uc3QgVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQmIGZyYW1lSWQpOwog
ICAgdm9pZCB0cmFjZUxvZ3NSZW1vdmVkKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFt
ZUlkKiBjb25zdCBmcmFtZUlkLCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lk
KiBjb25zdCB0cmFjZUxvZ0lkKTsKcHJpdmF0ZToKICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Cn07CgpjbGFzcyBJbnNwZWN0b3JDb25zb2xl
RnJvbnRlbmREaXNwYXRjaGVyIHsKcHVibGljOgogICAgSW5zcGVjdG9yQ29uc29sZUZyb250ZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwpIHsgfQogICAgdm9pZCBtZXNzYWdlQWRkZWQoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpOwogICAgdm9pZCBtZXNzYWdlUmVwZWF0Q291
bnRVcGRhdGVkKGludCBjb3VudCk7CiAgICB2b2lkIG1lc3NhZ2VzQ2xlYXJlZCgpOwpwcml2YXRl
OgogICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bDsKfTsKCmNsYXNzIEluc3BlY3RvckRPTUZyb250ZW5kRGlzcGF0Y2hlciB7CnB1YmxpYzoKICAg
IEluc3BlY3RvckRPTUZyb250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChp
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQogICAgdm9pZCBkb2N1bWVudFVwZGF0ZWQoKTsK
ICAgIHZvaWQgc2V0Q2hpbGROb2RlcyhpbnQgcGFyZW50SWQsIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+ID4gbm9kZXMpOwogICAgdm9pZCBhdHRy
aWJ1dGVNb2RpZmllZChpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogICAgdm9pZCBhdHRyaWJ1dGVSZW1vdmVkKGludCBub2RlSWQsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAgICB2b2lkIGlubGluZVN0eWxlSW52YWxpZGF0ZWQoUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8aW50PiA+IG5vZGVJZHMpOwogICAgdm9pZCBjaGFyYWN0ZXJEYXRh
TW9kaWZpZWQoaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJEYXRhKTsKICAgIHZv
aWQgY2hpbGROb2RlQ291bnRVcGRhdGVkKGludCBub2RlSWQsIGludCBjaGlsZE5vZGVDb3VudCk7
CiAgICB2b2lkIGNoaWxkTm9kZUluc2VydGVkKGludCBwYXJlbnROb2RlSWQsIGludCBwcmV2aW91
c05vZGVJZCwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBub2RlKTsKICAgIHZv
aWQgY2hpbGROb2RlUmVtb3ZlZChpbnQgcGFyZW50Tm9kZUlkLCBpbnQgbm9kZUlkKTsKICAgIHZv
aWQgc2hhZG93Um9vdFB1c2hlZChpbnQgaG9zdElkLCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpE
T006Ok5vZGU+IHJvb3QpOwogICAgdm9pZCBzaGFkb3dSb290UG9wcGVkKGludCBob3N0SWQsIGlu
dCByb290SWQpOwpwcml2YXRlOgogICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDsKfTsKCmNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVu
ZERpc3BhdGNoZXIgewpwdWJsaWM6CiAgICBJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNw
YXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkg
eyB9CiAgICB2b2lkIGRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQoUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBzdG9yYWdlSWQpOwogICAgdm9pZCBkb21TdG9yYWdl
SXRlbVJlbW92ZWQoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlk
PiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICAgIHZvaWQgZG9tU3RvcmFnZUl0ZW1B
ZGRlZChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3Jh
Z2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpOwogICAgdm9p
ZCBkb21TdG9yYWdlSXRlbVVwZGF0ZWQoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NU3RvcmFn
ZTo6U3RvcmFnZUlkPiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKTsKcHJpdmF0ZToKICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Cn07CgojaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNo
ZXIgewpwdWJsaWM6CiAgICBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcihJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQogICAgdm9p
ZCBhZGREYXRhYmFzZShQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U+
IGRhdGFiYXNlKTsKcHJpdmF0ZToKICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw7Cn07CgojZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkK
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlciB7CnB1YmxpYzoKICAgIEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCkgeyB9CiAgICB2b2lkIGdsb2JhbE9iamVjdENsZWFyZWQoKTsKICAgIHZvaWQgc2NyaXB0UGFy
c2VkKGNvbnN0IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmIHNjcmlwdElkLCBjb25z
dCBTdHJpbmcmIHVybCwgaW50IHN0YXJ0TGluZSwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZW5kTGlu
ZSwgaW50IGVuZENvbHVtbiwgY29uc3QgYm9vbCogY29uc3QgaXNDb250ZW50U2NyaXB0LCBjb25z
dCBTdHJpbmcqIGNvbnN0IHNvdXJjZU1hcFVSTCwgY29uc3QgYm9vbCogY29uc3QgaGFzU291cmNl
VVJMKTsKICAgIHZvaWQgc2NyaXB0RmFpbGVkVG9QYXJzZShjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGludCBzdGFydExpbmUsIGludCBlcnJvckxpbmUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgIHZvaWQgYnJlYWtwb2ludFJlc29sdmVkKGNv
bnN0IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkJiBicmVha3BvaW50SWQsIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24pOwogICAg
ICAgIC8vIE5hbWVkIGFmdGVyIHBhcmFtZXRlciAncmVhc29uJyB3aGlsZSBnZW5lcmF0aW5nIGNv
bW1hbmQvZXZlbnQgcGF1c2VkLgogICAgICAgIHN0cnVjdCBSZWFzb24gewogICAgICAgICAgICBl
bnVtIEVudW0gewogICAgICAgICAgICAgICAgWEhSID0gNSwKICAgICAgICAgICAgICAgIERPTSA9
IDExNSwKICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgPSAxMTYsCiAgICAgICAgICAgICAg
ICBFeGNlcHRpb24gPSAxMTcsCiAgICAgICAgICAgICAgICBBc3NlcnQgPSA0NSwKICAgICAgICAg
ICAgICAgIENTUFZpb2xhdGlvbiA9IDExOCwKICAgICAgICAgICAgICAgIE90aGVyID0gMzIsCiAg
ICAgICAgICAgIH07CiAgICAgICAgfTsgLy8gc3RydWN0IFJlYXNvbgoKICAgIHZvaWQgcGF1c2Vk
KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2Fs
bEZyYW1lPiA+IGNhbGxGcmFtZXMsIFJlYXNvbjo6RW51bSByZWFzb24sIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgIHZvaWQgcmVzdW1lZCgpOwpwcml2YXRlOgogICAgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKfTsKCiNl
bmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKY2xhc3MgSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyIHsKcHVibGljOgogICAgSW5zcGVjdG9ySGVhcFByb2Zp
bGVyRnJvbnRlbmREaXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCkgeyB9CiAgICB2b2lkIGFkZFByb2ZpbGVIZWFkZXIoUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBoZWFkZXIpOwogICAgdm9p
ZCBhZGRIZWFwU25hcHNob3RDaHVuayhpbnQgdWlkLCBjb25zdCBTdHJpbmcmIGNodW5rKTsKICAg
IHZvaWQgZmluaXNoSGVhcFNuYXBzaG90KGludCB1aWQpOwogICAgdm9pZCByZXNldFByb2ZpbGVz
KCk7CiAgICB2b2lkIHJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKGludCBkb25lLCBpbnQgdG90
YWwpOwpwcml2YXRlOgogICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbDsKfTsKCmNsYXNzIEluc3BlY3Rvckluc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlciB7CnB1YmxpYzoKICAgIEluc3BlY3Rvckluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcihJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQogICAg
dm9pZCBldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGludCB0ZXN0Q2FsbElkLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCk7CiAgICB2b2lkIGluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBvYmplY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBo
aW50cyk7CiAgICB2b2lkIGRldGFjaGVkKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgIHZvaWQg
dGFyZ2V0Q3Jhc2hlZCgpOwpwcml2YXRlOgogICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBt
X2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKfTsKCmNsYXNzIEluc3BlY3RvckxheWVyVHJlZUZy
b250ZW5kRGlzcGF0Y2hlciB7CnB1YmxpYzoKICAgIEluc3BlY3RvckxheWVyVHJlZUZyb250ZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwpIHsgfQogICAgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2UoKTsKcHJpdmF0ZToKICAgIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Cn07CgpjbGFz
cyBJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyIHsKcHVibGljOgogICAgSW5zcGVj
dG9yTmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGlu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQogICAgdm9pZCByZXF1ZXN0V2lsbEJlU2VudChjb25z
dCBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVzdElkJiByZXF1ZXN0SWQsIGNvbnN0IFR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkJiBmcmFtZUlkLCBjb25zdCBUeXBlQnVpbGRlcjo6TmV0
d29yazo6TG9hZGVySWQmIGxvYWRlcklkLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiByZXF1ZXN0LCBkb3VibGUgdGlt
ZXN0YW1wLCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRp
YXRvciwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlZGlyZWN0
UmVzcG9uc2UsIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0qIHR5cGUpOwog
ICAgdm9pZCByZXF1ZXN0U2VydmVkRnJvbUNhY2hlKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpSZXF1ZXN0SWQmIHJlcXVlc3RJZCk7CiAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVxdWVzdElkLCBjb25zdCBUeXBlQnVp
bGRlcjo6TmV0d29yazo6RnJhbWVJZCYgZnJhbWVJZCwgY29uc3QgVHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OkxvYWRlcklkJiBsb2FkZXJJZCwgZG91YmxlIHRpbWVzdGFtcCwgVHlwZUJ1aWxkZXI6OlBh
Z2U6OlJlc291cmNlVHlwZTo6RW51bSB0eXBlLCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpSZXNwb25zZT4gcmVzcG9uc2UpOwogICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgVHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVxdWVzdElkLCBkb3VibGUgdGltZXN0YW1w
LCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgIHZvaWQgbG9hZGlu
Z0ZpbmlzaGVkKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0SWQmIHJlcXVlc3RJ
ZCwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgU3RyaW5nKiBjb25zdCBzb3VyY2VNYXBVUkwpOwog
ICAgdm9pZCBsb2FkaW5nRmFpbGVkKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0
SWQmIHJlcXVlc3RJZCwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgU3RyaW5nJiBlcnJvclRleHQs
IGNvbnN0IGJvb2wqIGNvbnN0IGNhbmNlbGVkKTsKICAgIHZvaWQgcmVxdWVzdFNlcnZlZEZyb21N
ZW1vcnlDYWNoZShjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVzdElkJiByZXF1ZXN0
SWQsIGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkJiBmcmFtZUlkLCBjb25zdCBU
eXBlQnVpbGRlcjo6TmV0d29yazo6TG9hZGVySWQmIGxvYWRlcklkLCBjb25zdCBTdHJpbmcmIGRv
Y3VtZW50VVJMLCBkb3VibGUgdGltZXN0YW1wLCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvciwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29y
azo6Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlKTsKICAgIHZvaWQgd2ViU29ja2V0V2lsbFNlbmRI
YW5kc2hha2VSZXF1ZXN0KGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0SWQmIHJl
cXVlc3RJZCwgZG91YmxlIHRpbWVzdGFtcCwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29y
azo6V2ViU29ja2V0UmVxdWVzdD4gcmVxdWVzdCk7CiAgICB2b2lkIHdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3RJZCYg
cmVxdWVzdElkLCBkb3VibGUgdGltZXN0YW1wLCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpXZWJTb2NrZXRSZXNwb25zZT4gcmVzcG9uc2UpOwogICAgdm9pZCB3ZWJTb2NrZXRDcmVh
dGVkKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0SWQmIHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiB1cmwpOwogICAgdm9pZCB3ZWJTb2NrZXRDbG9zZWQoY29uc3QgVHlwZUJ1aWxk
ZXI6Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVxdWVzdElkLCBkb3VibGUgdGltZXN0YW1wKTsKICAg
IHZvaWQgd2ViU29ja2V0RnJhbWVSZWNlaXZlZChjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6
UmVxdWVzdElkJiByZXF1ZXN0SWQsIGRvdWJsZSB0aW1lc3RhbXAsIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lPiByZXNwb25zZSk7CiAgICB2b2lkIHdlYlNv
Y2tldEZyYW1lRXJyb3IoY29uc3QgVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVx
dWVzdElkLCBkb3VibGUgdGltZXN0YW1wLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAg
ICB2b2lkIHdlYlNvY2tldEZyYW1lU2VudChjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVx
dWVzdElkJiByZXF1ZXN0SWQsIGRvdWJsZSB0aW1lc3RhbXAsIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lPiByZXNwb25zZSk7CnByaXZhdGU6CiAgICBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwp9OwoKY2xh
c3MgSW5zcGVjdG9yUGFnZUZyb250ZW5kRGlzcGF0Y2hlciB7CnB1YmxpYzoKICAgIEluc3BlY3Rv
clBhZ2VGcm9udGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKSB7IH0KICAgIHZvaWQgZG9tQ29udGVudEV2ZW50RmlyZWQoZG91Ymxl
IHRpbWVzdGFtcCk7CiAgICB2b2lkIGxvYWRFdmVudEZpcmVkKGRvdWJsZSB0aW1lc3RhbXApOwog
ICAgdm9pZCBmcmFtZU5hdmlnYXRlZChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZT4gZnJhbWUpOwogICAgdm9pZCBmcmFtZURldGFjaGVkKGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpGcmFtZUlkJiBmcmFtZUlkKTsKICAgIHZvaWQgZnJhbWVTdGFydGVkTG9hZGluZyhjb25z
dCBUeXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCYgZnJhbWVJZCk7CiAgICB2b2lkIGZyYW1l
U3RvcHBlZExvYWRpbmcoY29uc3QgVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQmIGZyYW1l
SWQpOwogICAgdm9pZCBmcmFtZVNjaGVkdWxlZE5hdmlnYXRpb24oY29uc3QgVHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OkZyYW1lSWQmIGZyYW1lSWQsIGRvdWJsZSBkZWxheSk7CiAgICB2b2lkIGZyYW1l
Q2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oY29uc3QgVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZy
YW1lSWQmIGZyYW1lSWQpOwogICAgdm9pZCBqYXZhc2NyaXB0RGlhbG9nT3BlbmluZyhjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgdm9pZCBqYXZhc2NyaXB0RGlhbG9nQ2xvc2VkKCk7CiAgICB2
b2lkIHNjcmlwdHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKTsKcHJpdmF0ZToKICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Cn07CgojaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmNsYXNzIEluc3BlY3RvclByb2ZpbGVyRnJvbnRlbmRE
aXNwYXRjaGVyIHsKcHVibGljOgogICAgSW5zcGVjdG9yUHJvZmlsZXJGcm9udGVuZERpc3BhdGNo
ZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDog
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0K
ICAgIHZvaWQgYWRkUHJvZmlsZUhlYWRlcihQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxl
cjo6UHJvZmlsZUhlYWRlcj4gaGVhZGVyKTsKICAgIHZvaWQgYWRkSGVhcFNuYXBzaG90Q2h1bmso
aW50IHVpZCwgY29uc3QgU3RyaW5nJiBjaHVuayk7CiAgICB2b2lkIGZpbmlzaEhlYXBTbmFwc2hv
dChpbnQgdWlkKTsKICAgIHZvaWQgc2V0UmVjb3JkaW5nUHJvZmlsZShib29sIGlzUHJvZmlsaW5n
KTsKICAgIHZvaWQgcmVzZXRQcm9maWxlcygpOwogICAgdm9pZCByZXBvcnRIZWFwU25hcHNob3RQ
cm9ncmVzcyhpbnQgZG9uZSwgaW50IHRvdGFsKTsKcHJpdmF0ZToKICAgIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Cn07CgojZW5kaWYgLy8gRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmNsYXNzIEluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERp
c3BhdGNoZXIgewpwdWJsaWM6CiAgICBJbnNwZWN0b3JSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVy
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CiAg
ICB2b2lkIGV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkKFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbj4gY29udGV4dCk7CnByaXZhdGU6CiAg
ICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwp9
OwoKY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXIgewpwdWJsaWM6CiAg
ICBJbnNwZWN0b3JUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQogICAgdm9pZCBldmVudFJlY29yZGVk
KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50PiByZWNvcmQp
Owpwcml2YXRlOgogICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKfTsKCiNpZiBFTkFCTEUoV09SS0VSUykKY2xhc3MgSW5zcGVjdG9yV29ya2Vy
RnJvbnRlbmREaXNwYXRjaGVyIHsKcHVibGljOgogICAgSW5zcGVjdG9yV29ya2VyRnJvbnRlbmRE
aXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCkgeyB9CiAgICB2b2lkIHdvcmtlckNyZWF0ZWQoaW50IHdvcmtlcklkLCBjb25zdCBTdHJpbmcm
IHVybCwgYm9vbCBpbnNwZWN0b3JDb25uZWN0ZWQpOwogICAgdm9pZCB3b3JrZXJUZXJtaW5hdGVk
KGludCB3b3JrZXJJZCk7CiAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIoaW50IHdv
cmtlcklkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSk7CiAgICB2b2lkIGRp
c2Nvbm5lY3RlZEZyb21Xb3JrZXIoKTsKcHJpdmF0ZToKICAgIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Cn07CgojZW5kaWYgLy8gRU5BQkxFKFdP
UktFUlMpCgoKI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCgp9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCgojZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yRnJvbnRlbmRfaCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216850</attachid>
            <date>2013-11-13 13:40:55 -0800</date>
            <delta_ts>2013-11-13 13:40:55 -0800</delta_ts>
            <desc>[BOTS] Updated patch for bots</desc>
            <filename>updated.patch</filename>
            <type>text/plain</type>
            <size>171375</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYTNjNmRlLi5hMDAxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjg5
IEBACiAyMDEzLTExLTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0cmFjdCBJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNo
ZXJzIGZyb20gSW5zcGVjdG9yRnJvbnRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNDI0NgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRoaXMgaXMganVzdCByZWZhY3Rvcmlu
ZyB3aXRob3V0IGNoYW5naW5nIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgIFNldCBvZiBjaGFuZ2Vz
IG1hZGU6CisKKyAgICAgICAgICAtIFJlbW92ZSAiY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQiIHRo
YXQgY3VycmVudGx5IGRvZXMgbm90aGluZyBidXQgaG9sZAorICAgICAgICAgICAgc3ViLWZyb250
ZW5kIGRpc3BhdGNoZXIgY2xhc3Nlcy4gQ2F0Y2hlcyBzb21lIHN0YWxlIGNvZGUuCisgICAgICAg
ICAgLSBHZW5lcmF0ZSBpbmRpdmlkdWFsICJjbGFzcyBJbnNwZWN0b3JGb29Gcm9udGVuZERpc3Bh
dGNoZXIiIGNsYXNzZXMgZm9yCisgICAgICAgICAgICBkb21haW5zIHRoYXQgaGF2ZSBldmVudHMu
IENhdGNoZXMgc29tZSB1bm5lY2Vzc2FyeSBjbGFzc2VzLgorICAgICAgICAgIC0gU2ltcGxpZnkg
dGhlIEJhc2UgQWdlbnQgaW50ZXJmYWNlIGZyb20gb3B0aW9uYWwgc2V0L2NsZWFyRnJvbnRlbmQv
cmVnaXN0ZXIKKyAgICAgICAgICAgIHRvIHJlcXVpcmVkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZC93aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZC4KKyAgICAgICAgICAgIE5ldyBhZ2Vu
dHMgbXVzdCBpbXBsZW1lbnQgdGhpcyBhbmQgdGhpcyB3aWxsIGJlIHRoZWlyIGN1ZSB0byBzZXR1
cAorICAgICAgICAgICAgZnJvbnRlbmQgYW5kIGJhY2tlbmQgZGlzcGF0Y2hlcnMuCisgICAgICAg
ICAgLSBCYXNlIEFnZW50IG5vIGxvbmdlciBuZWVkcyB0byBiZSB0ZW1wbGF0ZWQgb3IgaGF2ZSBh
biBJbnRlcmZhY2UgY2xhc3MuCisgICAgICAgICAgLSBXaGlsZSB3ZSBhcmUgY2hhbmdpbmcgc3Vi
Y2xhc3MgQmFzZUFnZW50IHN1cGVyY2xhc3MgY2FsbHMsIHVzZSBBU0NJSUxpdGVyYWwKKyAgICAg
ICAgICAtIEluIGFnZW50cyB3aXRoIGV2ZW50cywgY29udmVydCAiSW5zcGVjdG9yRnJvbnRlbmQ6
OkZvbyogbV9mcm9udGVuZCIgdG8KKyAgICAgICAgICAgICJ1bmlxdWVfcHRyPEluc3BlY3RvckZv
b0Zyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXIiIGFuZAorICAgICAgICAg
ICAgdXBkYXRlIHVzZXMgYXMgYXBwcm9wcmlhdGUgd2l0aGluIHRoZSBjbGFzc2VzLgorICAgICAg
ICAgIC0gSW4gYWdlbnRzIHdpdGggZXZlbnRzLCBjcmVhdGUgZGlzcGF0Y2hlcnMgaW4gZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kCisgICAgICAgICAgICBhbmQgY2xlYXIgdGhlbSBpbiB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZC4KKworICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yLnB5OgorICAgICAgICAoR2VuZXJhdG9yKToKKyAgICAgICAgKEdlbmVy
YXRvci5nbyk6CisgICAgICAgIChHZW5lcmF0b3IucHJvY2Vzc19ldmVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5OgorICAgICAgICAoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OnVwZGF0ZVJlcGVhdENvdW50SW5D
b25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpJbnNw
ZWN0b3JBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpldmFs
dWF0ZUZvclRlc3RJbkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50
OjppbnNwZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpoYXNGcm9udGVuZCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckFnZW50UmVnaXN0cnk6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50Ojp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckJhc2VBZ2VudDo6ZGlzY2FyZEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckJhc2VBZ2VudDo6SW5zcGVjdG9yQmFzZUFnZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRG
bG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp3aWxsUmVtb3ZlTmFt
ZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpyZWdpb25MYXlv
dXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpyZWdpb25P
dmVyc2V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlk
UmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnN0eWxlU2hlZXRDaGFu
Z2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50
Ojpub3RpZnlSZW5kZXJpbmdDb250ZXh0V2FzV3JhcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6ZmluZEZyYW1lc1dpdGhVbmluc3RydW1lbnRlZENhbnZhc2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpmcmFtZU5hdmlnYXRl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
c29sZUFnZW50OjpkaWRGaW5pc2hYSFJMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpj
bG9zZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0Zyb250ZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXREb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhU
b0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpmb2N1c05v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Om1haW5GcmFtZURPTUNv
bnRlbnRMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENv
bW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2Vy
dERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92
ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlm
eURPTUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92
ZURPTUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnN0eWxlQXR0
cmlidXRlSW52YWxpZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmNoYXJhY3RlckRhdGFNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6ZGlkUHVzaFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OndpbGxQb3BTaGFkb3dSb290KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRJ
bnZhbGlkYXRlU3R5bGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxNb2RpZnlET01BdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnBhdXNlT25OYXRpdmVFdmVudElm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Ondp
bGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Oklu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlz
cGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRPcGVu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmFkZE1lc3NhZ2VUb0Nv
bnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1
bGVQYXVzZU9uTmV4dFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1ApOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZmFpbGVkVG9QYXJzZVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJCcmVha0RldGFpbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzZXQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVu
ZFByb2ZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRIZWFwU25hcHNo
b3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnRha2VI
ZWFwU25hcHNob3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
cklucHV0QWdlbnQ6Okluc3BlY3RvcklucHV0QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5wdXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvcklucHV0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9y
eUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ2xlYXJX
aW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZG9tQ29udGVudEV2ZW50RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50Ojpsb2FkRXZlbnRGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OmZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VB
Z2VudDo6ZnJhbWVEZXRhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6OmZyYW1lU3RhcnRlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpmcmFtZVN0b3BwZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6ZnJhbWVTY2hlZHVsZWROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxSdW5KYXZhU2NyaXB0RGlh
bG9nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUnVuSmF2YVNj
cmlwdERpYWxvZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNjcmlw
dHNFbmFibGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjphZGRQcm9maWxlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGVGaW5p
c2hlZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldEhlYXBTbmFwc2hvdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldEZyb250ZW5kUHJvZmlsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6dG9nZ2xlUmVjb3JkQnV0dG9uKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bWFy
a1Jlc291cmNlQXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZVdlYlNv
Y2tldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2Vu
ZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENsb3NlV2ViU29ja2V0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVX
ZWJTb2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnNlbmRFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OldvcmtlckZyb250ZW5kQ2hhbm5lbDo6
V29ya2VyRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldvcmtl
ckFnZW50OjpXb3JrZXJGcm9udGVuZENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3Rvcldvcmtl
ckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2Vy
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvcldvcmtlckFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29y
a2VyQWdlbnQ6OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yV29ya2VyQWdlbnQ6Ondvcmtlckdsb2JhbFNjb3BlVGVybWluYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6Y3JlYXRlV29ya2VyRnJvbnRlbmRD
aGFubmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVNYWluV29y
bGRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0
ZUlzb2xhdGVkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50Ojpu
b3RpZnlDb250ZXh0Q3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9u
dGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0Zyb250ZW5k
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvSW5wdXQuanNvbjoKKworMjAxMy0xMS0x
MyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFNwbGl0IEluc3BlY3Rvci5qc29uIGludG8gaW5kaXZpZHVhbCBkb21haW4ganNv
biBmaWxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI0MDk4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkKaW5kZXggYzJhY2IzZC4uYjNiNGM3NiAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTE3MjMsNyArMTcy
Myw4IEBAIGNsYXNzIFRlbXBsYXRlczoKICAgICAgICAgcmV0dXJuICIvIi5qb2luKGNvbXBvbmVu
dHMpCiAKICAgICBmaWxlX2hlYWRlcl8gPSAoIi8vIEZpbGUgaXMgZ2VuZXJhdGVkIGJ5ICVzXG5c
biIgJSBnZXRfdGhpc19zY3JpcHRfcGF0aF8oc3lzLmFyZ3ZbMF0pICsKLSIiIi8vIENvcHlyaWdo
dCAoYykgMjAxMSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyIi
Ii8vIENvcHlyaWdodCAoYykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgog
IiIiKQpAQCAtMTgyMCw3ICsxODIxLDYgQEAgZGVmIGZvcm1hdF9zZXR0ZXJfdmFsdWVfZXhwcmVz
c2lvbihwYXJhbV90eXBlX2JpbmRpbmcsIHZhbHVlX3JlZik6CiAgICAgICAgIHJldHVybiB2YWx1
ZV9yZWYKIAogY2xhc3MgR2VuZXJhdG9yOgotICAgIGZyb250ZW5kX2NsYXNzX2ZpZWxkX2xpbmVz
ID0gW10KICAgICBmcm9udGVuZF9kb21haW5fY2xhc3NfbGluZXMgPSBbXQogCiAgICAgbWV0aG9k
X25hbWVfZW51bV9saXN0ID0gW10KQEAgLTE4MzYsNyArMTgzNiw2IEBAIGNsYXNzIEdlbmVyYXRv
cjoKICAgICBiYWNrZW5kX3NldHRlcnNfbGlzdCA9IFtdCiAgICAgYmFja2VuZF9jb25zdHJ1Y3Rv
cl9pbml0X2xpc3QgPSBbXQogICAgIGJhY2tlbmRfZmllbGRfbGlzdCA9IFtdCi0gICAgZnJvbnRl
bmRfY29uc3RydWN0b3JfaW5pdF9saXN0ID0gW10KICAgICB0eXBlX2J1aWxkZXJfZnJhZ21lbnRz
ID0gW10KICAgICB0eXBlX2J1aWxkZXJfZm9yd2FyZHMgPSBbXQogICAgIHZhbGlkYXRvcl9pbXBs
X2xpc3QgPSBbXQpAQCAtMTg1MiwxMCArMTg1MSw2IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX21ldGhvZF9pbXBsZW1lbnRhdGlvbl9saXN0LAogICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfbWV0aG9kX25hbWVfZGVjbGFyYXRpb25fbGlzdCwK
ICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LAotICAg
ICAgICAgICAgR2VuZXJhdG9yLmZyb250ZW5kX2NsYXNzX2ZpZWxkX2xpbmVzLAotICAgICAgICAg
ICAgR2VuZXJhdG9yLmZyb250ZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdCwKLSAgICAgICAgICAg
IEdlbmVyYXRvci5mcm9udGVuZF9kb21haW5fY2xhc3NfbGluZXMsCi0gICAgICAgICAgICBHZW5l
cmF0b3IuZnJvbnRlbmRfbWV0aG9kX2xpc3QsCiAgICAgICAgICAgICBHZW5lcmF0b3IubWV0aG9k
X2hhbmRsZXJfbGlzdCwKICAgICAgICAgICAgIEdlbmVyYXRvci5tZXRob2RfbmFtZV9lbnVtX2xp
c3QsCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3Qs
CkBAIC0xODk3LDE3ICsxODkyLDIwIEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvci5wcm9jZXNzX2VudW0oanNvbl9wcm9wZXJ0
eSwgZW51bV9uYW1lKQogCiAgICAgICAgICAgICBpZiAiZXZlbnRzIiBpbiBqc29uX2RvbWFpbjoK
KyAgICAgICAgICAgICAgICBpZiBkb21haW5fZ3VhcmQ6CisgICAgICAgICAgICAgICAgICAgIGRv
bWFpbl9ndWFyZC5nZW5lcmF0ZV9vcGVuKEdlbmVyYXRvci5mcm9udGVuZF9tZXRob2RfbGlzdCkK
KyAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1YXJkLmdlbmVyYXRlX29wZW4oR2VuZXJhdG9y
LmZyb250ZW5kX2RvbWFpbl9jbGFzc19saW5lcykKKwogICAgICAgICAgICAgICAgIGZvciBqc29u
X2V2ZW50IGluIGpzb25fZG9tYWluWyJldmVudHMiXToKICAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdG9yLnByb2Nlc3NfZXZlbnQoanNvbl9ldmVudCwgZG9tYWluX25hbWUsIGZyb250ZW5kX21l
dGhvZF9kZWNsYXJhdGlvbl9saW5lcykKIAotICAgICAgICAgICAgR2VuZXJhdG9yLmZyb250ZW5k
X2NsYXNzX2ZpZWxkX2xpbmVzLmFwcGVuZCgiICAgICVzIG1fJXM7XG4iICUgKGRvbWFpbl9uYW1l
LCBkb21haW5fbmFtZV9sb3dlcikpCi0gICAgICAgICAgICBpZiBHZW5lcmF0b3IuZnJvbnRlbmRf
Y29uc3RydWN0b3JfaW5pdF9saXN0OgotICAgICAgICAgICAgICAgIEdlbmVyYXRvci5mcm9udGVu
ZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QuYXBwZW5kKCIgICAgLCAiKQotICAgICAgICAgICAgR2Vu
ZXJhdG9yLmZyb250ZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdC5hcHBlbmQoIm1fJXMoaW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKVxuIiAlIGRvbWFpbl9uYW1lX2xvd2VyKQotICAgICAgICAgICAg
R2VuZXJhdG9yLmZyb250ZW5kX2RvbWFpbl9jbGFzc19saW5lcy5hcHBlbmQoVGVtcGxhdGVzLmZy
b250ZW5kX2RvbWFpbl9jbGFzcy5zdWJzdGl0dXRlKE5vbmUsCi0gICAgICAgICAgICAgICAgZG9t
YWluQ2xhc3NOYW1lPWRvbWFpbl9uYW1lLAotICAgICAgICAgICAgICAgIGRvbWFpbkZpZWxkTmFt
ZT1kb21haW5fbmFtZV9sb3dlciwKLSAgICAgICAgICAgICAgICBmcm9udGVuZERvbWFpbk1ldGhv
ZERlY2xhcmF0aW9ucz0iIi5qb2luKGZsYXR0ZW5fbGlzdChmcm9udGVuZF9tZXRob2RfZGVjbGFy
YXRpb25fbGluZXMpKSkpCisgICAgICAgICAgICAgICAgR2VuZXJhdG9yLmZyb250ZW5kX2RvbWFp
bl9jbGFzc19saW5lcy5hcHBlbmQoVGVtcGxhdGVzLmZyb250ZW5kX2RvbWFpbl9jbGFzcy5zdWJz
dGl0dXRlKE5vbmUsCisgICAgICAgICAgICAgICAgICAgIGRvbWFpbkNsYXNzTmFtZT0iSW5zcGVj
dG9yJXNGcm9udGVuZERpc3BhdGNoZXIiICUgZG9tYWluX25hbWUsCisgICAgICAgICAgICAgICAg
ICAgIGZyb250ZW5kRG9tYWluTWV0aG9kRGVjbGFyYXRpb25zPSIiLmpvaW4oZmxhdHRlbl9saXN0
KGZyb250ZW5kX21ldGhvZF9kZWNsYXJhdGlvbl9saW5lcykpKSkKKworICAgICAgICAgICAgICAg
IGlmIGRvbWFpbl9ndWFyZDoKKyAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1YXJkLmdlbmVy
YXRlX2Nsb3NlKEdlbmVyYXRvci5mcm9udGVuZF9tZXRob2RfbGlzdCkKKyAgICAgICAgICAgICAg
ICAgICAgZG9tYWluX2d1YXJkLmdlbmVyYXRlX2Nsb3NlKEdlbmVyYXRvci5mcm9udGVuZF9kb21h
aW5fY2xhc3NfbGluZXMpCiAKICAgICAgICAgICAgIGFnZW50X2ludGVyZmFjZV9uYW1lID0gQ2Fw
aXRhbGl6ZXIubG93ZXJfY2FtZWxfY2FzZV90b191cHBlcihkb21haW5fbmFtZSkgKyAiQ29tbWFu
ZEhhbmRsZXIiCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2Vf
bGlzdC5hcHBlbmQoIiAgICBjbGFzcyAlcyB7XG4iICUgYWdlbnRfaW50ZXJmYWNlX25hbWUpCkBA
IC0xOTYxLDcgKzE5NTksNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICAgICAgYmFj
a2VuZF9qc19ldmVudF9wYXJhbV9saXN0LmFwcGVuZCgiXCIlc1wiIiAlIHBhcmFtZXRlcl9uYW1l
KQogCiAgICAgICAgIGZyb250ZW5kX21ldGhvZF9kZWNsYXJhdGlvbl9saW5lcy5hcHBlbmQoCi0g
ICAgICAgICAgICAiICAgICAgICB2b2lkICVzKCVzKTtcbiIgJSAoZXZlbnRfbmFtZSwgIiwgIi5q
b2luKGRlY2xfcGFyYW1ldGVyX2xpc3QpKSkKKyAgICAgICAgICAgICIgICAgdm9pZCAlcyglcyk7
XG4iICUgKGV2ZW50X25hbWUsICIsICIuam9pbihkZWNsX3BhcmFtZXRlcl9saXN0KSkpCiAKICAg
ICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfanNfZG9tYWluX2luaXRpYWxpemVyX2xpc3QuYXBwZW5k
KCJJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRXZlbnQoXCIlcy4lc1wiLCBbJXNdKTtcbiIgJSAo
CiAgICAgICAgICAgICBkb21haW5fbmFtZSwgZXZlbnRfbmFtZSwgIiwgIi5qb2luKGJhY2tlbmRf
anNfZXZlbnRfcGFyYW1fbGlzdCkpKQpAQCAtMjM5MSwxMSArMjM4OSw5IEBAIGJhY2tlbmRfY3Bw
X2ZpbGUud3JpdGUoVGVtcGxhdGVzLmJhY2tlbmRfY3BwLnN1YnN0aXR1dGUoTm9uZSwKICAgICBt
ZXNzYWdlSGFuZGxlcnM9IlxuIi5qb2luKEdlbmVyYXRvci5tZXRob2RfaGFuZGxlcl9saXN0KSkp
CiAKIGZyb250ZW5kX2hfZmlsZS53cml0ZShUZW1wbGF0ZXMuZnJvbnRlbmRfaC5zdWJzdGl0dXRl
KE5vbmUsCi0gICAgZmllbGREZWNsYXJhdGlvbnM9IiIuam9pbihHZW5lcmF0b3IuZnJvbnRlbmRf
Y2xhc3NfZmllbGRfbGluZXMpLAogICAgIGRvbWFpbkNsYXNzTGlzdD0iIi5qb2luKEdlbmVyYXRv
ci5mcm9udGVuZF9kb21haW5fY2xhc3NfbGluZXMpKSkKIAogZnJvbnRlbmRfY3BwX2ZpbGUud3Jp
dGUoVGVtcGxhdGVzLmZyb250ZW5kX2NwcC5zdWJzdGl0dXRlKE5vbmUsCi0gICAgY29uc3RydWN0
b3JJbml0PSIiLmpvaW4oR2VuZXJhdG9yLmZyb250ZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdCks
CiAgICAgbWV0aG9kcz0iXG4iLmpvaW4oR2VuZXJhdG9yLmZyb250ZW5kX21ldGhvZF9saXN0KSkp
CiAKIHR5cGVidWlsZGVyX2hfZmlsZS53cml0ZShUZW1wbGF0ZXMudHlwZWJ1aWxkZXJfaC5zdWJz
dGl0dXRlKE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdl
bmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkKaW5kZXggZWQ4ZWVjNC4uOTc1NGUwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JT
dHJpbmdzLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yU3RyaW5ncy5weQpAQCAtMjYsMTkgKzI2LDE2IEBACiAjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCi0jIFRIaXMgZmlsZSBjb250YWlucyBzdHJpbmcgcmVzb3VyY2VzIGZvciBD
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLgorIyBUaGlzIGZpbGUgY29udGFpbnMgc3RyaW5nIHJlc291
cmNlcyBmb3IgQ29kZUdlbmVyYXRvckluc3BlY3Rvci4KICMgSXRzIHN5bnRheCBpcyBhIFB5dGhv
biBzeW50YXggc3Vic2V0LCBzdWl0YWJsZSBmb3IgbWFudWFsIHBhcnNpbmcuCiAKIGZyb250ZW5k
X2RvbWFpbl9jbGFzcyA9ICgKLSIiIiAgICBjbGFzcyAkZG9tYWluQ2xhc3NOYW1lIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgICRkb21haW5DbGFzc05hbWUoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwo
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KLSR7ZnJvbnRlbmREb21haW5NZXRob2REZWNs
YXJhdGlvbnN9Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotICAgIH07Ci0KLSAgICAkZG9tYWluQ2xh
c3NOYW1lKiAkZG9tYWluRmllbGROYW1lKCkgeyByZXR1cm4gJm1fJGRvbWFpbkZpZWxkTmFtZTsg
fQorIiIiY2xhc3MgJGRvbWFpbkNsYXNzTmFtZSB7CitwdWJsaWM6CisgICAgJGRvbWFpbkNsYXNz
TmFtZShJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkg
OiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsg
fQorJHtmcm9udGVuZERvbWFpbk1ldGhvZERlY2xhcmF0aW9uc31wcml2YXRlOgorICAgIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Cit9OwogCiAi
IiIpCiAKQEAgLTYyLDcgKzU5LDcgQEAgJHtyZXNwb25zZUNvb2t9CiB9CiAiIiIpCiAKLWZyb250
ZW5kX21ldGhvZCA9ICgiIiJ2b2lkIEluc3BlY3RvckZyb250ZW5kOjokZG9tYWluTmFtZTo6JGV2
ZW50TmFtZSgkcGFyYW1ldGVycykKK2Zyb250ZW5kX21ldGhvZCA9ICgiIiJ2b2lkIEluc3BlY3Rv
ciR7ZG9tYWluTmFtZX1Gcm9udGVuZERpc3BhdGNoZXI6OiRldmVudE5hbWUoJHBhcmFtZXRlcnMp
CiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoIm1ldGhvZCIsICIk
ZG9tYWluTmFtZS4kZXZlbnROYW1lIik7CkBAIC05NCwyNyArOTEsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAKLS8vIEJvdGggSW5z
cGVjdG9yT2JqZWN0IGFuZCBJbnNwZWN0b3JBcnJheSBtYXkgb3IgbWF5IG5vdCBiZSBkZWNsYXJl
ZCBhdCB0aGlzIHBvaW50IGFzIGRlZmluZWQgYnkgRU5BQkxFRF9JTlNQRUNUT1IuCi0vLyBEb3Vi
bGUtY2hlY2sgd2UgaGF2ZSB0aGVtIGF0IGxlYXN0IGFzIGZvcndhcmQgZGVjbGFyYXRpb24uCi1j
bGFzcyBJbnNwZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLQotdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1jbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZCB7Ci1wdWJsaWM6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKik7Ci0KLQogJGRvbWFpbkNsYXNzTGlzdAotcHJpdmF0ZToKLSR7Zmll
bGREZWNsYXJhdGlvbnN9fTsKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZyb250ZW5k
X2gpCiAiIiIpCiAKQEAgLTIwNSwxMiArMTg5LDExIEBAIGJhY2tlbmRfY3BwID0gKAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OTMsMjIgKzQ3NiwxNyBAQCBmcm9udGVuZF9j
cHAgPSAoCiAiIiIKIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIAogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3RvckZyb250ZW5kOjpJbnNw
ZWN0b3JGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCkKLSAgICA6ICRjb25zdHJ1Y3RvckluaXR7Ci19Ci0KICRtZXRob2RzCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwCmluZGV4IDkxMzRiN2YuLjBjOTcwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIklkZW50
aWZpZXJzRmFjdG9yeS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKQEAgLTE4OCw3ICsxODcsNyBAQCBzdGF0
aWMgVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RW51bSBtZXNz
YWdlTGV2ZWxWYWx1ZShNZXNzYQogICAgIHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CiB9CiAKLXZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRv
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQ6OkNvbnNvbGUqIGZyb250ZW5kLCBJbmplY3RlZFNj
cmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVByZXZpZXcp
Cit2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckNvbnNvbGVGcm9u
dGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluamVjdGVkU2NyaXB0
TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmlldykKIHsK
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2Jq
ID0gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpjcmVhdGUoKQogICAgICAg
ICAuc2V0U291cmNlKG1lc3NhZ2VTb3VyY2VWYWx1ZShtX3NvdXJjZSkpCkBAIC0yMzAsMTIgKzIy
OSwxMiBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250
ZW5kOjpDb25zb2xlKiBmcm9udGVuZCwgSW5qZWN0ZQogICAgIH0KICAgICBpZiAobV9jYWxsU3Rh
Y2spCiAgICAgICAgIGpzb25PYmotPnNldFN0YWNrVHJhY2UobV9jYWxsU3RhY2stPmJ1aWxkSW5z
cGVjdG9yQXJyYXkoKSk7Ci0gICAgZnJvbnRlbmQtPm1lc3NhZ2VBZGRlZChqc29uT2JqKTsKKyAg
ICBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLT5tZXNzYWdlQWRkZWQoanNvbk9iaik7CiB9CiAK
LXZvaWQgQ29uc29sZU1lc3NhZ2U6OnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3Rv
ckZyb250ZW5kOjpDb25zb2xlKiBmcm9udGVuZCkKK3ZvaWQgQ29uc29sZU1lc3NhZ2U6OnVwZGF0
ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIq
IGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIpCiB7Ci0gICAgZnJvbnRlbmQtPm1lc3NhZ2VSZXBl
YXRDb3VudFVwZGF0ZWQobV9yZXBlYXRDb3VudCk7CisgICAgY29uc29sZUZyb250ZW5kRGlzcGF0
Y2hlci0+bWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZChtX3JlcGVhdENvdW50KTsKIH0KIAogYm9v
bCBDb25zb2xlTWVzc2FnZTo6aXNFcXVhbChDb25zb2xlTWVzc2FnZSogbXNnKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCBjYjI2ZGEwOS4uMDdm
ODhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKQEAgLTQy
LDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3c7CiBjbGFz
cyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNz
IEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENh
bGxGcmFtZTsKQEAgLTU4LDggKzU3LDggQEAgcHVibGljOgogICAgIENvbnNvbGVNZXNzYWdlKGJv
b2wgY2FuR2VuZXJhdGVDYWxsU3RhY2ssIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNz
YWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVu
dHM+LCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAw
KTsKICAgICB+Q29uc29sZU1lc3NhZ2UoKTsKIAotICAgIHZvaWQgYWRkVG9Gcm9udGVuZChJbnNw
ZWN0b3JGcm9udGVuZDo6Q29uc29sZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIGJvb2wgZ2Vu
ZXJhdGVQcmV2aWV3KTsKLSAgICB2b2lkIHVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3Bl
Y3RvckZyb250ZW5kOjpDb25zb2xlKik7CisgICAgdm9pZCBhZGRUb0Zyb250ZW5kKEluc3BlY3Rv
ckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBib29s
IGdlbmVyYXRlUHJldmlldyk7CisgICAgdm9pZCB1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShJ
bnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKik7CiAgICAgdm9pZCBpbmNyZW1lbnRD
b3VudCgpIHsgKyttX3JlcGVhdENvdW50OyB9CiAgICAgYm9vbCBpc0VxdWFsKENvbnNvbGVNZXNz
YWdlKiBtc2cpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmgKaW5kZXggYjkxMWVkMC4uNGE4NDE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtNDYsNyArNDYsNiBAQCBjbGFzcyBJ
bnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsKIGNsYXNz
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Owot
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJ
bnNwZWN0b3JWYWx1ZTsKIGNsYXNzIE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcAppbmRleCBhNWMwMTAyLi40ZWFkZGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTU4LDkgKzU4LDggQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBh
Z2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFn
ZW50PEluc3BlY3RvckFnZW50PigiSW5zcGVjdG9yIiwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAg
ICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkluc3BlY3RvciIpLCBpbnN0cnVt
ZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCi0gICAgLCBtX2Zyb250
ZW5kKDApCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFn
ZXIpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7CkBAIC05NCwxNSArOTMsMTcgQEAgdm9pZCBJ
bnNwZWN0b3JBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwg
RE9NV3JhcHBlcldvcmxkJgogICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KHNjcmlw
dFNvdXJjZS50b1N0cmluZygpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6c2V0RnJvbnRl
bmQoSW5zcGVjdG9yRnJvbnRlbmQqIGluc3BlY3RvckZyb250ZW5kKQordm9pZCBJbnNwZWN0b3JB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZCA9IGluc3BlY3RvckZyb250ZW5kOworICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbnNwZWN0b3JG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgYmFja2VuZERpc3BhdGNo
ZXItPnJlZ2lzdGVyQWdlbnQodGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OmNsZWFy
RnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoKQogeworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKKwogICAgIG1f
cGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmNsZWFyKCk7Ci0gICAgbV9mcm9udGVuZCA9IDA7
CiAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKTsK
ICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBkaXNhYmxlKCZlcnJvcik7CkBAIC0xMjAsOCAr
MTIxLDggQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKICAgICBp
ZiAobV9wZW5kaW5nSW5zcGVjdERhdGEuZmlyc3QpCiAgICAgICAgIGluc3BlY3QobV9wZW5kaW5n
SW5zcGVjdERhdGEuZmlyc3QsIG1fcGVuZGluZ0luc3BlY3REYXRhLnNlY29uZCk7CiAKLSAgICBm
b3IgKFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4+OjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ0V2
YWx1YXRlVGVzdENvbW1hbmRzLmJlZ2luKCk7IG1fZnJvbnRlbmQgJiYgaXQgIT0gbV9wZW5kaW5n
RXZhbHVhdGVUZXN0Q29tbWFuZHMuZW5kKCk7ICsraXQpCi0gICAgICAgIG1fZnJvbnRlbmQtPmlu
c3BlY3RvcigpLT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKHN0YXRpY19jYXN0PGludD4oKCpp
dCkuZmlyc3QpLCAoKml0KS5zZWNvbmQpOworICAgIGZvciAoVmVjdG9yPHBhaXI8bG9uZywgU3Ry
aW5nPj46Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuYmVnaW4o
KTsgbV9mcm9udGVuZERpc3BhdGNoZXIgJiYgaXQgIT0gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29t
bWFuZHMuZW5kKCk7ICsraXQpCisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5ldmFsdWF0
ZUZvclRlc3RJbkZyb250ZW5kKHN0YXRpY19jYXN0PGludD4oKCppdCkuZmlyc3QpLCAoKml0KS5z
ZWNvbmQpOwogICAgIG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmNsZWFyKCk7CiB9CiAK
QEAgLTEzNyw4ICsxMzgsOCBAQCB2b2lkIEluc3BlY3RvckFnZW50Ojpkb21Db250ZW50TG9hZGVk
RXZlbnRGaXJlZCgpCiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQogewotICAgIGlmIChtX2Vu
YWJsZWQgJiYgbV9mcm9udGVuZCkKLSAgICAgICAgbV9mcm9udGVuZC0+aW5zcGVjdG9yKCktPmV2
YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoc3RhdGljX2Nhc3Q8aW50PihjYWxsSWQpLCBzY3JpcHQp
OworICAgIGlmIChtX2VuYWJsZWQgJiYgbV9mcm9udGVuZERpc3BhdGNoZXIpCisgICAgICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKHN0YXRpY19jYXN0
PGludD4oY2FsbElkKSwgc2NyaXB0KTsKICAgICBlbHNlCiAgICAgICAgIG1fcGVuZGluZ0V2YWx1
YXRlVGVzdENvbW1hbmRzLmFwcGVuZChwYWlyPGxvbmcsIFN0cmluZz4oY2FsbElkLCBzY3JpcHQp
KTsKIH0KQEAgLTE1MCw4ICsxNTEsOCBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpzZXRJbmplY3Rl
ZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaQogCiB2b2lk
IEluc3BlY3RvckFnZW50OjppbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gaGludHMpCiB7Ci0gICAgaWYgKG1fZW5hYmxlZCAmJiBtX2Zyb250ZW5kKSB7Ci0gICAgICAg
IG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5pbnNwZWN0KG9iamVjdFRvSW5zcGVjdCwgaGludHMp
OworICAgIGlmIChtX2VuYWJsZWQgJiYgbV9mcm9udGVuZERpc3BhdGNoZXIpIHsKKyAgICAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmluc3BlY3Qob2JqZWN0VG9JbnNwZWN0LCBoaW50cyk7CiAg
ICAgICAgIG1fcGVuZGluZ0luc3BlY3REYXRhLmZpcnN0ID0gMDsKICAgICAgICAgbV9wZW5kaW5n
SW5zcGVjdERhdGEuc2Vjb25kID0gMDsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCAyOGUzZThkLi5mOGYzYjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtNDMsNyArNDMsNyBAQCBj
bGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1l
OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7
CitjbGFzcyBJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgVVJMOwpAQCAt
NTEsNyArNTEsNyBAQCBjbGFzcyBQYWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsK
IAotY2xhc3MgSW5zcGVjdG9yQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3Bl
Y3RvckFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JD
b21tYW5kSGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JC
YXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yQ29t
bWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFnZW50KTsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JBZ2VudD4gY3JlYXRlKFBh
Z2UqIHBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQpAQCAtNzAsMTcgKzcwLDE1
IEBAIHB1YmxpYzoKICAgICBVUkwgaW5zcGVjdGVkVVJMKCkgY29uc3Q7CiAgICAgVVJMIGluc3Bl
Y3RlZFVSTFdpdGhvdXRGcmFnbWVudCgpIGNvbnN0OwogCi0gICAgSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9mcm9udGVuZDsgfQotCi0gICAgdmlydHVhbCB2
b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7Ci0gICAgdmlydHVhbCB2b2lkIGNs
ZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChG
cmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAg
ICAgdm9pZCBkb21Db250ZW50TG9hZGVkRXZlbnRGaXJlZCgpOwogCi0gICAgYm9vbCBoYXNGcm9u
dGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRlbmQ7IH0KKyAgICBib29sIGhhc0Zyb250ZW5k
KCkgY29uc3QgeyByZXR1cm4gISFtX2Zyb250ZW5kRGlzcGF0Y2hlcjsgfQogCiAgICAgLy8gR2Vu
ZXJpYyBjb2RlIGNhbGxlZCBmcm9tIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMuCiAgICAgdm9pZCBl
dmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgdGVzdENhbGxJZCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQpOwpAQCAtOTMsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KFBh
Z2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAKICAg
ICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRl
bmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvckluc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKIAogICAgIFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4+
IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCmluZGV4IDYwZWQ0NjMuLjA5OWQx
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5jcHAKQEAgLTMyLDI3ICszMiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9y
QmFzZUFnZW50SW50ZXJmYWNlPiBhZ2VudCkKK3ZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6
YXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50PiBhZ2VudCkKIHsKICAgICBtX2Fn
ZW50cy5hcHBlbmQoYWdlbnQpOwogfQogCi12b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OnNl
dEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FnZW50cy5z
aXplKCk7IGkrKykKLSAgICAgICAgbV9hZ2VudHNbaV0tPnNldEZyb250ZW5kKGZyb250ZW5kKTsK
KyAgICAgICAgbV9hZ2VudHNbaV0tPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVu
ZENoYW5uZWwsIGJhY2tlbmREaXNwYXRjaGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6d2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9hZ2VudHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fYWdlbnRzW2ldLT5jbGVhckZyb250
ZW5kKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6cmVnaXN0ZXJJbkRpc3Bh
dGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpCi17Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2FnZW50cy5zaXplKCk7IGkrKykKLSAgICAgICAgbV9hZ2Vu
dHNbaV0tPnJlZ2lzdGVySW5EaXNwYXRjaGVyKGRpc3BhdGNoZXIpOworICAgICAgICBtX2FnZW50
c1tpXS0+d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5OjpkaXNjYXJkQWdlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCmluZGV4IDYwOTJlMTguLjRmZDAzNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaApAQCAtMzQsMTkgKzM0LDE3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAKIGNs
YXNzIEluc3BlY3RvckFnZW50UmVnaXN0cnkgewogcHVibGljOgotICAgIHZvaWQgYXBwZW5kKFBh
c3NPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlPik7CisgICAgdm9pZCBhcHBlbmQo
UGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKIAotICAgIHZvaWQgc2V0RnJvbnRlbmQo
SW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKLSAgICB2b2lk
IHJlZ2lzdGVySW5EaXNwYXRjaGVyKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKik7CisgICAg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKCk7CiAgICAgdm9pZCBkaXNjYXJkQWdlbnRzKCk7CiAKIHByaXZhdGU6
Ci0gICAgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U+PiBtX2FnZW50
czsKKyAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4+IG1fYWdlbnRzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCAyMzQ3
OGZjLi43NWYyNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDUsMjEgKzQ1LDIyIEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5z
cGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4oQVNDSUlMaXRl
cmFsKCJBcHBsaWNhdGlvbkNhY2hlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNw
ZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbkNhY2hlIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCi0gICAgLCBtX2Zyb250
ZW5kKDApCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpzZXRG
cm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit2b2lkIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZCA9IGZyb250ZW5kLT5hcHBs
aWNhdGlvbmNhY2hlKCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CisgICAgYmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyQWdlbnQodGhpcyk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpjbGVhckZyb250ZW5kKCkK
K3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCgpCiB7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOworCiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQoMCk7Ci0gICAgbV9mcm9udGVuZCA9IDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQpAQCAtODEsMTMgKzgyLDEzIEBAIHZv
aWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp1cGRhdGVBcHBsaWNhdGlvbkNhY2hl
U3RhdHVzKEZyYW1lKiBmcmFtZSkKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZv
IGluZm8gPSBob3N0LT5hcHBsaWNhdGlvbkNhY2hlSW5mbygpOwogCiAgICAgU3RyaW5nIG1hbmlm
ZXN0VVJMID0gaW5mby5tX21hbmlmZXN0LnN0cmluZygpOwotICAgIG1fZnJvbnRlbmQtPmFwcGxp
Y2F0aW9uQ2FjaGVTdGF0dXNVcGRhdGVkKG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKSwgbWFu
aWZlc3RVUkwsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7CisgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPmFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNVcGRhdGVkKG1fcGFnZUFnZW50LT5mcmFtZUlk
KGZyYW1lKSwgbWFuaWZlc3RVUkwsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkK
IHsKICAgICBib29sIGlzTm93T25saW5lID0gbmV0d29ya1N0YXRlTm90aWZpZXIoKS5vbkxpbmUo
KTsKLSAgICBtX2Zyb250ZW5kLT5uZXR3b3JrU3RhdGVVcGRhdGVkKGlzTm93T25saW5lKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bmV0d29ya1N0YXRlVXBkYXRlZChpc05vd09ubGluZSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNXaXRo
TWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5oCmluZGV4IDZlZTNlMTQuLmU0ZmFhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRnJhbWU7CiBjbGFz
cyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckFnZW50OwotY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmQ7CitjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRj
aGVyOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50Owog
Y2xhc3MgSW5zcGVjdG9yVmFsdWU7CkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6QXBwbGljYXRpb25DYWNoZUNvbW1hbmRIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6QXBwbGljYXRpb25DYWNoZUNvbW1hbmRIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0
cjxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkK
QEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIH5JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQoKSB7IH0KIAogICAgIC8vIEluc3BlY3RvckJhc2VBZ2VudAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwotICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCgpIE9WRVJSSURFOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIEFQSQogICAg
IHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSopOwpAQCAtODAsNyArODAs
NyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50TG9hZGVyKiBhc3NlcnRGcmFtZVdpdGhEb2N1bWVu
dExvYWRlcihFcnJvclN0cmluZyosIFN0cmluZyBmcmFtZUlkKTsKIAogICAgIEluc3BlY3RvclBh
Z2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkFwcGxpY2F0aW9u
Q2FjaGUqIG1fZnJvbnRlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhc2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhc2VBZ2VudC5oCmluZGV4IDI4MGI5ODQuLmZlNTAwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmgKQEAgLTMyLDU1ICszMiwzMiBAQAog
I2RlZmluZSBJbnNwZWN0b3JCYXNlQWdlbnRfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zdHJ1
bWVudGluZ0FnZW50czsKIAotY2xhc3MgSW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlIHsKK2Ns
YXNzIEluc3BlY3RvckJhc2VBZ2VudCB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yQmFzZUFnZW50
SW50ZXJmYWNlKGNvbnN0IFN0cmluZyYgbmFtZSwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cykKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JCYXNlQWdlbnQoKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0KKworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckJh
c2VBZ2VudChjb25zdCBTdHJpbmcmIG5hbWUsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMpCiAgICAgICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRp
bmdBZ2VudHMpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgewogICAgIH0KIAotICAgIHZp
cnR1YWwgfkluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZSgpIHsgfQotCi0gICAgdmlydHVhbCB2
b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGNsZWFyRnJvbnRlbmQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJJbkRpc3BhdGNo
ZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c2NhcmRBZ2VudCgpIHsgfQotCi0gICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KLQotcHJvdGVjdGVkOgogICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVu
dGluZ0FnZW50czsKLQotcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWNsYXNzIEluc3BlY3RvckJhc2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnRJbnRlcmZhY2UgewotcHVibGljOgotICAgIHZpcnR1YWwgfkluc3BlY3RvckJh
c2VBZ2VudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW5EaXNwYXRjaGVyKElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKQotICAgIHsKLSAgICAgICAgZGlz
cGF0Y2hlci0+cmVnaXN0ZXJBZ2VudChzdGF0aWNfY2FzdDxUKj4odGhpcykpOwotICAgIH0KLQot
cHJvdGVjdGVkOgotICAgIEluc3BlY3RvckJhc2VBZ2VudChjb25zdCBTdHJpbmcmIG5hbWUsIElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgICAgIDogSW5zcGVj
dG9yQmFzZUFnZW50SW50ZXJmYWNlKG5hbWUsIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgewot
ICAgIH0KLX07Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vICFkZWZpbmVk
KEluc3BlY3RvckJhc2VBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZWJlZGM3Mi4uNjA3N2NhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC02MTYsOCArNjE2LDcg
QEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUoQ1NTUnVs
ZSogcnVsZSkKIH0KIAogSW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckRPTUFnZW50KiBk
b21BZ2VudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDU1NBZ2VudD4oIkNT
UyIsIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX2Zyb250ZW5kKDApCisgICAgOiBJbnNw
ZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykK
ICAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCiAgICAgLCBtX2xhc3RTdHlsZVNoZWV0SWQoMSkK
IHsKQEAgLTYzMCwxNiArNjI5LDE2IEBAIEluc3BlY3RvckNTU0FnZW50Ojp+SW5zcGVjdG9yQ1NT
QWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldEZy
b250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewotICAgIEFTU0VSVCghbV9mcm9udGVuZCk7Ci0gICAgbV9mcm9udGVuZCA9IGZy
b250ZW5kLT5jc3MoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQ1NTRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAg
IGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOwogfQogCi12b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIHsKLSAgICBBU1NFUlQobV9mcm9udGVuZCk7
Ci0gICAgbV9mcm9udGVuZCA9IDA7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRy
OworCiAgICAgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwogICAgIFN0cmluZyBlcnJvclN0cmlu
ZzsKICAgICBzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoJmVycm9yU3RyaW5nLCBmYWxzZSk7CkBA
IC02ODIsOCArNjgxLDggQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlzYWJsZShFcnJvclN0
cmluZyopCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2Vk
KCkKIHsKLSAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAgbV9mcm9udGVuZC0+bWVkaWFRdWVy
eVJlc3VsdENoYW5nZWQoKTsKKyAgICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIpCisgICAgICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwogfQogCiB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3Vt
ZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKQEAgLTY5Myw3ICs2OTIsNyBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50
LCBXZWJLaXROYW1lZEZsb3cqCiAgICAgICAgIHJldHVybjsKIAogICAgIEVycm9yU3RyaW5nIGVy
cm9yU3RyaW5nOwotICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxvd0NyZWF0ZWQoYnVpbGRPYmplY3RG
b3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7Cisg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm5hbWVkRmxvd0NyZWF0ZWQoYnVpbGRPYmplY3RGb3JO
YW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRv
Y3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKQEAgLTcwOCw3ICs3MDcsNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1
bWVudCwgV2ViS2l0TmFtZWRGbG93KgogICAgIGlmIChtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNr
KQogICAgICAgICBtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrLT51bnNjaGVkdWxlKG5hbWVkRmxv
dyk7CiAKLSAgICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBu
YW1lZEZsb3ctPm5hbWUoKS5zdHJpbmcoKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm5h
bWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygp
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERv
Y3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCkBAIC03MzAsNyAr
NzI5LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uTGF5b3V0VXBkYXRlZChXZWJL
aXROYW1lZEZsb3cqIG5hbWVkRmxvdywgaW50IGRvY3UKICAgICBFcnJvclN0cmluZyBlcnJvclN0
cmluZzsKICAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0KCpuYW1lZEZsb3cpOwogCi0g
ICAgbV9mcm9udGVuZC0+cmVnaW9uTGF5b3V0VXBkYXRlZChidWlsZE9iamVjdEZvck5hbWVkRmxv
dygmZXJyb3JTdHJpbmcsIG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKKyAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+cmVnaW9uTGF5b3V0VXBkYXRlZChidWlsZE9iamVjdEZvck5hbWVkRmxv
dygmZXJyb3JTdHJpbmcsIG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldChEb2N1bWVudCogZG9jdW1l
bnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQpAQCAtNzUyLDcgKzc1MSw3IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKFdlYktpdE5hbWVkRmxvdyog
bmFtZWRGbG93LCBpbnQgZG9jCiAgICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAgICAgUmVm
PFdlYktpdE5hbWVkRmxvdz4gcHJvdGVjdCgqbmFtZWRGbG93KTsKICAgICAKLSAgICBtX2Zyb250
ZW5kLT5yZWdpb25PdmVyc2V0Q2hhbmdlZChidWlsZE9iamVjdEZvck5hbWVkRmxvdygmZXJyb3JT
dHJpbmcsIG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+cmVnaW9uT3ZlcnNldENoYW5nZWQoYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coJmVycm9y
U3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgTm9kZSogY29udGVudEVsZW1lbnQs
IE5vZGUqIG5leHRDb250ZW50RWxlbWVudCkKQEAgLTc2NCw3ICs3NjMsNyBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50
KiBkb2N1bWVudCwgVwogICAgIEVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIGludCBjb250
ZW50RWxlbWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCgmZXJyb3JT
dHJpbmcsIGRvY3VtZW50Tm9kZUlkLCBjb250ZW50RWxlbWVudCk7CiAgICAgaW50IG5leHRDb250
ZW50RWxlbWVudE5vZGVJZCA9IG5leHRDb250ZW50RWxlbWVudCA/IG1fZG9tQWdlbnQtPnB1c2hO
b2RlVG9Gcm9udGVuZCgmZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkLCBuZXh0Q29udGVudEVs
ZW1lbnQpIDogMDsKLSAgICBtX2Zyb250ZW5kLT5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoZG9jdW1lbnROb2RlSWQsIG5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygpLCBjb250ZW50
RWxlbWVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50Tm9kZUlkKTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+cmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9k
ZUlkLCBuYW1lZEZsb3ctPm5hbWUoKS5zdHJpbmcoKSwgY29udGVudEVsZW1lbnROb2RlSWQsIG5l
eHRDb250ZW50RWxlbWVudE5vZGVJZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIFdl
YktpdE5hbWVkRmxvdyogbmFtZWRGbG93LCBOb2RlKiBjb250ZW50RWxlbWVudCkKQEAgLTc3OSw3
ICs3NzgsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LAogICAgICAgICAvLyBXZSd2ZSBhbHJl
YWR5IG5vdGlmaWVkIHRoYXQgdGhlIERPTSBub2RlIHdhcyByZW1vdmVkIGZyb20gdGhlIERPTSwg
c28gdGhlcmUncyBubyBuZWVkIHRvIHNlbmQgYW5vdGhlciBldmVudC4KICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBtX2Zyb250ZW5kLT51bnJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxl
bWVudChkb2N1bWVudE5vZGVJZCwgbmFtZWRGbG93LT5uYW1lKCkuc3RyaW5nKCksIGNvbnRlbnRF
bGVtZW50Tm9kZUlkKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dW5yZWdpc3RlcmVkTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnROb2RlSWQsIG5hbWVkRmxvdy0+bmFtZSgpLnN0
cmluZygpLCBjb250ZW50RWxlbWVudE5vZGVJZCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmZvcmNlUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVk
b1R5cGUgcHNldWRvVHlwZSkKQEAgLTEwOTYsNyArMTA5NSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6c3RvcFNlbGVj
dG9yUHJvCiAgICAgaWYgKCFtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUpCiAgICAgICAgIHJldHVy
biAwOwogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHJlc3Vs
dDsKLSAgICBpZiAobV9mcm9udGVuZCAmJiBuZWVkUHJvZmlsZSkKKyAgICBpZiAobV9mcm9udGVu
ZERpc3BhdGNoZXIgJiYgbmVlZFByb2ZpbGUpCiAgICAgICAgIHJlc3VsdCA9IG1fY3VycmVudFNl
bGVjdG9yUHJvZmlsZS0+dG9JbnNwZWN0b3JPYmplY3QoKTsKICAgICBtX2N1cnJlbnRTZWxlY3Rv
clByb2ZpbGUuY2xlYXIoKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKQEAgLTE0NTEs
OCArMTQ1MCw4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIoRWxl
bWVudCogZWxlbWVudCkKIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c3R5bGVTaGVldENoYW5n
ZWQoSW5zcGVjdG9yU3R5bGVTaGVldCogc3R5bGVTaGVldCkKIHsKLSAgICBpZiAobV9mcm9udGVu
ZCkKLSAgICAgICAgbV9mcm9udGVuZC0+c3R5bGVTaGVldENoYW5nZWQoc3R5bGVTaGVldC0+aWQo
KSk7CisgICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyKQorICAgICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+c3R5bGVTaGVldENoYW5nZWQoc3R5bGVTaGVldC0+aWQoKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0UHNldWRvU3RhdGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNTI5YWQxOS4uY2JlNmMzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTUwLDcg
KzUwLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEluc3BlY3RvckNTU09NV3JhcHBlcnM7Ci1jbGFz
cyBJbnNwZWN0b3JGcm9udGVuZDsKK2NsYXNzIEluc3BlY3RvckNTU0Zyb250ZW5kRGlzcGF0Y2hl
cjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOYW1lTm9kZU1hcDsKIGNsYXNz
IE5vZGU7CkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50Ci0gICAgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNTU0FnZW50PgorICAgIDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudAogICAgICwgcHVibGljIEluc3BlY3RvckRPTUFnZW50OjpET01M
aXN0ZW5lcgogICAgICwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDU1NDb21t
YW5kSGFuZGxlcgogICAgICwgcHVibGljIEluc3BlY3RvclN0eWxlU2hlZXQ6Okxpc3RlbmVyIHsK
QEAgLTk2LDggKzk2LDggQEAgcHVibGljOgogICAgIH5JbnNwZWN0b3JDU1NBZ2VudCgpOwogCiAg
ICAgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlw
ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7Ci0g
ICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nh
cmRBZ2VudCgpOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHJlc2V0UHNldWRvU3RhdGVzKCk7CiAKLSAgICBJbnNwZWN0b3JG
cm9udGVuZDo6Q1NTKiBtX2Zyb250ZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JD
U1NGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3Rv
ckRPTUFnZW50KiBtX2RvbUFnZW50OwogCiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hlZXQgbV9p
ZFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDU4ODFjMzEuLjNkZThkNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAt
NjIsMTAgKzYyLDkgQEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1l
SWQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0
b3JDYW52YXNBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ+KCJDYW52YXMiLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9y
QmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQ2FudmFzIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAg
ICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kKDApCiAgICAgLCBtX2Vu
YWJsZWQoZmFsc2UpCiB7CiB9CkBAIC03NCwxNiArNzMsMTcgQEAgSW5zcGVjdG9yQ2FudmFzQWdl
bnQ6On5JbnNwZWN0b3JDYW52YXNBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3ZvaWQgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIEFTU0VSVChmcm9udGVuZCk7Ci0gICAgbV9m
cm9udGVuZCA9IGZyb250ZW5kLT5jYW52YXMoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMp
OwogfQogCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIHsK
LSAgICBtX2Zyb250ZW5kID0gMDsKLSAgICBkaXNhYmxlKDApOworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gbnVsbHB0cjsKKworICAgIGRpc2FibGUobnVsbHB0cik7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCkBAIC0xOTksNyArMTk5LDcg
QEAgU2NyaXB0T2JqZWN0IEluc3BlY3RvckNhbnZhc0FnZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdD
b250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGMKIAogU2NyaXB0T2JqZWN0IEluc3BlY3RvckNhbnZh
c0FnZW50Ojpub3RpZnlSZW5kZXJpbmdDb250ZXh0V2FzV3JhcHBlZChjb25zdCBTY3JpcHRPYmpl
Y3QmIHdyYXBwZWRDb250ZXh0KQogewotICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKKyAgICBBU1NF
UlQobV9mcm9udGVuZERpc3BhdGNoZXIpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSA9IHdyYXBwZWRDb250ZXh0LnNjcmlwdFN0YXRlKCk7CiAgICAgRE9NV2luZG93KiBkb21XaW5k
b3cgPSBzY3JpcHRTdGF0ZSA/IGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoc2NyaXB0U3RhdGUpIDog
MDsKICAgICBGcmFtZSogZnJhbWUgPSBkb21XaW5kb3cgPyBkb21XaW5kb3ctPmZyYW1lKCkgOiAw
OwpAQCAtMjA3LDcgKzIwNyw3IEBAIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgU2NyaXB0CiAgICAgICAgIG1f
ZnJhbWVzV2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFzZXMuc2V0KGZyYW1lLCBmYWxzZSk7CiAgICAg
U3RyaW5nIGZyYW1lSWQgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7CiAgICAgaWYgKCFm
cmFtZUlkLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mcm9udGVuZC0+Y29udGV4dENyZWF0ZWQoZnJh
bWVJZCk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jb250ZXh0Q3JlYXRlZChmcmFt
ZUlkKTsKICAgICByZXR1cm4gd3JhcHBlZENvbnRleHQ7CiB9CiAKQEAgLTI3MCw3ICsyNzAsNyBA
QCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpmaW5kRnJhbWVzV2l0aFVuaW5zdHJ1bWVudGVk
Q2FudmFzZXMoKQogICAgIGZvciAoRnJhbWVzV2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFzZXM6Oml0
ZXJhdG9yIGl0ID0gbV9mcmFtZXNXaXRoVW5pbnN0cnVtZW50ZWRDYW52YXNlcy5iZWdpbigpOyBp
dCAhPSBtX2ZyYW1lc1dpdGhVbmluc3RydW1lbnRlZENhbnZhc2VzLmVuZCgpOyArK2l0KSB7CiAg
ICAgICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoaXQtPmtleSk7CiAg
ICAgICAgIGlmICghZnJhbWVJZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX2Zyb250ZW5kLT5j
b250ZXh0Q3JlYXRlZChmcmFtZUlkKTsKKyAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5jb250ZXh0Q3JlYXRlZChmcmFtZUlkKTsKICAgICB9CiB9CiAKQEAgLTI4OSwxNCArMjg5LDE0
IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKEZyYW1lKiBmcmFt
ZSkKICAgICBpZiAoZnJhbWUgPT0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpKSB7CiAgICAgICAg
IGZvciAoRnJhbWVzV2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFzZXM6Oml0ZXJhdG9yIGl0ID0gbV9m
cmFtZXNXaXRoVW5pbnN0cnVtZW50ZWRDYW52YXNlcy5iZWdpbigpOyBpdCAhPSBtX2ZyYW1lc1dp
dGhVbmluc3RydW1lbnRlZENhbnZhc2VzLmVuZCgpOyArK2l0KQogICAgICAgICAgICAgbV9mcmFt
ZXNXaXRoVW5pbnN0cnVtZW50ZWRDYW52YXNlcy5zZXQoaXQtPmtleSwgZmFsc2UpOwotICAgICAg
ICBtX2Zyb250ZW5kLT50cmFjZUxvZ3NSZW1vdmVkKDAsIDApOworICAgICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+dHJhY2VMb2dzUmVtb3ZlZCgwLCAwKTsKICAgICB9IGVsc2UgewogICAgICAg
ICB3aGlsZSAoZnJhbWUpIHsKICAgICAgICAgICAgIGlmIChtX2ZyYW1lc1dpdGhVbmluc3RydW1l
bnRlZENhbnZhc2VzLmNvbnRhaW5zKGZyYW1lKSkKICAgICAgICAgICAgICAgICBtX2ZyYW1lc1dp
dGhVbmluc3RydW1lbnRlZENhbnZhc2VzLnNldChmcmFtZSwgZmFsc2UpOwogICAgICAgICAgICAg
aWYgKG1fcGFnZUFnZW50LT5oYXNJZEZvckZyYW1lKGZyYW1lKSkgewogICAgICAgICAgICAgICAg
IFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOwotICAgICAgICAg
ICAgICAgIG1fZnJvbnRlbmQtPnRyYWNlTG9nc1JlbW92ZWQoJmZyYW1lSWQsIDApOworICAgICAg
ICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50cmFjZUxvZ3NSZW1vdmVkKCZmcmFtZUlk
LCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRleCA3ZTk0NTUzLi4yZWJjNzFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaApAQCAtNTMsNyAr
NTMsNyBAQCBjbGFzcyBTY3JpcHRPYmplY3Q7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5n
OwogCi1jbGFzcyBJbnNwZWN0b3JDYW52YXNBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQ8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkNhbnZhc0NvbW1hbmRIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckNhbnZhc0FnZW50IDog
cHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpDYW52YXNDb21tYW5kSGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgewpAQCAtNjEsOCArNjEs
OCBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JDYW52YXNBZ2VudCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIGZyYW1lTmF2aWdhdGVkKEZyYW1l
Kik7CiAgICAgdm9pZCBmcmFtZURldGFjaGVkKEZyYW1lKik7CkBAIC0xMDAsNyArMTAwLDcgQEAg
cHJpdmF0ZToKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBJbnNwZWN0
b3JGcm9udGVuZDo6Q2FudmFzKiBtX2Zyb250ZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3JDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAg
IGJvb2wgbV9lbmFibGVkOwogICAgIC8vIENvbnRhaW5zIGFsbCBmcmFtZXMgd2l0aCBjYW52YXNl
cywgdmFsdWUgaXMgdHJ1ZSBvbmx5IGZvciBmcmFtZXMgdGhhdCBoYXZlIGFuIHVuaW5zdHJ1bWVu
dGVkIGNhbnZhcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8RnJhbWUqLCBib29sPiBGcmFtZXNXaXRo
VW5pbnN0cnVtZW50ZWRDYW52YXNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMjQwMGEwYS4uNjJiOWUzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAK
QEAgLTU5LDkgKzU5LDggQEAgc3RhdGljIGNvbnN0IGludCBleHBpcmVDb25zb2xlTWVzc2FnZXNT
dGVwID0gMTAwOwogaW50IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c19lbmFibGVkQWdlbnRDb3Vu
dCA9IDA7CiAKIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PElu
c3BlY3RvckNvbnNvbGVBZ2VudD4oIkNvbnNvbGUiLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAg
IDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQ29uc29sZSIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKQotICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9wcmV2aW91c01lc3NhZ2UoMCkK
ICAgICAsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQoMCkKICAgICAsIG1fZW5hYmxlZChm
YWxzZSkKQEAgLTg4LDEyICs4NywxMiBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZW5h
YmxlKEVycm9yU3RyaW5nKikKIAogICAgIGlmIChtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50
KSB7CiAgICAgICAgIENvbnNvbGVNZXNzYWdlIGV4cGlyZWRNZXNzYWdlKCFpc1dvcmtlckFnZW50
KCksIE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2
ZWwsIFN0cmluZzo6Zm9ybWF0KCIlZCBjb25zb2xlIG1lc3NhZ2VzIGFyZSBub3Qgc2hvd24uIiwg
bV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCkpOwotICAgICAgICBleHBpcmVkTWVzc2FnZS5h
ZGRUb0Zyb250ZW5kKG1fZnJvbnRlbmQsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBmYWxzZSk7
CisgICAgICAgIGV4cGlyZWRNZXNzYWdlLmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZERpc3BhdGNo
ZXIuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBmYWxzZSk7CiAgICAgfQogCiAgICAg
c2l6ZV90IG1lc3NhZ2VDb3VudCA9IG1fY29uc29sZU1lc3NhZ2VzLnNpemUoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1lc3NhZ2VDb3VudDsgKytpKQotICAgICAgICBtX2NvbnNvbGVN
ZXNzYWdlc1tpXS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlciwgZmFsc2UpOworICAgICAgICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Gcm9udGVu
ZChtX2Zyb250ZW5kRGlzcGF0Y2hlci5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIGZh
bHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJp
bmcqKQpAQCAtMTExLDggKzExMCw4IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpjbGVh
ck1lc3NhZ2VzKEVycm9yU3RyaW5nKikKICAgICBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50
ID0gMDsKICAgICBtX3ByZXZpb3VzTWVzc2FnZSA9IDA7CiAgICAgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXItPnJlbGVhc2VPYmplY3RHcm91cCgiY29uc29sZSIpOwotICAgIGlmIChtX2Zyb250ZW5k
ICYmIG1fZW5hYmxlZCkKLSAgICAgICAgbV9mcm9udGVuZC0+bWVzc2FnZXNDbGVhcmVkKCk7Cisg
ICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyICYmIG1fZW5hYmxlZCkKKyAgICAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPm1lc3NhZ2VzQ2xlYXJlZCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6cmVzZXQoKQpAQCAtMTIzLDE0ICsxMjIsMTYgQEAgdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OnJlc2V0KCkKICAgICBtX2NvdW50cy5jbGVhcigpOwogfQogCi12b2lkIElu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmQg
PSBmcm9udGVuZC0+Y29uc29sZSgpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENo
YW5uZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOwogfQog
Ci12b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKQogewotICAg
IG1fZnJvbnRlbmQgPSAwOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKKwog
ICAgIFN0cmluZyBlcnJvclN0cmluZzsKICAgICBkaXNhYmxlKCZlcnJvclN0cmluZyk7CiB9CkBA
IC0xNzEsNyArMTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VU
b0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXAKICAgICAgICAgY2xlYXJN
ZXNzYWdlcygmZXJyb3IpOwogICAgIH0KIAotICAgIGJvb2wgY2FuR2VuZXJhdGVDYWxsU3RhY2sg
PSAhaXNXb3JrZXJBZ2VudCgpICYmIG1fZnJvbnRlbmQ7CisgICAgYm9vbCBjYW5HZW5lcmF0ZUNh
bGxTdGFjayA9ICFpc1dvcmtlckFnZW50KCkgJiYgbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAg
YWRkQ29uc29sZU1lc3NhZ2UoYWRvcHRQdHIobmV3IENvbnNvbGVNZXNzYWdlKGNhbkdlbmVyYXRl
Q2FsbFN0YWNrLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBzY3JpcHRJRCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpKSk7CiB9CiAKQEAg
LTI0OSw3ICsyNTAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkRmluaXNoWEhS
TG9hZGluZyh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLAogewogICAgIGlmICghZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1fZnJvbnRl
bmQgJiYgbV9tb25pdG9yaW5nWEhSRW5hYmxlZCkgeworICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0
Y2hlciAmJiBtX21vbml0b3JpbmdYSFJFbmFibGVkKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdl
ID0gIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyB1cmwgKyAiXCIuIjsKICAgICAgICAgYWRk
TWVzc2FnZVRvQ29uc29sZShOZXR3b3JrTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIERl
YnVnTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlciwgc2VuZENv
bHVtbk51bWJlciwgMCwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIH0KQEAgLTMwMCwxNiArMzAx
LDE2IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNz
T3duUHRyPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlCiAKICAgICBpZiAobV9wcmV2aW91c01lc3Nh
Z2UgJiYgIWlzR3JvdXBNZXNzYWdlKG1fcHJldmlvdXNNZXNzYWdlLT50eXBlKCkpICYmIG1fcHJl
dmlvdXNNZXNzYWdlLT5pc0VxdWFsKGNvbnNvbGVNZXNzYWdlLmdldCgpKSkgewogICAgICAgICBt
X3ByZXZpb3VzTWVzc2FnZS0+aW5jcmVtZW50Q291bnQoKTsKLSAgICAgICAgaWYgKG1fZnJvbnRl
bmQgJiYgbV9lbmFibGVkKQotICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPnVwZGF0ZVJl
cGVhdENvdW50SW5Db25zb2xlKG1fZnJvbnRlbmQpOworICAgICAgICBpZiAobV9mcm9udGVuZERp
c3BhdGNoZXIgJiYgbV9lbmFibGVkKQorICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPnVw
ZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKG1fZnJvbnRlbmREaXNwYXRjaGVyLmdldCgpKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlLmdl
dCgpOwogICAgICAgICBtX2NvbnNvbGVNZXNzYWdlcy5hcHBlbmQoY29uc29sZU1lc3NhZ2UpOwot
ICAgICAgICBpZiAobV9mcm9udGVuZCAmJiBtX2VuYWJsZWQpCi0gICAgICAgICAgICBtX3ByZXZp
b3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlciwgdHJ1ZSk7CisgICAgICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlciAmJiBtX2VuYWJs
ZWQpCisgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zyb250
ZW5kRGlzcGF0Y2hlci5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIHRydWUpOwogICAg
IH0KIAotICAgIGlmICghbV9mcm9udGVuZCAmJiBtX2NvbnNvbGVNZXNzYWdlcy5zaXplKCkgPj0g
bWF4aW11bUNvbnNvbGVNZXNzYWdlcykgeworICAgIGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIg
JiYgbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpID49IG1heGltdW1Db25zb2xlTWVzc2FnZXMpIHsK
ICAgICAgICAgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCArPSBleHBpcmVDb25zb2xlTWVz
c2FnZXNTdGVwOwogICAgICAgICBtX2NvbnNvbGVNZXNzYWdlcy5yZW1vdmUoMCwgZXhwaXJlQ29u
c29sZU1lc3NhZ2VzU3RlcCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IGM3ZjFjOGEuLjQ1MDRhYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTQy
LDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb25zb2xlTWVzc2FnZTsK
IGNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFJlc291
cmNlRXJyb3I7CkBAIC01Myw3ICs1Miw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAKIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNvbnNvbGVBZ2VudD4sIHB1YmxpYyBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q29uc29sZUNvbW1hbmRIYW5kbGVyIHsKK2NsYXNz
IEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1Ymxp
YyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q29uc29sZUNvbW1hbmRIYW5kbGVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb25zb2xlQWdlbnQpOwogcHVibGljOgog
ICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKik7CkBAIC02NSw4ICs2NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHJlc2V0KCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CiAgICAgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51
bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSogPSAwLCB1bnNpZ25l
ZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CkBAIC0xMDEsNyArMTAwLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgYm9vbCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgPSAwOwogCiAg
ICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBJ
bnNwZWN0b3JGcm9udGVuZDo6Q29uc29sZSogbV9mcm9udGVuZDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNo
ZXI7CiAgICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlOwogICAgIFZlY3RvcjxP
d25QdHI8Q29uc29sZU1lc3NhZ2U+PiBtX2NvbnNvbGVNZXNzYWdlczsKICAgICBpbnQgbV9leHBp
cmVkQ29uc29sZU1lc3NhZ2VDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAzYzllNmY1Li5jYmZjMjEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC04MCw2
ICs4MCw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgOiBtX2luc3RydW1lbnRpbmdB
Z2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCkpCiAgICAgLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcihJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUZvclBhZ2UoKSkKICAgICAs
IG1fb3ZlcmxheShJbnNwZWN0b3JPdmVybGF5OjpjcmVhdGUocGFnZSwgaW5zcGVjdG9yQ2xpZW50
KSkKKyAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAgICAgLCBtX3Bh
Z2UocGFnZSkKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKICAgICAs
IG1faXNVbmRlclRlc3QoZmFsc2UpCkBAIC0yMjMsMzAgKzIyNCwyOSBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXbwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCiB7CiAgICAgQVNTRVJUKGZy
b250ZW5kQ2hhbm5lbCk7Ci0KLSAgICBtX2luc3BlY3RvckZyb250ZW5kID0gYWRvcHRQdHIobmV3
IEluc3BlY3RvckZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCkpOwotCi0gICAgbV9hZ2VudHMuc2V0
RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7Ci0KLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCkpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVh
dGVkKCk7Ci0KICAgICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOworICAgIEFTU0VSVCghbV9p
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwpOworICAgIEFTU0VSVCghbV9pbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcik7CisKKyAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5k
Q2hhbm5lbDsKICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENoYW5uZWwpOwogCi0gICAgbV9hZ2VudHMu
cmVnaXN0ZXJJbkRpc3BhdGNoZXIobV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7
CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5l
bCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRD
cmVhdGVkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250
ZW5kKCkKIHsKLSAgICBpZiAoIW1faW5zcGVjdG9yRnJvbnRlbmQpCisgICAgaWYgKCFtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOworCisgICAgbV9hZ2VudHMud2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKTsKKwogICAgIG1faW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNsZWFyKCk7Ci0KLSAgICBtX2FnZW50cy5jbGVhckZyb250ZW5kKCk7Ci0KLSAgICBtX2lu
c3BlY3RvckZyb250ZW5kLmNsZWFyKCk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwg
PSBudWxscHRyOwogCiAgICAgLy8gcmVsZXNlIG92ZXJsYXkgcGFnZSByZXNvdXJjZXMKICAgICBt
X292ZXJsYXktPmZyZWVQYWdlKCk7CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpzaG93KCkKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmQpCisgICAgaWYgKG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKQogICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+YnJpbmdGcm9udGVuZFRvRnJv
bnQoKTsKICAgICBlbHNlIHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRo
aXMpOwpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygp
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UoKQogewotICAgIGlmICghbV9pbnNw
ZWN0b3JGcm9udGVuZCkKKyAgICBpZiAoIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQogICAg
ICAgICByZXR1cm47CiAgICAgZGlzY29ubmVjdEZyb250ZW5kKCk7CiAgICAgbV9pbnNwZWN0b3JD
bGllbnQtPmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDVmMjczYWMuLjk1ZWM3ZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNTMs
NyArNTMsNiBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2Vu
dDsKIGNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIEluc3Bl
Y3Rvck1lbW9yeUFnZW50OwpAQCAtOTIsNyArOTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRp
c3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCi0gICAg
Ym9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmQ7IH0K
KyAgICBib29sIGhhc0Zyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsgfQogICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCopOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKCk7CiAgICAgdm9pZCBzZXRQ
cm9jZXNzSWQobG9uZyk7CkBAIC0xNDksNyArMTQ4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ7Ci0gICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBtX2luc3BlY3RvckZyb250
ZW5kOworICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWw7CiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0
b3JDbGllbnQ7CiAgICAgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDg1ZDc5M2Eu
LmU2YmNiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtMjExLDEyICsyMTEsMTEgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0
b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNvZGUmIGVjKQogfQogCiBJbnNwZWN0b3JET01B
Z2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5LCBJ
bnNwZWN0b3JDbGllbnQqIGNsaWVudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JET01BZ2VudD4oIkRPTSIsIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JC
YXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJET00iKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAs
IG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQogICAgICwgbV9j
bGllbnQoY2xpZW50KQotICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9kb21MaXN0ZW5lcigw
KQogICAgICwgbV9sYXN0Tm9kZUlkKDEpCiAgICAgLCBtX2xhc3RCYWNrZW5kTm9kZUlkKC0xKQpA
QCAtMjMyLDEzICsyMzEsMTQgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2Vu
dCgpCiAgICAgQVNTRVJUKCFtX3NlYXJjaGluZ0Zvck5vZGUpOwogfQogCi12b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmQpOworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01Gcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgYmFja2VuZERpc3BhdGNoZXIt
PnJlZ2lzdGVyQWdlbnQodGhpcyk7CisKICAgICBtX2hpc3RvcnkgPSBhZG9wdFB0cihuZXcgSW5z
cGVjdG9ySGlzdG9yeSgpKTsKICAgICBtX2RvbUVkaXRvciA9IGFkb3B0UHRyKG5ldyBET01FZGl0
b3IobV9oaXN0b3J5LmdldCgpKSk7CiAKLSAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQtPmRvbSgp
OwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRE9NQWdlbnQodGhpcyk7
CiAgICAgbV9kb2N1bWVudCA9IG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsK
IApAQCAtMjQ2LDkgKzI0Niw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEZyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKICAgICAgICAgZm9jdXNOb2RlKCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKQogewotICAgIEFTU0VSVCht
X2Zyb250ZW5kKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAKICAgICBt
X2hpc3RvcnkuY2xlYXIoKTsKICAgICBtX2RvbUVkaXRvci5jbGVhcigpOwpAQCAtMjU3LDcgKzI1
Nyw2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogICAgIHNldFNl
YXJjaGluZ0Zvck5vZGUoJmVycm9yLCBmYWxzZSwgMCk7CiAgICAgaGlkZUhpZ2hsaWdodCgmZXJy
b3IpOwogCi0gICAgbV9mcm9udGVuZCA9IDA7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JET01BZ2VudCgwKTsKICAgICBtX2RvY3VtZW50UmVxdWVzdGVkID0gZmFsc2U7
CiAgICAgcmVzZXQoKTsKQEAgLTMwNSw3ICszMDQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jKQogCiAgICAgLy8gSW1tZWRpYXRlbHkgY29tbXVu
aWNhdGUgMCBkb2N1bWVudCBvciBkb2N1bWVudCB0aGF0IGhhcyBmaW5pc2hlZCBsb2FkaW5nLgog
ICAgIGlmICghZG9jIHx8ICFkb2MtPnBhcnNpbmcoKSkKLSAgICAgICAgbV9mcm9udGVuZC0+ZG9j
dW1lbnRVcGRhdGVkKCk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb2N1bWVudFVw
ZGF0ZWQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVsZWFzZURhbmdsaW5nTm9k
ZXMoKQpAQCAtNDYyLDcgKzQ2MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGls
ZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkLCBpbnQgZGVwdGgpCiAgICAgfQogCiAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4g
PSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOwot
ICAgIG1fZnJvbnRlbmQtPnNldENoaWxkTm9kZXMobm9kZUlkLCBjaGlsZHJlbi5yZWxlYXNlKCkp
OworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgY2hpbGRy
ZW4ucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRp
bmdzKCkKQEAgLTU4OSw3ICs1ODgsNyBAQCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2Rl
UGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICAgICAgICAgIG1fZGFuZ2xpbmdO
b2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAg
ICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsIGRh
bmdsaW5nTWFwKSk7Ci0gICAgICAgICAgICBtX2Zyb250ZW5kLT5zZXRDaGlsZE5vZGVzKDAsIGNo
aWxkcmVuKTsKKyAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVz
KDAsIGNoaWxkcmVuKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgcGF0aC5hcHBlbmQocGFyZW50KTsKQEAgLTEwNjgsNyArMTA2Nyw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6Omluc3BlY3QoTm9kZSogaW5zcGVjdGVkTm9kZSkKIAogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6Zm9jdXNOb2RlKCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmQpCisg
ICAgaWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNT
RVJUKG1fbm9kZVRvRm9jdXMpOwpAQCAtMTU3NSw3ICsxNTc0LDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6bWFpbkZyYW1lRE9NQ29udGVudExvYWRlZCgpCiAgICAgLy8gUmUtcHVzaCBkb2N1
bWVudCBvbmNlIGl0IGlzIGxvYWRlZC4KICAgICBkaXNjYXJkQmluZGluZ3MoKTsKICAgICBpZiAo
bV9kb2N1bWVudFJlcXVlc3RlZCkKLSAgICAgICAgbV9mcm9udGVuZC0+ZG9jdW1lbnRVcGRhdGVk
KCk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb2N1bWVudFVwZGF0ZWQoKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudCogZG9jdW1l
bnQpCkBAIC0xNTkwLDEzICsxNTg5LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENv
bW1pdExvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogCiAgICAgLy8gUmUtYWRkIGZyYW1lIG93bmVy
IGVsZW1lbnQgdG9nZXRoZXIgd2l0aCBpdHMgbmV3IGNoaWxkcmVuLgogICAgIGludCBwYXJlbnRJ
ZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoaW5uZXJQYXJlbnROb2RlKGZyYW1lT3duZXIp
KTsKLSAgICBtX2Zyb250ZW5kLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBmcmFtZU93bmVy
SWQpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElk
LCBmcmFtZU93bmVySWQpOwogICAgIHVuYmluZChmcmFtZU93bmVyLCAmbV9kb2N1bWVudE5vZGVU
b0lkTWFwKTsKIAogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1
aWxkT2JqZWN0Rm9yTm9kZShmcmFtZU93bmVyLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsK
ICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSBpbm5lclByZXZpb3VzU2libGluZyhmcmFtZU93
bmVyKTsKICAgICBpbnQgcHJldklkID0gcHJldmlvdXNTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVU
b0lkTWFwLmdldChwcmV2aW91c1NpYmxpbmcpIDogMDsKLSAgICBtX2Zyb250ZW5kLT5jaGlsZE5v
ZGVJbnNlcnRlZChwYXJlbnRJZCwgcHJldklkLCB2YWx1ZS5yZWxlYXNlKCkpOworICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnRJZCwgcHJldklkLCB2YWx1
ZS5yZWxlYXNlKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01O
b2RlKE5vZGUqIG5vZGUpCkBAIC0xNjE4LDEzICsxNjE3LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKIAogICAgIGlmICghbV9jaGlsZHJl
blJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsKICAgICAgICAgLy8gTm8gY2hpbGRyZW4g
YXJlIG1hcHBlZCB5ZXQgLT4gb25seSBub3RpZnkgb24gY2hhbmdlcyBvZiBoYXNDaGlsZHJlbi4K
LSAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlQ291bnRVcGRhdGVkKHBhcmVudElkLCBpbm5l
ckNoaWxkTm9kZUNvdW50KHBhcmVudCkpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
Y2hpbGROb2RlQ291bnRVcGRhdGVkKHBhcmVudElkLCBpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVu
dCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIENoaWxkcmVuIGhhdmUgYmVlbiByZXF1ZXN0
ZWQgLT4gcmV0dXJuIHZhbHVlIG9mIGEgbmV3IGNoaWxkLgogICAgICAgICBOb2RlKiBwcmV2U2li
bGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKG5vZGUpOwogICAgICAgICBpbnQgcHJldklkID0g
cHJldlNpYmxpbmcgPyBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHByZXZTaWJsaW5nKSA6IDA7
CiAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2Jq
ZWN0Rm9yTm9kZShub2RlLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKLSAgICAgICAgbV9m
cm9udGVuZC0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgdmFsdWUucmVsZWFz
ZSgpKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZUluc2VydGVkKHBh
cmVudElkLCBwcmV2SWQsIHZhbHVlLnJlbGVhc2UoKSk7CiAgICAgfQogfQogCkBAIC0xNjQ0LDkg
KzE2NDMsOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUq
IG5vZGUpCiAgICAgaWYgKCFtX2NoaWxkcmVuUmVxdWVzdGVkLmNvbnRhaW5zKHBhcmVudElkKSkg
ewogICAgICAgICAvLyBObyBjaGlsZHJlbiBhcmUgbWFwcGVkIHlldCAtPiBvbmx5IG5vdGlmeSBv
biBjaGFuZ2VzIG9mIGhhc0NoaWxkcmVuLgogICAgICAgICBpZiAoaW5uZXJDaGlsZE5vZGVDb3Vu
dChwYXJlbnQpID09IDEpCi0gICAgICAgICAgICBtX2Zyb250ZW5kLT5jaGlsZE5vZGVDb3VudFVw
ZGF0ZWQocGFyZW50SWQsIDApOworICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNo
aWxkTm9kZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgMCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1f
ZnJvbnRlbmQtPmNoaWxkTm9kZVJlbW92ZWQocGFyZW50SWQsIG1fZG9jdW1lbnROb2RlVG9JZE1h
cC5nZXQobm9kZSkpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlUmVt
b3ZlZChwYXJlbnRJZCwgbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChub2RlKSk7CiAgICAgdW5i
aW5kKG5vZGUsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwogfQogCkBAIC0xNjcwLDcgKzE2Njks
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbgogICAgIGlmIChtX2RvbUxpc3RlbmVyKQogICAg
ICAgICBtX2RvbUxpc3RlbmVyLT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOwogCi0gICAgbV9m
cm9udGVuZC0+YXR0cmlidXRlTW9kaWZpZWQoaWQsIG5hbWUsIHZhbHVlKTsKKyAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+YXR0cmlidXRlTW9kaWZpZWQoaWQsIG5hbWUsIHZhbHVlKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cihFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCkBAIC0xNjgzLDcgKzE2ODIsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IEF0b21pY1N0cmluZyYgbgogICAgIGlmIChtX2RvbUxpc3RlbmVyKQogICAgICAgICBtX2RvbUxp
c3RlbmVyLT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOwogCi0gICAgbV9mcm9udGVuZC0+YXR0
cmlidXRlUmVtb3ZlZChpZCwgbmFtZSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmF0dHJp
YnV0ZVJlbW92ZWQoaWQsIG5hbWUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzdHls
ZUF0dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKQpA
QCAtMTcwMCw3ICsxNjk5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1
dGVJbnZhbGlkYXRlZChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW4KICAgICAgICAgICAg
IG1fZG9tTGlzdGVuZXItPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVudCk7CiAgICAgICAgIG5vZGVJ
ZHMtPmFkZEl0ZW0oaWQpOwogICAgIH0KLSAgICBtX2Zyb250ZW5kLT5pbmxpbmVTdHlsZUludmFs
aWRhdGVkKG5vZGVJZHMucmVsZWFzZSgpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+aW5s
aW5lU3R5bGVJbnZhbGlkYXRlZChub2RlSWRzLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmNoYXJhY3RlckRhdGFNb2RpZmllZChDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0
ZXJEYXRhKQpAQCAtMTcxMSw3ICsxNzEwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Y2hh
cmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEqIGNoYXJhY3RlckRhdGEpCiAgICAgICAg
IGRpZEluc2VydERPTU5vZGUoY2hhcmFjdGVyRGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgbV9mcm9udGVuZC0+Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGlkLCBjaGFyYWN0ZXJEYXRh
LT5kYXRhKCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGFyYWN0ZXJEYXRhTW9kaWZp
ZWQoaWQsIGNoYXJhY3RlckRhdGEtPmRhdGEoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoTm9kZSogbm9kZSkKQEAgLTE3MzAsNyArMTcyOSw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFB1c2hTaGFkb3dSb290KEVsZW1lbnQqIGhv
c3QsIFNoYWRvd1Jvb3QqIHJvb3QpCiB7CiAgICAgaW50IGhvc3RJZCA9IG1fZG9jdW1lbnROb2Rl
VG9JZE1hcC5nZXQoaG9zdCk7CiAgICAgaWYgKGhvc3RJZCkKLSAgICAgICAgbV9mcm9udGVuZC0+
c2hhZG93Um9vdFB1c2hlZChob3N0SWQsIGJ1aWxkT2JqZWN0Rm9yTm9kZShyb290LCAwLCAmbV9k
b2N1bWVudE5vZGVUb0lkTWFwKSk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zaGFk
b3dSb290UHVzaGVkKGhvc3RJZCwgYnVpbGRPYmplY3RGb3JOb2RlKHJvb3QsIDAsICZtX2RvY3Vt
ZW50Tm9kZVRvSWRNYXApKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbFBvcFNo
YWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCogcm9vdCkKQEAgLTE3MzgsNyArMTcz
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQq
IGhvc3QsIFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgaW50IGhvc3RJZCA9IG1fZG9jdW1lbnROb2Rl
VG9JZE1hcC5nZXQoaG9zdCk7CiAgICAgaW50IHJvb3RJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1h
cC5nZXQocm9vdCk7CiAgICAgaWYgKGhvc3RJZCAmJiByb290SWQpCi0gICAgICAgIG1fZnJvbnRl
bmQtPnNoYWRvd1Jvb3RQb3BwZWQoaG9zdElkLCByb290SWQpOworICAgICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+c2hhZG93Um9vdFBvcHBlZChob3N0SWQsIHJvb3RJZCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lKiBmcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggM2Y4MzNh
Yy4uMzFlZDY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmgKQEAgLTU4LDcgKzU4LDYgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgRXZlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZDsKIGNsYXNzIEluc3BlY3Rvckhpc3Rvcnk7CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5Owog
Y2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwpAQCAtOTEsNyArOTAsNyBAQCBzdHJ1Y3QgRXZlbnRM
aXN0ZW5lckluZm8gewogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0ZW5l
clZlY3RvcjsKIH07CiAKLWNsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudDxJbnNwZWN0b3JET01BZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6RE9NQ29tbWFuZEhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkRPTUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0
b3JET01BZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RydWN0IERPTUxpc3RlbmVyIHsKQEAgLTExMiw4
ICsxMTEsOCBAQCBwdWJsaWM6CiAKICAgICB+SW5zcGVjdG9yRE9NQWdlbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwotICAgIHZpcnR1YWwg
dm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRz
KCk7CiAgICAgdm9pZCByZXNldCgpOwpAQCAtMjQ1LDcgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNw
ZWN0b3JPdmVybGF5KiBtX292ZXJsYXk7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsK
LSAgICBJbnNwZWN0b3JGcm9udGVuZDo6RE9NKiBtX2Zyb250ZW5kOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JET01Gcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVy
OwogICAgIERPTUxpc3RlbmVyKiBtX2RvbUxpc3RlbmVyOwogICAgIE5vZGVUb0lkTWFwIG1fZG9j
dW1lbnROb2RlVG9JZE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBCYWNr
ZW5kTm9kZUlkPiBOb2RlVG9CYWNrZW5kSWRNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMDBlMGU1MC4u
Y2ZlNWVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtNjksNyArNjksNyBAQCBQYXNzT3duUHRyPEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJ
bnN0cnVtZQogfQogCiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvckRPTUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJB
Z2VudCwgSW5zcGVjdG9yQWdlbnQqKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ+KCJET01EZWJ1Z2dlciIsIGluc3RydW1lbnRpbmdBZ2VudHMpCisg
ICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dlciIpLCBpbnN0
cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAsIG1fZGVi
dWdnZXJBZ2VudChkZWJ1Z2dlckFnZW50KQogICAgICwgbV9wYXVzZUluTmV4dEV2ZW50TGlzdGVu
ZXIoZmFsc2UpCkBAIC0xMTEsNyArMTExLDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6ZGlzYWJsZSgpCiAgICAgY2xlYXIoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3sKKyAgICBi
YWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsKK30KKwordm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpCiB7CiAg
ICAgZGlzYWJsZSgpOwogfQpAQCAtMTcyLDcgKzE3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihOb2RlKiBub2RlKQogICAgIGlmICho
YXNCcmVha3BvaW50KG5vZGUsIEF0dHJpYnV0ZU1vZGlmaWVkKSkgewogICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5vZGUsIEF0dHJpYnV0ZU1vZGlmaWVkLCBm
YWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1By
b2dyYW0oSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkRPTSwgZXZlbnREYXRh
LnJlbGVhc2UoKSk7CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3Bl
Y3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgZXZlbnREYXRhLnJl
bGVhc2UoKSk7CiAgICAgfQogfQogCkBAIC0yNzIsNyArMjc3LDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZShOb2RlKiBwYXJlbnQpCiAgICAgaWYg
KGhhc0JyZWFrcG9pbnQocGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQocGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQs
IHRydWUsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQ
cm9ncmFtKEluc3BlY3RvckZyb250ZW5kOjpEZWJ1Z2dlcjo6UmVhc29uOjpET00sIGV2ZW50RGF0
YS5yZWxlYXNlKCkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNw
ZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIGV2ZW50RGF0YS5y
ZWxlYXNlKCkpOwogICAgIH0KIH0KIApAQCAtMjgyLDExICsyODcsMTEgQEAgdm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3ZlRE9NTm9kZShOb2RlKiBub2RlKQogICAgIGlm
IChoYXNCcmVha3BvaW50KG5vZGUsIE5vZGVSZW1vdmVkKSkgewogICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAg
ICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5vZGUsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZl
bnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5z
cGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkRPTSwgZXZlbnREYXRhLnJlbGVhc2Uo
KSk7CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgZXZlbnREYXRhLnJlbGVhc2UoKSk7
CiAgICAgfSBlbHNlIGlmIChwYXJlbnROb2RlICYmIGhhc0JyZWFrcG9pbnQocGFyZW50Tm9kZSwg
U3VidHJlZU1vZGlmaWVkKSkgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVu
dERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNjcmlwdGlvbkZv
ckRPTUV2ZW50KG5vZGUsIFN1YnRyZWVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7
Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckZyb250ZW5k
OjpEZWJ1Z2dlcjo6UmVhc29uOjpET00sIGV2ZW50RGF0YS5yZWxlYXNlKCkpOworICAgICAgICBt
X2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uOjpET00sIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwogICAgIH0KIH0KIApA
QCAtMjk1LDcgKzMwMCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1v
ZGlmeURPTUF0dHIoRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoaGFzQnJlYWtwb2ludChlbGVt
ZW50LCBBdHRyaWJ1dGVNb2RpZmllZCkpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3Jp
cHRpb25Gb3JET01FdmVudChlbGVtZW50LCBBdHRyaWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50
RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3Bl
Y3RvckZyb250ZW5kOjpEZWJ1Z2dlcjo6UmVhc29uOjpET00sIGV2ZW50RGF0YS5yZWxlYXNlKCkp
OworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwog
ICAgIH0KIH0KIApAQCAtMzY5LDkgKzM3NCw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoYm9vbCBpc0RPTUV2ZW50LCBjb25zCiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBldmVudERhdGEtPnNldFN0cmluZygiZXZlbnROYW1lIiwgZnVsbEV2ZW50
TmFtZSk7CiAgICAgaWYgKHN5bmNocm9ub3VzKQotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6RXZlbnRMaXN0
ZW5lciwgZXZlbnREYXRhLnJlbGVhc2UoKSk7CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2
ZW50TGlzdGVuZXIsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9k
ZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckZyb250
ZW5kOjpEZWJ1Z2dlcjo6UmVhc29uOjpFdmVudExpc3RlbmVyLCBldmVudERhdGEucmVsZWFzZSgp
KTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50
KEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVu
ZXIsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnNldFhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCkK
QEAgLTQxNCw3ICs0MTksNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxT
ZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBldmVu
dERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFVSTCIsIGJyZWFrcG9pbnRVUkwpOwogICAgIGV2
ZW50RGF0YS0+c2V0U3RyaW5nKCJ1cmwiLCB1cmwpOwotICAgIG1fZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKEluc3BlY3RvckZyb250ZW5kOjpEZWJ1Z2dlcjo6UmVhc29uOjpYSFIsIGV2ZW50
RGF0YS5yZWxlYXNlKCkpOworICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3Bl
Y3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OlhIUiwgZXZlbnREYXRhLnJl
bGVhc2UoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y2xlYXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmgKaW5kZXggMzgxZTIxNC4uYWUyNWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC00NiwyMSArNDYsMjAg
QEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9y
RE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwotY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdl
bnRzOwogY2xhc3MgTm9kZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RE9NRGVidWdnZXJD
b21tYW5kSGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3Rl
bmVyLCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRPTURlYnVnZ2VyQ29tbWFu
ZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yRE9NQWdlbnQq
LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiwgSW5zcGVjdG9yQWdlbnQqKTsKIAogICAgIHZpcnR1
YWwgfkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKTsKIAotICAgIC8vIERPTURlYnVnZ2VyIEFQ
SSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKKyAgICAvLyBET01EZWJ1Z2dlciBBUEkKICAgICB2aXJ0
dWFsIHZvaWQgc2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJs
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlWEhSQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgdXJsKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7CkBAIC04MCw3ICs3
OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3Ry
aW5nJiB1cmwpOwogICAgIHZvaWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoYm9vbCBpc0RP
TUV2ZW50LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cyk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2Fy
ZEFnZW50KCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDU5YTk4MTAuLjQxOWFmOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwCkBAIC01Niw5ICs1Niw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFn
ZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4o
IkRPTVN0b3JhZ2UiLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQmFzZUFn
ZW50KEFTQ0lJTGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAg
ICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQotICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9l
bmFibGVkKGZhbHNlKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50KHRoaXMpOwpAQCAtNzAsMTUgKzY5LDE3IEBAIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6fkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzID0gMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnNldEZy
b250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7CisgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgYmFja2VuZERpc3BhdGNoZXIt
PnJlZ2lzdGVyQWdlbnQodGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpCiB7Ci0gICAgbV9mcm9udGVuZCA9IDA7Ci0gICAgZGlz
YWJsZSgwKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CisKKyAgICBkaXNh
YmxlKG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZW5hYmxl
KEVycm9yU3RyaW5nKikKQEAgLTE2NCwxOSArMTY1LDE5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9y
YWdlCiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3Jh
Z2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2lu
KiBzZWN1cml0eU9yaWdpbiwgUGFnZSopCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kIHx8ICFtX2Vu
YWJsZWQpCisgICAgaWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hlciB8fCAhbV9lbmFibGVkKQogICAg
ICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3Jh
Z2VJZD4gaWQgPSBzdG9yYWdlSWQoc2VjdXJpdHlPcmlnaW4sIHN0b3JhZ2VUeXBlID09IExvY2Fs
U3RvcmFnZSk7CiAKICAgICBpZiAoa2V5LmlzTnVsbCgpKQotICAgICAgICBtX2Zyb250ZW5kLT5k
b21zdG9yYWdlKCktPmRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQoaWQpOworICAgICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+ZG9tU3RvcmFnZUl0ZW1zQ2xlYXJlZChpZCk7CiAgICAgZWxzZSBpZiAo
bmV3VmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIG1fZnJvbnRlbmQtPmRvbXN0b3JhZ2UoKS0+ZG9t
U3RvcmFnZUl0ZW1SZW1vdmVkKGlkLCBrZXkpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+ZG9tU3RvcmFnZUl0ZW1SZW1vdmVkKGlkLCBrZXkpOwogICAgIGVsc2UgaWYgKG9sZFZhbHVl
LmlzTnVsbCgpKQotICAgICAgICBtX2Zyb250ZW5kLT5kb21zdG9yYWdlKCktPmRvbVN0b3JhZ2VJ
dGVtQWRkZWQoaWQsIGtleSwgbmV3VmFsdWUpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+ZG9tU3RvcmFnZUl0ZW1BZGRlZChpZCwga2V5LCBuZXdWYWx1ZSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2Zyb250ZW5kLT5kb21zdG9yYWdlKCktPmRvbVN0b3JhZ2VJdGVtVXBkYXRlZChpZCwg
a2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
ZG9tU3RvcmFnZUl0ZW1VcGRhdGVkKGlkLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiB9CiAK
IFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0
b3JhZ2VBcmVhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIHN0b3JhZ2VJZCwgRnJhbWUqJiB0YXJnZXRGcmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCBhOWEw
OGNkLi44NGFiOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kOworY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcjsK
IGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBj
bGFzcyBQYWdlOwpAQCAtNDksNyArNDksNyBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIAogdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiwgcHVi
bGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpET01TdG9yYWdlQ29tbWFuZEhhbmRsZXIg
eworY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VB
Z2VudCwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpET01TdG9yYWdlQ29tbWFu
ZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQogICAgIHsKQEAgLTU3LDggKzU3LDgg
QEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9u
dC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwpAQCAtODEsNyAr
ODEsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdl
QXJlYShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiwgRnJhbWUq
Jik7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAgIEluc3BlY3Rv
ckZyb250ZW5kKiBtX2Zyb250ZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JET01T
dG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBib29s
IG1fZW5hYmxlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBmNDI4OGE3Li43YTc3NDE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBA
IC0yMDEsOCArMjAxLDggQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRPcGVuRGF0
YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UsIGNvbnMKICAgICBSZWZQdHI8SW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gcmVzb3VyY2UgPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlOjpjcmVhdGUoZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lvbik7CiAgICAgbV9yZXNv
dXJjZXMuc2V0KHJlc291cmNlLT5pZCgpLCByZXNvdXJjZSk7CiAgICAgLy8gUmVzb3VyY2VzIGFy
ZSBvbmx5IGJvdW5kIHdoaWxlIHZpc2libGUuCi0gICAgaWYgKG1fZnJvbnRlbmQgJiYgbV9lbmFi
bGVkKQotICAgICAgICByZXNvdXJjZS0+YmluZChtX2Zyb250ZW5kKTsKKyAgICBpZiAobV9mcm9u
dGVuZERpc3BhdGNoZXIgJiYgbV9lbmFibGVkKQorICAgICAgICByZXNvdXJjZS0+YmluZChtX2Zy
b250ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6Y2xlYXJSZXNvdXJjZXMoKQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudDo6Y2xlYXJSZXNvdXJjZXMoKQogfQogCiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50
OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dD4oIkRhdGFiYXNlIiwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckJhc2VB
Z2VudChBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAg
LCBtX2VuYWJsZWQoZmFsc2UpCiB7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50KHRoaXMpOwpAQCAtMjIyLDE1ICsyMjIsMTcgQEAgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudDo6fkluc3BlY3RvckRhdGFiYXNlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgwKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRl
bmQpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmQg
PSBmcm9udGVuZC0+ZGF0YWJhc2UoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CisgICAgYmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyQWdlbnQodGhpcyk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIElu
c3BlY3RvckRhdGFiYXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIHsK
LSAgICBtX2Zyb250ZW5kID0gMDsKLSAgICBkaXNhYmxlKDApOworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gbnVsbHB0cjsKKworICAgIGRpc2FibGUobnVsbHB0cik7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKQEAgLTI0MSw3ICsyNDMs
NyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAK
ICAgICBEYXRhYmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgZGF0YWJhc2VzRW5kID0gbV9yZXNv
dXJjZXMuZW5kKCk7CiAgICAgZm9yIChEYXRhYmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQg
PSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZXNFbmQ7ICsraXQpCi0gICAgICAg
IGl0LT52YWx1ZS0+YmluZChtX2Zyb250ZW5kKTsKKyAgICAgICAgaXQtPnZhbHVlLT5iaW5kKG1f
ZnJvbnRlbmREaXNwYXRjaGVyLmdldCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IDU4YTFkNjUuLmEyMWJjYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApA
QCAtNDIsMTIgKzQyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERhdGFiYXNlOwog
Y2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOwot
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4sIHB1
YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RGF0YWJhc2VDb21tYW5kSGFuZGxlciB7
CitjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2Vu
dCwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpEYXRhYmFzZUNvbW1hbmRIYW5k
bGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKICAg
ICB7CkBAIC01NSw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckRhdGFi
YXNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9u
dGVuZCopOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBj
bGVhclJlc291cmNlcygpOwogCkBAIC03Niw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgRGF0YWJh
c2UqIGRhdGFiYXNlRm9ySWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkKTsKICAgICBJbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlKiBmaW5kQnlGaWxlTmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KTsKIAotICAgIEluc3BlY3RvckZyb250ZW5kOjpEYXRhYmFzZSogbV9mcm9udGVuZDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlPj4gRGF0YWJhc2VSZXNvdXJjZXNNYXA7CiAgICAgRGF0YWJh
c2VSZXNvdXJjZXNNYXAgbV9yZXNvdXJjZXM7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAKaW5kZXggMGY0NjUzOC4uOWQ0YjczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAtNTYsMTQgKzU2LDE0
IEBAIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2Uo
UGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZTo6YmluZChJbnNwZWN0b3JGcm9udGVuZDo6RGF0YWJhc2UqIGZyb250ZW5kKQor
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpiaW5kKEluc3BlY3RvckRhdGFiYXNlRnJv
bnRlbmREaXNwYXRjaGVyKiBkYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFzZT4ganNvbk9iamVjdCA9IFR5cGVCdWls
ZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRJZChtX2lkKQog
ICAgICAgICAuc2V0RG9tYWluKG1fZG9tYWluKQogICAgICAgICAuc2V0TmFtZShtX25hbWUpCiAg
ICAgICAgIC5zZXRWZXJzaW9uKG1fdmVyc2lvbik7Ci0gICAgZnJvbnRlbmQtPmFkZERhdGFiYXNl
KGpzb25PYmplY3QpOworICAgIGRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyLT5hZGREYXRhYmFz
ZShqc29uT2JqZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKaW5kZXgg
YTZiYjBjMC4uODBjMmFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oCkBAIC0zOSwxNCArMzksMTQgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBE
YXRhYmFzZTsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogCiBjbGFzcyBJbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSwgY29uc3QgU3RyaW5n
JiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKIAot
ICAgIHZvaWQgYmluZChJbnNwZWN0b3JGcm9udGVuZDo6RGF0YWJhc2UqKTsKKyAgICB2b2lkIGJp
bmQoSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqKTsKICAgICBEYXRhYmFzZSog
ZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CiAgICAgdm9pZCBzZXREYXRh
YmFzZShQYXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSkgeyBtX2RhdGFiYXNlID0gZGF0YWJh
c2U7IH0KICAgICBTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXgg
NmZhZWU4OS4uMmRmNThjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNTUsOSArNTUsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjb25zdCBjaGFyKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmpl
Y3RHcm91cCA9ICJiYWNrdHJhY2UiOwogCiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5z
cGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+KCJEZWJ1Z2dlciIsIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJE
ZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZCgwKQogICAgICwg
bV9wYXVzZWRTY3JpcHRTdGF0ZSgwKQogICAgICwgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3Bv
aW50SUQobm9CcmVha3BvaW50SUQpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCkBAIC0xMjYsNyAr
MTI1LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcq
KQogCiAgICAgZW5hYmxlKCk7CiAKLSAgICBBU1NFUlQobV9mcm9udGVuZCk7CisgICAgQVNTRVJU
KG1fZnJvbnRlbmREaXNwYXRjaGVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKQEAgLTEzNywxNyArMTM2LDE1IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgZGlzYWJsZSgpOwog
fQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZy
b250ZW5kKiBmcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0g
ICAgbV9mcm9udGVuZCA9IGZyb250ZW5kLT5kZWJ1Z2dlcigpOworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBiYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJB
Z2VudCh0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckZyb250
ZW5kKCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoKQogewotICAgIG1fZnJvbnRlbmQgPSAwOwotCi0gICAgaWYgKCFlbmFibGVkKCkp
Ci0gICAgICAgIHJldHVybjsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAK
ICAgICBkaXNhYmxlKCk7CiB9CkBAIC0xNzMsNyArMTcwLDcgQEAgYm9vbCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpydW5uaW5nTmVzdGVkTWVzc2FnZUxvb3AoKQogdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlVHlwZSB0eXBlKQogewogICAgIGlmIChzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNl
cHRpb25zU3RhdGUoKSAhPSBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25z
ICYmIHNvdXJjZSA9PSBDb25zb2xlQVBJTWVzc2FnZVNvdXJjZSAmJiB0eXBlID09IEFzc2VydE1l
c3NhZ2VUeXBlKQotICAgICAgICBicmVha1Byb2dyYW0oSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVn
Z2VyOjpSZWFzb246OkFzc2VydCwgMCk7CisgICAgICAgIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3JE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpBc3NlcnQsIDApOwogfQogCiBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQnJlYWtwb2ludENv
b2tpZShjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhY3Rpb25z
LCBib29sIGlzUmVnZXgsIGJvb2wgYXV0b0NvbnRpbnVlKQpAQCAtNDY3LDcgKzQ2NCw3IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QKICAgICBpbmplY3RlZFNjcmlwdC5nZXRGdW5jdGlvbkRldGFp
bHMoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uSWQsICZkZXRhaWxzKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckZy
b250ZW5kOjpEZWJ1Z2dlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gZGF0YSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1
bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZGF0YSkKIHsKICAgICBpZiAobV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTYzNiw3ICs2MzMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNj
cmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZQogICAgIGlm
IChzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSAhPSBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKSB7CiAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRpcmVjdGl2ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ICAgIGRpcmVjdGl2ZS0+c2V0U3RyaW5nKCJkaXJlY3RpdmVUZXh0IiwgZGlyZWN0aXZlVGV4dCk7
Ci0gICAgICAgIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNv
bjo6Q1NQVmlvbGF0aW9uLCBkaXJlY3RpdmUucmVsZWFzZSgpKTsKKyAgICAgICAgYnJlYWtQcm9n
cmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xh
dGlvbiwgZGlyZWN0aXZlLnJlbGVhc2UoKSk7CiAgICAgfQogfQogCkBAIC02OTAsNyArNjg3LDcg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShTb3VyY2VJRCBz
b3VyY2VJRCwgY29uc3QgU2NyaXB0JiBpblMKICAgICBTdHJpbmcqIHNvdXJjZU1hcFVSTFBhcmFt
ID0gc2NyaXB0LnNvdXJjZU1hcHBpbmdVUkwuaXNOdWxsKCkgPyAwIDogJnNjcmlwdC5zb3VyY2VN
YXBwaW5nVVJMOwogICAgIGNvbnN0IGJvb2wqIGlzQ29udGVudFNjcmlwdCA9IHNjcmlwdC5pc0Nv
bnRlbnRTY3JpcHQgPyAmc2NyaXB0LmlzQ29udGVudFNjcmlwdCA6IDA7CiAgICAgU3RyaW5nIHNj
cmlwdElEU3RyID0gU3RyaW5nOjpudW1iZXIoc291cmNlSUQpOwotICAgIG1fZnJvbnRlbmQtPnNj
cmlwdFBhcnNlZChzY3JpcHRJRFN0ciwgc2NyaXB0VVJMLCBzY3JpcHQuc3RhcnRMaW5lLCBzY3Jp
cHQuc3RhcnRDb2x1bW4sIHNjcmlwdC5lbmRMaW5lLCBzY3JpcHQuZW5kQ29sdW1uLCBpc0NvbnRl
bnRTY3JpcHQsIHNvdXJjZU1hcFVSTFBhcmFtLCBoYXNTb3VyY2VVUkxQYXJhbSk7CisgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnNjcmlwdFBhcnNlZChzY3JpcHRJRFN0ciwgc2NyaXB0VVJMLCBz
Y3JpcHQuc3RhcnRMaW5lLCBzY3JpcHQuc3RhcnRDb2x1bW4sIHNjcmlwdC5lbmRMaW5lLCBzY3Jp
cHQuZW5kQ29sdW1uLCBpc0NvbnRlbnRTY3JpcHQsIHNvdXJjZU1hcFVSTFBhcmFtLCBoYXNTb3Vy
Y2VVUkxQYXJhbSk7CiAKICAgICBtX3NjcmlwdHMuc2V0KHNvdXJjZUlELCBzY3JpcHQpOwogCkBA
IC03MTksMTMgKzcxNiwxMyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNl
U291cmNlKFNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTY3JpcHQmIGluUwogCiAgICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVC
cmVha3BvaW50KGl0LT5rZXksIHNvdXJjZUlELCBicmVha3BvaW50KTsKICAgICAgICAgaWYgKGxv
Y2F0aW9uKQotICAgICAgICAgICAgbV9mcm9udGVuZC0+YnJlYWtwb2ludFJlc29sdmVkKGl0LT5r
ZXksIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5icmVha3Bv
aW50UmVzb2x2ZWQoaXQtPmtleSwgbG9jYXRpb24pOwogICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1fZnJvbnRlbmQtPnNjcmlwdEZhaWxlZFRvUGFy
c2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+c2NyaXB0RmFpbGVkVG9QYXJzZSh1cmwsIGRhdGEsIGZpcnN0
TGluZSwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2Ny
aXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pCkBAIC03
MzcsMTMgKzczNCwxMyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpT
Qzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VgogICAgIGlmICghZXhjZXB0
aW9uLmhhc05vVmFsdWUoKSkgewogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0
ZSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAg
ICAgICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246
OkV4Y2VwdGlvbjsKKyAgICAgICAgICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3JEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFeGNlcHRpb247CiAgICAgICAgICAgICBtX2Jy
ZWFrQXV4RGF0YSA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QoZXhjZXB0aW9uLCAiYmFja3Ry
YWNlIiktPm9wZW5BY2Nlc3NvcnMoKTsKICAgICAgICAgICAgIC8vIG1fYnJlYWtBdXhEYXRhIG1p
Z2h0IGJlIG51bGwgYWZ0ZXIgdGhpcy4KICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZnJvbnRl
bmQtPnBhdXNlZChjdXJyZW50Q2FsbEZyYW1lcygpLCBtX2JyZWFrUmVhc29uLCBtX2JyZWFrQXV4
RGF0YSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnBhdXNlZChjdXJyZW50Q2FsbEZyYW1l
cygpLCBtX2JyZWFrUmVhc29uLCBtX2JyZWFrQXV4RGF0YSk7CiAgICAgbV9qYXZhU2NyaXB0UGF1
c2VTY2hlZHVsZWQgPSBmYWxzZTsKIAogICAgIGlmIChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFr
cG9pbnRJRCAhPSBub0JyZWFrcG9pbnRJRCkgewpAQCAtNzU5LDEwICs3NTYsMTAgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSgpCiAgICAgbV9wYXVzZWRTY3JpcHRT
dGF0ZSA9IDA7CiAgICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2NyaXB0VmFsdWUoKTsKICAgICBj
bGVhckJyZWFrRGV0YWlscygpOwotICAgIG1fZnJvbnRlbmQtPnJlc3VtZWQoKTsKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+cmVzdW1lZCgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6
RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gZGF0YSkKIHsKICAgICBtX2JyZWFrUmVhc29uID0gYnJlYWtSZWFzb247
CiAgICAgbV9icmVha0F1eERhdGEgPSBkYXRhOwpAQCAtNzkzLDcgKzc5MCw3IEBAIGJvb2wgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6YXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZykKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckJyZWFrRGV0YWlscygpCiB7
Ci0gICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3RvckZyb250ZW5kOjpEZWJ1Z2dlcjo6UmVhc29u
OjpPdGhlcjsKKyAgICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbjo6T3RoZXI7CiAgICAgbV9icmVha0F1eERhdGEgPSAwOwogfQogCkBA
IC04MDIsOCArNzk5LDggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNldCgpCiAg
ICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5jbGVhckJyZWFrcG9pbnRzKCk7CiAgICAgbV9zY3JpcHRz
LmNsZWFyKCk7CiAgICAgbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3Bv
aW50SURzLmNsZWFyKCk7Ci0gICAgaWYgKG1fZnJvbnRlbmQpCi0gICAgICAgIG1fZnJvbnRlbmQt
Pmdsb2JhbE9iamVjdENsZWFyZWQoKTsKKyAgICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIpCisg
ICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5nbG9iYWxPYmplY3RDbGVhcmVkKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDk1ZTE5ZjQuLjQyOTUxZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAt
NTEsNyArNTEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3RlZFNjcmlw
dE1hbmFnZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3RvckFycmF5
OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7CkBAIC02MSw3
ICs2MCw3IEBAIGNsYXNzIFNjcmlwdFZhbHVlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQ8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4sIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVy
LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRlYnVnZ2VyQ29tbWFuZEhhbmRs
ZXIgeworY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQsIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkRlYnVnZ2VyQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogYmFja3RyYWNlT2JqZWN0R3JvdXA7CkBA
IC03Miw4ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2FuU2V0U2NyaXB0U291
cmNlKEVycm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1YWwgdm9pZCBzdXBwb3J0c1NlcGFy
YXRlU2NyaXB0Q29tcGlsYXRpb25BbmRFeGVjdXRpb24oRXJyb3JTdHJpbmcqLCBib29sKik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIGJvb2wgaXNQYXVzZWQoKTsKICAg
ICBib29sIHJ1bm5pbmdOZXN0ZWRNZXNzYWdlTG9vcCgpOwpAQCAtMTEzLDkgKzExMiw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJ1blNjcmlwdChFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6U2NyaXB0SWQmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29u
c3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9u
c0FuZE11dGVDb25zb2xlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcqKTsKIAotICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JG
cm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGRhdGEpOworICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRl
bWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJy
ZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CiAgICAgdm9pZCBj
YW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpOwotICAgIHZvaWQgYnJlYWtQcm9ncmFtKEluc3Bl
Y3RvckZyb250ZW5kOjpEZWJ1Z2dlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oSW5zcGVj
dG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwogICAgIHZpcnR1YWwgdm9pZCBzY3Jp
cHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KTsKIAog
ICAgIGNsYXNzIExpc3RlbmVyIHsKQEAgLTE2OCwxNCArMTY3LDE0IEBAIHByaXZhdGU6CiAgICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4+IEJyZWFrcG9p
bnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdn
ZXIqIG1fZnJvbnRlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBKU0M6OkV4ZWNTdGF0
ZSogbV9wYXVzZWRTY3JpcHRTdGF0ZTsKICAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxsU3Rh
Y2s7CiAgICAgU2NyaXB0c01hcCBtX3NjcmlwdHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJU
b0RlYnVnU2VydmVyQnJlYWtwb2ludElEc01hcCBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1
Z1NlcnZlckJyZWFrcG9pbnRJRHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJUb0JyZWFrcG9p
bnRNYXAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHM7CiAgICAgQnJlYWtwb2ludElEIG1fY29udGlu
dWVUb0xvY2F0aW9uQnJlYWtwb2ludElEOwotICAgIEluc3BlY3RvckZyb250ZW5kOjpEZWJ1Z2dl
cjo6UmVhc29uOjpFbnVtIG1fYnJlYWtSZWFzb247CisgICAgSW5zcGVjdG9yRGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBtX2JyZWFrUmVhc29uOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IG1fYnJlYWtBdXhEYXRhOwogICAgIGJvb2wgbV9lbmFibGVkOwogICAg
IGJvb2wgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAppbmRleCA0YjJj
MWI2Li44Y2NiZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTQ5LDkgKzQ5LDggQEAgUGFzc093blB0
cjxJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudD4gSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6
OmNyZWF0ZShJbnN0cnUKIH0KIAogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Okluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDog
SW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50PigiSGVhcFByb2Zp
bGVyIiwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJ
SUxpdGVyYWwoIkhlYXBQcm9maWxlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9u
dGVuZCgwKQogICAgICwgbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlcigxKQog
ICAgICwgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZChmYWxzZSkKIHsKQEAgLTczLDIzICs3Miwy
NSBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpyZXNldFN0YXRlKCkKIAogdm9p
ZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVuZFByb2ZpbGVzKCkKIHsK
LSAgICBpZiAoIW1fZnJvbnRlbmQpCisgICAgaWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hlcikKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmICghbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmIChtX3NuYXBzaG90cy5pc0VtcHR5KCkpCi0gICAgICAgIG1fZnJv
bnRlbmQtPnJlc2V0UHJvZmlsZXMoKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJl
c2V0UHJvZmlsZXMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6c2V0
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQordm9pZCBJbnNwZWN0b3JIZWFw
UHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZCA9IGZyb250ZW5kLT5oZWFwcHJv
ZmlsZXIoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9ySGVhcFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwor
ICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOwogfQogCi12b2lkIElu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9y
SGVhcFByb2ZpbGVyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIHsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CisKICAgICBtX3Byb2ZpbGVIZWFkZXJz
UmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgbV9mcm9udGVuZCA9IDA7CiB9CiAKIHZvaWQgSW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNvbGxlY3RHYXJiYWdlKFdlYkNvcmU6OkVycm9yU3RyaW5n
KikKQEAgLTEyNSwxMiArMTI2LDEyIEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6
OmdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCByCiB7CiAgICAg
Y2xhc3MgT3V0cHV0U3RyZWFtIDogcHVibGljIFNjcmlwdEhlYXBTbmFwc2hvdDo6T3V0cHV0U3Ry
ZWFtIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE91dHB1dFN0cmVhbShJbnNwZWN0b3JGcm9udGVu
ZDo6SGVhcFByb2ZpbGVyKiBmcm9udGVuZCwgdW5zaWduZWQgdWlkKQotICAgICAgICAgICAgOiBt
X2Zyb250ZW5kKGZyb250ZW5kKSwgbV91aWQodWlkKSB7IH0KLSAgICAgICAgdm9pZCBXcml0ZShj
b25zdCBTdHJpbmcmIGNodW5rKSB7IG1fZnJvbnRlbmQtPmFkZEhlYXBTbmFwc2hvdENodW5rKG1f
dWlkLCBjaHVuayk7IH0KLSAgICAgICAgdm9pZCBDbG9zZSgpIHsgbV9mcm9udGVuZC0+ZmluaXNo
SGVhcFNuYXBzaG90KG1fdWlkKTsgfQorICAgICAgICBPdXRwdXRTdHJlYW0oSW5zcGVjdG9ySGVh
cFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyKiBmcm9udGVuZCwgdW5zaWduZWQgdWlkKQorICAg
ICAgICAgICAgOiBtX2Zyb250ZW5kRGlzcGF0Y2hlcihmcm9udGVuZCksIG1fdWlkKHVpZCkgeyB9
CisgICAgICAgIHZvaWQgV3JpdGUoY29uc3QgU3RyaW5nJiBjaHVuaykgeyBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+YWRkSGVhcFNuYXBzaG90Q2h1bmsobV91aWQsIGNodW5rKTsgfQorICAgICAgICB2
b2lkIENsb3NlKCkgeyBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZmluaXNoSGVhcFNuYXBzaG90KG1f
dWlkKTsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kOjpIZWFwUHJv
ZmlsZXIqIG1fZnJvbnRlbmQ7CisgICAgICAgIEluc3BlY3RvckhlYXBQcm9maWxlckZyb250ZW5k
RGlzcGF0Y2hlciogbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgICAgIGludCBtX3VpZDsKICAg
ICB9OwogCkBAIC0xNDEsOCArMTQyLDggQEAgdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dDo6Z2V0SGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IHIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90PiBzbmFwc2hv
dCA9IGl0LT52YWx1ZTsKLSAgICBpZiAobV9mcm9udGVuZCkgewotICAgICAgICBPdXRwdXRTdHJl
YW0gc3RyZWFtKG1fZnJvbnRlbmQsIHVpZCk7CisgICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVy
KSB7CisgICAgICAgIE91dHB1dFN0cmVhbSBzdHJlYW0obV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0
KCksIHVpZCk7CiAgICAgICAgIHNuYXBzaG90LT53cml0ZUpTT04oJnN0cmVhbSk7CiAgICAgfQog
fQpAQCAtMTU4LDMzICsxNTksMzMgQEAgdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6
dGFrZUhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIHJlcG8KIHsKICAgICBj
bGFzcyBIZWFwU25hcHNob3RQcm9ncmVzczogcHVibGljIFNjcmlwdFByb2ZpbGVyOjpIZWFwU25h
cHNob3RQcm9ncmVzcyB7CiAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBIZWFwU25hcHNo
b3RQcm9ncmVzcyhJbnNwZWN0b3JGcm9udGVuZDo6SGVhcFByb2ZpbGVyKiBmcm9udGVuZCkKLSAg
ICAgICAgICAgIDogbV9mcm9udGVuZChmcm9udGVuZCkgeyB9CisgICAgICAgIGV4cGxpY2l0IEhl
YXBTbmFwc2hvdFByb2dyZXNzKEluc3BlY3RvckhlYXBQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hl
ciogZnJvbnRlbmQpCisgICAgICAgICAgICA6IG1fZnJvbnRlbmREaXNwYXRjaGVyKGZyb250ZW5k
KSB7IH0KICAgICAgICAgdm9pZCBTdGFydChpbnQgdG90YWxXb3JrKQogICAgICAgICB7CiAgICAg
ICAgICAgICBtX3RvdGFsV29yayA9IHRvdGFsV29yazsKICAgICAgICAgfQogICAgICAgICB2b2lk
IFdvcmtlZChpbnQgd29ya0RvbmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2Zyb250
ZW5kKQotICAgICAgICAgICAgICAgIG1fZnJvbnRlbmQtPnJlcG9ydEhlYXBTbmFwc2hvdFByb2dy
ZXNzKHdvcmtEb25lLCBtX3RvdGFsV29yayk7CisgICAgICAgICAgICBpZiAobV9mcm9udGVuZERp
c3BhdGNoZXIpCisgICAgICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcG9ydEhl
YXBTbmFwc2hvdFByb2dyZXNzKHdvcmtEb25lLCBtX3RvdGFsV29yayk7CiAgICAgICAgIH0KICAg
ICAgICAgdm9pZCBEb25lKCkgeyB9CiAgICAgICAgIGJvb2wgaXNDYW5jZWxlZCgpIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkhlYXBQ
cm9maWxlciogbV9mcm9udGVuZDsKKyAgICAgICAgSW5zcGVjdG9ySGVhcFByb2ZpbGVyRnJvbnRl
bmREaXNwYXRjaGVyKiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICAgICAgaW50IG1fdG90YWxX
b3JrOwogICAgIH07CiAKICAgICBTdHJpbmcgdGl0bGUgPSBtYWtlU3RyaW5nKFVzZXJJbml0aWF0
ZWRQcm9maWxlTmFtZUhlYXAsICcuJywgU3RyaW5nOjpudW1iZXIobV9uZXh0VXNlckluaXRpYXRl
ZEhlYXBTbmFwc2hvdE51bWJlcikpOwogICAgICsrbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFw
c2hvdE51bWJlcjsKIAotICAgIEhlYXBTbmFwc2hvdFByb2dyZXNzIHByb2dyZXNzKHJlcG9ydFBy
b2dyZXNzICYmICpyZXBvcnRQcm9ncmVzcyA/IG1fZnJvbnRlbmQgOiAwKTsKKyAgICBIZWFwU25h
cHNob3RQcm9ncmVzcyBwcm9ncmVzcyhyZXBvcnRQcm9ncmVzcyAmJiAqcmVwb3J0UHJvZ3Jlc3Mg
PyBtX2Zyb250ZW5kRGlzcGF0Y2hlci5nZXQoKSA6IG51bGxwdHIpOwogICAgIFJlZlB0cjxTY3Jp
cHRIZWFwU25hcHNob3Q+IHNuYXBzaG90ID0gU2NyaXB0UHJvZmlsZXI6OnRha2VIZWFwU25hcHNo
b3QodGl0bGUsICZwcm9ncmVzcyk7CiAgICAgaWYgKHNuYXBzaG90KSB7CiAgICAgICAgIG1fc25h
cHNob3RzLmFkZChzbmFwc2hvdC0+dWlkKCksIHNuYXBzaG90KTsKLSAgICAgICAgaWYgKG1fZnJv
bnRlbmQpCi0gICAgICAgICAgICBtX2Zyb250ZW5kLT5hZGRQcm9maWxlSGVhZGVyKGNyZWF0ZVNu
YXBzaG90SGVhZGVyKCpzbmFwc2hvdCkpOworICAgICAgICBpZiAobV9mcm9udGVuZERpc3BhdGNo
ZXIpCisgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YWRkUHJvZmlsZUhlYWRlcihj
cmVhdGVTbmFwc2hvdEhlYWRlcigqc25hcHNob3QpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKaW5k
ZXggOTM1ZTg5YS4uMjZjMmQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3Mg
U2NyaXB0UHJvZmlsZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIElu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6SGVhcFByb2ZpbGVyQ29tbWFuZEhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OkhlYXBQcm9maWxlckNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVjdGVkU2NyaXB0
TWFuYWdlciopOwpAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdl
dEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGludCB1aWQpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJG
cm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9yU3Ry
aW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpOwogCkBAIC04Myw3ICs4Myw3IEBAIHBy
aXZhdGU6CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxl
SGVhZGVyPiBjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25zdCBTY3JpcHRIZWFwU25hcHNob3QmKTsK
IAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0g
ICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkhlYXBQcm9maWxlciogbV9mcm9udGVuZDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9ySGVhcFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKICAgICB1bnNpZ25lZCBtX25leHRVc2VySW5pdGlhdGVkSGVhcFNu
YXBzaG90TnVtYmVyOwogICAgIElkVG9IZWFwU25hcHNob3RNYXAgbV9zbmFwc2hvdHM7CiAgICAg
Ym9vbCBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNGY4NzkxMi4uMWUy
NzIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCkBAIC01NTcsNyArNTU3LDcgQEAgcHVibGljOgogfSAvLyBuYW1lc3Bh
Y2UKIAogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6Okluc3BlY3RvckluZGV4ZWREQkFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4oIklu
ZGV4ZWREQiIsIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQo
QVNDSUlMaXRlcmFsKCJJbmRleGVkREIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fcGFn
ZUFnZW50KHBhZ2VBZ2VudCkKIHsKQEAgLTU2Nyw5ICs1NjcsMTQgQEAgSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JJbmRleGVk
REJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
LSAgICBkaXNhYmxlKDApOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRo
aXMpOworfQorCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCgpCit7CisgICAgZGlzYWJsZShudWxscHRyKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggOGY5YThj
Ny4uZWY0MGRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgSW5zcGVjdG9yUGFnZUFn
ZW50OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckluZGV4ZWRE
QkFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbmRleGVkREJDb21t
YW5kSGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5kZXhl
ZERCQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3Bl
Y3RvckluZGV4ZWREQkFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIs
IEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQogICAgIHsKQEAgLTUyLDcgKzUyLDggQEAg
cHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZy
b250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAKaW5kZXggMzE0
MmVkYS4uZjI2ZDcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcklucHV0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnB1dEFnZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBJbnNwZWN0b3JJbnB1dEFnZW50OjpJbnNwZWN0b3JJbnB1dEFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2UpCi0gICAgOiBJbnNwZWN0b3JC
YXNlQWdlbnQ8SW5zcGVjdG9ySW5wdXRBZ2VudD4oIklucHV0IiwgaW5zdHJ1bWVudGluZ0FnZW50
cykKKyAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIklucHV0IiksIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2UocGFnZSkKIHsKIH0KQEAgLTYxLDYgKzYxLDE1
IEBAIEluc3BlY3RvcklucHV0QWdlbnQ6On5JbnNwZWN0b3JJbnB1dEFnZW50KCkKIHsKIH0KIAor
dm9pZCBJbnNwZWN0b3JJbnB1dEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQoreworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRo
aXMpOworfQorCit2b2lkIEluc3BlY3RvcklucHV0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKCkKK3sKK30KKwogdm9pZCBJbnNwZWN0b3JJbnB1dEFnZW50OjpkaXNwYXRjaEtl
eUV2ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBpbnQq
IG1vZGlmaWVycywgY29uc3QgZG91YmxlKiB0aW1lc3RhbXAsIGNvbnN0IFN0cmluZyogdGV4dCwg
Y29uc3QgU3RyaW5nKiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nKiBrZXlJZGVudGlmaWVy
LCBjb25zdCBpbnQqIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgY29uc3QgaW50KiBuYXRpdmVWaXJ0
dWFsS2V5Q29kZSwgY29uc3QgaW50KiBtYWNDaGFyQ29kZSwgY29uc3QgYm9vbCogYXV0b1JlcGVh
dCwgY29uc3QgYm9vbCogaXNLZXlwYWQsIGNvbnN0IGJvb2wqIGlzU3lzdGVtS2V5KQogewogICAg
IFBsYXRmb3JtRXZlbnQ6OlR5cGUgY29udmVydGVkVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCmluZGV4IGE4NWFkM2FhLi4zZjcxZTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3RvcklucHV0QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3RvcklucHV0QWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OklucHV0Q29tbWFuZEhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9ySW5wdXRBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
SW5wdXRDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
SW5wdXRBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9ySW5w
dXRBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IFBhZ2UqIHBhZ2UpCkBAIC01NCw2ICs1NCw5IEBAIHB1YmxpYzoKIAogICAgIH5JbnNwZWN0b3JJ
bnB1dEFnZW50KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKCkgT1ZFUlJJREU7CisKICAgICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVu
ZCBmb3Igc2ltdWxhdGluZyBpbnB1dC4KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hLZXlFdmVu
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgaW50KiBtb2RpZmllcnMs
IGNvbnN0IGRvdWJsZSogdGltZXN0YW1wLCBjb25zdCBTdHJpbmcqIHRleHQsIGNvbnN0IFN0cmlu
ZyogdW5tb2RpZmllZFRleHQsIGNvbnN0IFN0cmluZyoga2V5SWRlbnRpZmllciwgY29uc3QgaW50
KiB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGNvbnN0IGludCogbmF0aXZlVmlydHVhbEtleUNvZGUs
IGNvbnN0IGludCogbWFjQ2hhckNvZGUsIGNvbnN0IGJvb2wqIGF1dG9SZXBlYXQsIGNvbnN0IGJv
b2wqIGlzS2V5cGFkLCBjb25zdCBib29sKiBpc1N5c3RlbUtleSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoTW91c2VFdmVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50
IHgsIGludCB5LCBjb25zdCBpbnQqIG1vZGlmaWVycywgY29uc3QgZG91YmxlKiB0aW1lc3RhbXAs
IGNvbnN0IFN0cmluZyogYnV0dG9uLCBjb25zdCBpbnQqIGNsaWNrQ291bnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5k
ZXggOWY1MmM2ZS4uMzVhNTExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC00OSw4ICs0OSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDog
SW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckxheWVyVHJlZUFnZW50PigiTGF5ZXJUcmVlIiwg
aW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fZnJvbnRlbmQoMCkKKyAgICA6IEluc3BlY3Rv
ckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRz
KQogewogfQogCkBAIC01OSwxNSArNTgsMTcgQEAgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6On5J
bnNwZWN0b3JMYXllclRyZWVBZ2VudCgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
KQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZCA9
IGZyb250ZW5kLT5sYXllcnRyZWUoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVu
ZENoYW5uZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOwog
fQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkK
IHsKLSAgICBtX2Zyb250ZW5kID0gMDsKLSAgICBkaXNhYmxlKDApOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gbnVsbHB0cjsKKworICAgIGRpc2FibGUobnVsbHB0cik7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlc2V0KCkKQEAgLTkwLDcgKzkxLDcgQEAgdm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAKIHZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSgpCiB7Ci0gICAgbV9mcm9u
dGVuZC0+bGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmxh
eWVyVHJlZURpZENoYW5nZSgpOwogfQogCiB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpy
ZW5kZXJMYXllckRlc3Ryb3llZChjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCmlu
ZGV4IDUzYmE2MzEuLjI3ZDU1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Okxh
eWVyVHJlZUNvbW1hbmRIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50IDog
cHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpMYXllclRyZWVDb21tYW5kSGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgIHsKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgog
ICAgIH0KICAgICB+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwotICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCgpIE9WRVJSSURFOwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIHZvaWQgbGF5ZXJUcmVlRGlk
Q2hhbmdlKCk7CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGJpbmRQc2V1
ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqKTsKICAgICB2b2lkIHVuYmluZFBzZXVkb0VsZW1lbnQo
UHNldWRvRWxlbWVudCopOwogCi0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkxheWVyVHJlZSogbV9m
cm9udGVuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yTGF5ZXJUcmVlRnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKIAogICAgIEhhc2hNYXA8Y29uc3QgUmVu
ZGVyTGF5ZXIqLCBTdHJpbmc+IG1fZG9jdW1lbnRMYXllclRvSWRNYXA7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIGNvbnN0IFJlbmRlckxheWVyKj4gbV9pZFRvTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAyNjMyYmQ0Li4z
YzI2OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHAKQEAgLTY3LDYgKzY3LDE1IEBAIEluc3BlY3Rvck1lbW9yeUFnZW50Ojp+SW5z
cGVjdG9yTWVtb3J5QWdlbnQoKQogewogfQogCit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQoreworICAgIGJhY2tl
bmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOworfQorCit2b2lkIEluc3BlY3Rvck1l
bW9yeUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpCit7Cit9CisKIHZvaWQg
SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTUNvdW50ZXJzKEVycm9yU3RyaW5nKiwgaW50KiBk
b2N1bWVudHMsIGludCogbm9kZXMsIGludCoganNFdmVudExpc3RlbmVycykKIHsKICAgICAqZG9j
dW1lbnRzID0gSW5zcGVjdG9yQ291bnRlcnM6OmNvdW50ZXJWYWx1ZShJbnNwZWN0b3JDb3VudGVy
czo6RG9jdW1lbnRDb3VudGVyKTsKQEAgLTc1LDggKzg0LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1v
cnlBZ2VudDo6Z2V0RE9NQ291bnRlcnMoRXJyb3JTdHJpbmcqLCBpbnQqIGRvY3VtZW50cywgaW50
KiBub2QKIH0KIAogSW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JC
YXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KCJNZW1vcnkiLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQotICAgICwgbV9mcm9udGVuZCgwKQorICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJ
TGl0ZXJhbCgiTWVtb3J5IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7CiB9CiAKQEAgLTg1LDE4
ICs5Myw2IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+IEluc3BlY3Rvck1lbW9y
eUFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBJbnNwZWN0b3JNZW1vcnlBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzKSk7CiB9CiAKLQotdm9p
ZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZy
b250ZW5kKQotewotICAgIEFTU0VSVCghbV9mcm9udGVuZCk7Ci0gICAgbV9mcm9udGVuZCA9IGZy
b250ZW5kLT5tZW1vcnkoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y2xlYXJG
cm9udGVuZCgpCi17Ci0gICAgbV9mcm9udGVuZCA9IDA7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IDcxZDQ3MGQuLmYxNGRiYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5o
CkBAIC00NSwyMSArNDUsMTkgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rvck1lbW9yeUFnZW50IDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JNZW1vcnlBZ2VudD4sIHB1YmxpYyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWVtb3J5Q29tbWFuZEhhbmRsZXIgeworY2xhc3MgSW5z
cGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1lbW9yeUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JNZW1vcnlBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JNZW1v
cnlBZ2VudCgpOwogCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCgpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIGdldERPTUNvdW50ZXJzKEVycm9yU3Ry
aW5nKiwgaW50KiBkb2N1bWVudHMsIGludCogbm9kZXMsIGludCoganNFdmVudExpc3RlbmVycyk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwotCiBwcml2YXRlOgogICAgIEluc3BlY3Rv
ck1lbW9yeUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKLQotICAgIEluc3BlY3RvckZyb250
ZW5kOjpNZW1vcnkqIG1fZnJvbnRlbmQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4
IDM2NTkxOWUuLmUxMzZkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zNDgsMTIgKzM0OCwxMSBAQCBUeXBlQnVpbGRlcjo6UGFn
ZTo6UmVzb3VyY2VUeXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VU
eXBlSnNvbgogfQogCiBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlLCBJbnNwZWN0
b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9yT3ZlcmxheSog
b3ZlcmxheSkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQYWdlQWdlbnQ+KCJQ
YWdlIiwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJ
SUxpdGVyYWwoIlBhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZShwYWdl
KQogICAgICwgbV9pbnNwZWN0b3JBZ2VudChpbnNwZWN0b3JBZ2VudCkKICAgICAsIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fY2xpZW50KGNs
aWVudCkKLSAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQogICAg
ICwgbV9sYXN0U2NyaXB0SWRlbnRpZmllcigwKQogICAgICwgbV9zY3JlZW5XaWR0aE92ZXJyaWRl
KDApCkBAIC0zNjksMTkgKzM2OCwyMSBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBh
Z2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLAogewogfQog
Ci12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRl
bmQgPSBmcm9udGVuZC0+cGFnZSgpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5u
ZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOwogfQogCi12
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKQogeworICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gbnVsbHB0cjsKKwogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIGRp
c2FibGUoJmVycm9yKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHVwZGF0ZVRvdWNo
RXZlbnRFbXVsYXRpb25JblBhZ2UoZmFsc2UpOwogI2VuZGlmCi0gICAgbV9mcm9udGVuZCA9IDA7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp3ZWJWaWV3UmVzaXplZChjb25zdCBJbnRT
aXplJiBzaXplKQpAQCAtODE5LDcgKzgyMCw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29yCiAg
ICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci0+ZGlzY2FyZEluamVjdGVkU2NyaXB0cygpOwogCi0gICAgaWYgKCFtX2Zyb250ZW5kKQor
ICAgIGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX3NjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKSB7CkBAIC04MzgsMTIgKzgzOSwxMiBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBm
cmFtZSwgRE9NV3JhcHBlcldvcgogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRvbUNvbnRlbnRF
dmVudEZpcmVkKCkKIHsKICAgICBtX2lzRmlyc3RMYXlvdXRBZnRlck9uTG9hZCA9IHRydWU7Ci0g
ICAgbV9mcm9udGVuZC0+ZG9tQ29udGVudEV2ZW50RmlyZWQoY3VycmVudFRpbWUoKSk7CisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmRvbUNvbnRlbnRFdmVudEZpcmVkKGN1cnJlbnRUaW1lKCkp
OwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZEV2ZW50RmlyZWQoKQogewotICAg
IG1fZnJvbnRlbmQtPmxvYWRFdmVudEZpcmVkKGN1cnJlbnRUaW1lKCkpOworICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5sb2FkRXZlbnRGaXJlZChjdXJyZW50VGltZSgpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CkBAIC04NTQsMTQgKzg1NSwxNCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZp
Z2F0ZWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgbV9wZW5kaW5nU2NyaXB0VG9F
dmFsdWF0ZU9uTG9hZE9uY2UgPSBTdHJpbmcoKTsKICAgICAgICAgbV9wZW5kaW5nU2NyaXB0UHJl
cHJvY2Vzc29yID0gU3RyaW5nKCk7CiAgICAgfQotICAgIG1fZnJvbnRlbmQtPmZyYW1lTmF2aWdh
dGVkKGJ1aWxkT2JqZWN0Rm9yRnJhbWUobG9hZGVyLT5mcmFtZSgpKSk7CisgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmZyYW1lTmF2aWdhdGVkKGJ1aWxkT2JqZWN0Rm9yRnJhbWUobG9hZGVyLT5m
cmFtZSgpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZURldGFjaGVkKEZy
YW1lKiBmcmFtZSkKIHsKICAgICBIYXNoTWFwPEZyYW1lKiwgU3RyaW5nPjo6aXRlcmF0b3IgaXRl
cmF0b3IgPSBtX2ZyYW1lVG9JZGVudGlmaWVyLmZpbmQoZnJhbWUpOwogICAgIGlmIChpdGVyYXRv
ciAhPSBtX2ZyYW1lVG9JZGVudGlmaWVyLmVuZCgpKSB7Ci0gICAgICAgIG1fZnJvbnRlbmQtPmZy
YW1lRGV0YWNoZWQoaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPmZyYW1lRGV0YWNoZWQoaXRlcmF0b3ItPnZhbHVlKTsKICAgICAgICAgbV9pZGVudGlmaWVy
VG9GcmFtZS5yZW1vdmUoaXRlcmF0b3ItPnZhbHVlKTsKICAgICAgICAgbV9mcmFtZVRvSWRlbnRp
Zmllci5yZW1vdmUoaXRlcmF0b3IpOwogICAgIH0KQEAgLTk0NSwzMiArOTQ2LDMyIEBAIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50Ojpsb2FkZXJEZXRhY2hlZEZyb21GcmFtZShEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVTdGFydGVkTG9hZGlu
ZyhGcmFtZSogZnJhbWUpCiB7Ci0gICAgbV9mcm9udGVuZC0+ZnJhbWVTdGFydGVkTG9hZGluZyhm
cmFtZUlkKGZyYW1lKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmZyYW1lU3RhcnRlZExv
YWRpbmcoZnJhbWVJZChmcmFtZSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJh
bWVTdG9wcGVkTG9hZGluZyhGcmFtZSogZnJhbWUpCiB7Ci0gICAgbV9mcm9udGVuZC0+ZnJhbWVT
dG9wcGVkTG9hZGluZyhmcmFtZUlkKGZyYW1lKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmZyYW1lU3RvcHBlZExvYWRpbmcoZnJhbWVJZChmcmFtZSkpOwogfQogCiB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6ZnJhbWVTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lKiBmcmFtZSwgZG91Ymxl
IGRlbGF5KQogewotICAgIG1fZnJvbnRlbmQtPmZyYW1lU2NoZWR1bGVkTmF2aWdhdGlvbihmcmFt
ZUlkKGZyYW1lKSwgZGVsYXkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5mcmFtZVNjaGVk
dWxlZE5hdmlnYXRpb24oZnJhbWVJZChmcmFtZSksIGRlbGF5KTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUqIGZyYW1l
KQogewotICAgIG1fZnJvbnRlbmQtPmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oZnJh
bWVJZChmcmFtZSkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5mcmFtZUNsZWFyZWRTY2hl
ZHVsZWROYXZpZ2F0aW9uKGZyYW1lSWQoZnJhbWUpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OndpbGxSdW5KYXZhU2NyaXB0RGlhbG9nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
LSAgICBtX2Zyb250ZW5kLT5qYXZhc2NyaXB0RGlhbG9nT3BlbmluZyhtZXNzYWdlKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+amF2YXNjcmlwdERpYWxvZ09wZW5pbmcobWVzc2FnZSk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRSdW5KYXZhU2NyaXB0RGlhbG9nKCkKIHsK
LSAgICBtX2Zyb250ZW5kLT5qYXZhc2NyaXB0RGlhbG9nQ2xvc2VkKCk7CisgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmphdmFzY3JpcHREaWFsb2dDbG9zZWQoKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmFwcGx5U2NyZWVuV2lkdGhPdmVycmlkZShsb25nKiB3aWR0aCkKQEAgLTEw
MzUsNyArMTAzNiw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzY3JpcHRzRW5hYmxlZChi
b29sIGlzRW5hYmxlZCkKICAgICBpZiAobV9pZ25vcmVTY3JpcHRzRW5hYmxlZE5vdGlmaWNhdGlv
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9udGVuZC0+c2NyaXB0c0VuYWJsZWQoaXNF
bmFibGVkKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2NyaXB0c0VuYWJsZWQoaXNFbmFi
bGVkKTsKIH0KIAogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IEluc3BlY3Rv
clBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggNGU2YWI3Yi4uNzY0
NWY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aApAQCAtNjcsNyArNjcsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQYWdlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OlBhZ2VDb21tYW5kSGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JQ
YWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OlBhZ2VDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKIHB1YmxpYzoKICAgICBlbnVtIFJlc291cmNlVHlw
ZSB7CkBAIC0xNjIsOCArMTYyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2NyaXB0c0VuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpOwogCiAgICAgLy8gSW5zcGVjdG9yIENvbnRyb2xsZXIgQVBJCi0gICAg
dmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIHdlYlZpZXdSZXNpemVkKGNvbnN0
IEludFNpemUmKTsKIApAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
QWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwotICAg
IEluc3BlY3RvckZyb250ZW5kOjpQYWdlKiBtX2Zyb250ZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3JQYWdlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsK
ICAgICBJbnNwZWN0b3JPdmVybGF5KiBtX292ZXJsYXk7CiAgICAgbG9uZyBtX2xhc3RTY3JpcHRJ
ZGVudGlmaWVyOwogICAgIFN0cmluZyBtX3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25j
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcAppbmRleCBkNWMxODQ2Li5kNjQ2NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0xMjEsMTAgKzEyMSw5
IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBCiAjZW5kaWYKIAogSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCwgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JC
YXNlQWdlbnQ8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4oIlByb2ZpbGVyIiwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKKyAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIlByb2ZpbGVy
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2NvbnNvbGVBZ2VudChjb25zb2xlQWdl
bnQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIp
Ci0gICAgLCBtX2Zyb250ZW5kKDApCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3By
b2ZpbGVIZWFkZXJzUmVxdWVzdGVkKGZhbHNlKQogICAgICwgbV9yZWNvcmRpbmdDUFVQcm9maWxl
KGZhbHNlKQpAQCAtMTQ1LDE0ICsxNDQsMTQgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50
OjphZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW4KIHsK
ICAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IHBycFByb2ZpbGU7CiAgICAgbV9w
cm9maWxlcy5hZGQocHJvZmlsZS0+dWlkKCksIHByb2ZpbGUpOwotICAgIGlmIChtX2Zyb250ZW5k
ICYmIG1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQpCi0gICAgICAgIG1fZnJvbnRlbmQtPmFkZFBy
b2ZpbGVIZWFkZXIoY3JlYXRlUHJvZmlsZUhlYWRlcigqcHJvZmlsZSkpOworICAgIGlmIChtX2Zy
b250ZW5kRGlzcGF0Y2hlciAmJiBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkKQorICAgICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+YWRkUHJvZmlsZUhlYWRlcihjcmVhdGVQcm9maWxlSGVhZGVy
KCpwcm9maWxlKSk7CiAgICAgYWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShwcm9m
aWxlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShQ
YXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAg
aWYgKCFtX2Zyb250ZW5kKQorICAgIGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIpCiAgICAgICAg
IHJldHVybjsKICAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IHBycFByb2ZpbGU7
CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKHByb2ZpbGUtPnRpdGxlKCksICcjJywg
U3RyaW5nOjpudW1iZXIocHJvZmlsZS0+dWlkKCkpKTsKQEAgLTE2MSw3ICsxNjAsNyBAQCB2b2lk
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNv
bGUoUGFzc1JlZlB0cjxTY3JpcAogCiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFN0
YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQogewotICAgIGlmICghbV9mcm9udGVuZCkKKyAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRj
aGVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoQ29uc29sZUFQSU1lc3NhZ2VTb3VyY2UsIFByb2ZpbGVNZXNzYWdlVHlwZSwgRGVidWdN
ZXNzYWdlTGV2ZWwsIHRpdGxlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7
CiB9CkBAIC0yNjAsMTIgKzI1OSwxMiBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBPdXRwdXRTdHJl
YW0gOiBwdWJsaWMgU2NyaXB0SGVhcFNuYXBzaG90OjpPdXRwdXRTdHJlYW0gewogcHVibGljOgot
ICAgIE91dHB1dFN0cmVhbShJbnNwZWN0b3JGcm9udGVuZDo6UHJvZmlsZXIqIGZyb250ZW5kLCB1
bnNpZ25lZCB1aWQpCi0gICAgICAgIDogbV9mcm9udGVuZChmcm9udGVuZCksIG1fdWlkKHVpZCkg
eyB9Ci0gICAgdm9pZCBXcml0ZShjb25zdCBTdHJpbmcmIGNodW5rKSB7IG1fZnJvbnRlbmQtPmFk
ZEhlYXBTbmFwc2hvdENodW5rKG1fdWlkLCBjaHVuayk7IH0KLSAgICB2b2lkIENsb3NlKCkgeyBt
X2Zyb250ZW5kLT5maW5pc2hIZWFwU25hcHNob3QobV91aWQpOyB9CisgICAgT3V0cHV0U3RyZWFt
KEluc3BlY3RvclByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyKiBmcm9udGVuZCwgdW5zaWduZWQg
dWlkKQorICAgICAgICA6IG1fZnJvbnRlbmREaXNwYXRjaGVyKGZyb250ZW5kKSwgbV91aWQodWlk
KSB7IH0KKyAgICB2b2lkIFdyaXRlKGNvbnN0IFN0cmluZyYgY2h1bmspIHsgbV9mcm9udGVuZERp
c3BhdGNoZXItPmFkZEhlYXBTbmFwc2hvdENodW5rKG1fdWlkLCBjaHVuayk7IH0KKyAgICB2b2lk
IENsb3NlKCkgeyBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZmluaXNoSGVhcFNuYXBzaG90KG1fdWlk
KTsgfQogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JGcm9udGVuZDo6UHJvZmlsZXIqIG1fZnJvbnRl
bmQ7CisgICAgSW5zcGVjdG9yUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXIqIG1fZnJvbnRlbmRE
aXNwYXRjaGVyOwogICAgIGludCBtX3VpZDsKIH07CiAKQEAgLTI5Myw4ICsyOTIsOCBAQCB2b2lk
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCByYXdVaQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxT
Y3JpcHRIZWFwU25hcHNob3Q+IHNuYXBzaG90ID0gaXQtPnZhbHVlOwotICAgIGlmIChtX2Zyb250
ZW5kKSB7Ci0gICAgICAgIE91dHB1dFN0cmVhbSBzdHJlYW0obV9mcm9udGVuZCwgdWlkKTsKKyAg
ICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIpIHsKKyAgICAgICAgT3V0cHV0U3RyZWFtIHN0cmVh
bShtX2Zyb250ZW5kRGlzcGF0Y2hlci5nZXQoKSwgdWlkKTsKICAgICAgICAgc25hcHNob3QtPndy
aXRlSlNPTigmc3RyZWFtKTsKICAgICB9CiB9CkBAIC0zMjIsMjIgKzMyMSwyNCBAQCB2b2lkIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0U3RhdGUoKQogCiB2b2lkIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm9maWxlcygpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5k
KQorICAgIGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAo
bV9wcm9maWxlcy5pc0VtcHR5KCkgJiYgbV9zbmFwc2hvdHMuaXNFbXB0eSgpKQotICAgICAgICBt
X2Zyb250ZW5kLT5yZXNldFByb2ZpbGVzKCk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5yZXNldFByb2ZpbGVzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6c2V0
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQordm9pZCBJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQtPnByb2ZpbGVyKCk7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclBy
b2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIGJhY2tlbmRE
aXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpCiB7Ci0gICAgbV9mcm9udGVuZCA9IDA7Cisg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOworCiAgICAgc3RvcCgpOwogICAgIEVy
cm9yU3RyaW5nIGVycm9yOwogICAgIGRpc2FibGUoJmVycm9yKTsKQEAgLTM3NCwyMSArMzc1LDIx
IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIEhlYXBTbmFwc2hvdFByb2dyZXNzOiBwdWJsaWMgU2Ny
aXB0UHJvZmlsZXI6OkhlYXBTbmFwc2hvdFByb2dyZXNzIHsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBIZWFwU25hcHNob3RQcm9ncmVzcyhJbnNwZWN0b3JGcm9udGVuZDo6UHJvZmlsZXIqIGZyb250
ZW5kKQotICAgICAgICA6IG1fZnJvbnRlbmQoZnJvbnRlbmQpIHsgfQorICAgIGV4cGxpY2l0IEhl
YXBTbmFwc2hvdFByb2dyZXNzKEluc3BlY3RvclByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyKiBm
cm9udGVuZCkKKyAgICAgICAgOiBtX2Zyb250ZW5kRGlzcGF0Y2hlcihmcm9udGVuZCkgeyB9CiAg
ICAgdm9pZCBTdGFydChpbnQgdG90YWxXb3JrKQogICAgIHsKICAgICAgICAgbV90b3RhbFdvcmsg
PSB0b3RhbFdvcms7CiAgICAgfQogICAgIHZvaWQgV29ya2VkKGludCB3b3JrRG9uZSkKICAgICB7
Ci0gICAgICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICAgICAgbV9mcm9udGVuZC0+cmVwb3J0
SGVhcFNuYXBzaG90UHJvZ3Jlc3Mod29ya0RvbmUsIG1fdG90YWxXb3JrKTsKKyAgICAgICAgaWYg
KG1fZnJvbnRlbmREaXNwYXRjaGVyKQorICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKHdvcmtEb25lLCBtX3RvdGFsV29yayk7CiAgICAg
fQogICAgIHZvaWQgRG9uZSgpIHsgfQogICAgIGJvb2wgaXNDYW5jZWxlZCgpIHsgcmV0dXJuIGZh
bHNlOyB9CiBwcml2YXRlOgotICAgIEluc3BlY3RvckZyb250ZW5kOjpQcm9maWxlciogbV9mcm9u
dGVuZDsKKyAgICBJbnNwZWN0b3JQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlciogbV9mcm9udGVu
ZERpc3BhdGNoZXI7CiAgICAgaW50IG1fdG90YWxXb3JrOwogfTsKIApAQCAtMzk5LDE5ICs0MDAs
MTkgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KEVycm9y
U3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHIKICAgICBTdHJpbmcgdGl0bGUgPSBtYWtlU3Ry
aW5nKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSwgJy4nLCBTdHJpbmc6Om51bWJlcihtX25leHRV
c2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVtYmVyKSk7CiAgICAgKyttX25leHRVc2VySW5pdGlh
dGVkSGVhcFNuYXBzaG90TnVtYmVyOwogCi0gICAgSGVhcFNuYXBzaG90UHJvZ3Jlc3MgcHJvZ3Jl
c3MocmVwb3J0UHJvZ3Jlc3MgJiYgKnJlcG9ydFByb2dyZXNzID8gbV9mcm9udGVuZCA6IDApOwor
ICAgIEhlYXBTbmFwc2hvdFByb2dyZXNzIHByb2dyZXNzKHJlcG9ydFByb2dyZXNzICYmICpyZXBv
cnRQcm9ncmVzcyA/IG1fZnJvbnRlbmREaXNwYXRjaGVyLmdldCgpIDogbnVsbHB0cik7CiAgICAg
UmVmUHRyPFNjcmlwdEhlYXBTbmFwc2hvdD4gc25hcHNob3QgPSBTY3JpcHRQcm9maWxlcjo6dGFr
ZUhlYXBTbmFwc2hvdCh0aXRsZSwgJnByb2dyZXNzKTsKICAgICBpZiAoc25hcHNob3QpIHsKICAg
ICAgICAgbV9zbmFwc2hvdHMuYWRkKHNuYXBzaG90LT51aWQoKSwgc25hcHNob3QpOwotICAgICAg
ICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAgICAgIG1fZnJvbnRlbmQtPmFkZFByb2ZpbGVIZWFk
ZXIoY3JlYXRlU25hcHNob3RIZWFkZXIoKnNuYXBzaG90KSk7CisgICAgICAgIGlmIChtX2Zyb250
ZW5kRGlzcGF0Y2hlcikKKyAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hZGRQcm9m
aWxlSGVhZGVyKGNyZWF0ZVNuYXBzaG90SGVhZGVyKCpzbmFwc2hvdCkpOwogICAgIH0KIH0KIAog
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCBpc1By
b2ZpbGluZykKIHsKLSAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAgbV9mcm9udGVuZC0+c2V0
UmVjb3JkaW5nUHJvZmlsZShpc1Byb2ZpbGluZyk7CisgICAgaWYgKG1fZnJvbnRlbmREaXNwYXRj
aGVyKQorICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0UmVjb3JkaW5nUHJvZmlsZShp
c1Byb2ZpbGluZyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0
QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGhlYXBTbmFw
c2hvdE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IDQyMjNmMjQuLjZlYzc3
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuaApAQCAtNDUsNyArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudDsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9y
T2JqZWN0OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CkBAIC01NSw3
ICs1NCw3IEBAIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJv
clN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6UHJvZmlsZXJDb21tYW5kSGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JQ
cm9maWxlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpQcm9maWxlckNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JQcm9maWxlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJB
Z2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQq
LCBQYWdlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CkBAIC05MCw4ICs4OSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgaW50IHVp
ZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGludCB1aWQpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGNvbnN0IGJv
b2wqIHJlcG9ydFByb2dyZXNzKTsKICAgICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29sIGlz
UHJvZmlsaW5nKTsKQEAgLTExNiw3ICsxMTUsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9y
Q29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIEluc3BlY3RvckZyb250ZW5kOjpQcm9maWxl
ciogbV9mcm9udGVuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yUHJvZmlsZXJGcm9u
dGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9lbmFibGVk
OwogICAgIGJvb2wgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZDsKICAgICBib29sIG1fcmVjb3Jk
aW5nQ1BVUHJvZmlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCBhNTBkNGU5Li4yMDg4MDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC03
NiwxNCArNzYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3Zv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZCA9IGZyb250
ZW5kLT5uZXR3b3JrKCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
CisgICAgYmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyQWdlbnQodGhpcyk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKIHsKLSAgICBtX2Zy
b250ZW5kID0gMDsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CisKICAgICBF
cnJvclN0cmluZyBlcnJvcjsKICAgICBkaXNhYmxlKCZlcnJvcik7CiB9CkBAIC0yMTYsMTIgKzIx
OCwxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAgIFR5cGVCdWlsZGVyOjpQYWdlOjpS
ZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNv
dXJjZVR5cGVKc29uKHR5cGUpOwogCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJ
bml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+
ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IDApOwotICAgIG1fZnJvbnRl
bmQtPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9h
ZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRlci0+dXJs
KCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBjdXJy
ZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25z
ZShyZWRpcmVjdFJlc3BvbnNlLCBsb2FkZXIpLCB0eXBlICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6
T3RoZXJSZXNvdXJjZSA/ICZyZXNvdXJjZVR5cGUgOiAwKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChs
b2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgbG9hZGVyLT51
cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGN1
cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3Bv
bnNlKHJlZGlyZWN0UmVzcG9uc2UsIGxvYWRlciksIHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50
OjpPdGhlclJlc291cmNlID8gJnJlc291cmNlVHlwZSA6IDApOwogfQogCiB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllcikKIHsKLSAgICBtX2Zyb250ZW5kLT5yZXF1ZXN0U2VydmVkRnJvbUNhY2hlKElkZW50aWZp
ZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+cmVxdWVzdFNlcnZlZEZyb21DYWNoZShJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJ
ZChpZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVyKiBy
ZXNvdXJjZUxvYWRlcikKQEAgLTI1NSw3ICsyNTcsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZQogICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFn
ZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIHJlc3BvbnNlKTsKICAgICBtX3Jlc291
cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShyZXF1ZXN0SWQsIHR5cGUpOwogCi0gICAgbV9mcm9u
dGVuZC0+cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxv
YWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBjdXJyZW50VGlt
ZSgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSksIHJlc291cmNl
UmVzcG9uc2UpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNwb25zZVJlY2VpdmVkKHJl
cXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdl
bnQtPmxvYWRlcklkKGxvYWRlciksIGN1cnJlbnRUaW1lKCksIEluc3BlY3RvclBhZ2VBZ2VudDo6
cmVzb3VyY2VUeXBlSnNvbih0eXBlKSwgcmVzb3VyY2VSZXNwb25zZSk7CiAKICAgICAvLyBJZiB3
ZSByZXZhbGlkYXRlZCB0aGUgcmVzb3VyY2UgYW5kIGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29u
dGVudCBsZW5ndGggZm9sbG93aW5nIGRpZFJlY2VpdmVSZXNwb25zZQogICAgIC8vIGFzIHRoZXJl
IHdpbGwgYmUgbm8gY2FsbHMgdG8gZGlkUmVjZWl2ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFj
ay4KQEAgLTI3OCw3ICsyODAsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJl
Y2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhcgogICAgICAgICAg
ICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEs
IGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZnJvbnRlbmQtPmRhdGFSZWNlaXZlZChyZXF1
ZXN0SWQsIGN1cnJlbnRUaW1lKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwgY3VycmVudFRp
bWUoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKQEAgLTI5OSw3ICsz
MDEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudAogICAgIGlmIChyZXNvdXJjZURhdGEgJiYg
cmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKQogICAgICAgICBzb3VyY2VNYXBwaW5nVVJM
ID0gSW5zcGVjdG9yUGFnZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShyZXNvdXJjZURh
dGEtPmNhY2hlZFJlc291cmNlKCkpOwogCi0gICAgbV9mcm9udGVuZC0+bG9hZGluZ0ZpbmlzaGVk
KHJlcXVlc3RJZCwgZmluaXNoVGltZSwgIXNvdXJjZU1hcHBpbmdVUkwuaXNFbXB0eSgpID8gJnNv
dXJjZU1hcHBpbmdVUkwgOiAwKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZGluZ0Zp
bmlzaGVkKHJlcXVlc3RJZCwgZmluaXNoVGltZSwgIXNvdXJjZU1hcHBpbmdVUkwuaXNFbXB0eSgp
ID8gJnNvdXJjZU1hcHBpbmdVUkwgOiAwKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMzE1LDcgKzMxNyw3
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvCiAgICAgfQogCiAgICAgYm9vbCBjYW5jZWxlZCA9
IGVycm9yLmlzQ2FuY2VsbGF0aW9uKCk7Ci0gICAgbV9mcm9udGVuZC0+bG9hZGluZ0ZhaWxlZChy
ZXF1ZXN0SWQsIGN1cnJlbnRUaW1lKCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCksIGNh
bmNlbGVkID8gJmNhbmNlbGVkIDogMCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmxvYWRp
bmdGYWlsZWQocmVxdWVzdElkLCBjdXJyZW50VGltZSgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpLCBjYW5jZWxlZCA/ICZjYW5jZWxlZCA6IDApOwogfQogCiB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCkBAIC0zMzQsNyArMzM2LDcgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKIAogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29y
azo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2Fk
ZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKIAotICAgIG1f
ZnJvbnRlbmQtPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlk
LCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlh
dG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKHJlc291cmNlLCBsb2FkZXIp
KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNo
ZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBj
dXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3Vy
Y2UocmVzb3VyY2UsIGxvYWRlcikpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OnNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcpCkBAIC00NjcsMTQgKzQ2OSwxNCBAQCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJ1
aWxkSW5pdGlhdAogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZVdlYlNv
Y2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCkKIHsK
LSAgICBtX2Zyb250ZW5kLT53ZWJTb2NrZXRDcmVhdGVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVx
dWVzdElkKGlkZW50aWZpZXIpLCByZXF1ZXN0VVJMLnN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+d2ViU29ja2V0Q3JlYXRlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJ
ZChpZGVudGlmaWVyKSwgcmVxdWVzdFVSTC5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdD4gcmVxdWVzdE9i
amVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0OjpjcmVhdGUoKQog
ICAgICAgICAuc2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMocmVxdWVzdC5odHRwSGVh
ZGVyRmllbGRzKCkpKTsKLSAgICBtX2Zyb250ZW5kLT53ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFr
ZVJlcXVlc3QoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1cnJl
bnRUaW1lKCksIHJlcXVlc3RPYmplY3QpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJT
b2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3QoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0
SWQoaWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCksIHJlcXVlc3RPYmplY3QpOwogfQogCiB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQpAQCAtNDgzLDEyICs0ODUsMTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAg
ICAgICAuc2V0U3RhdHVzKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpCiAgICAgICAgIC5zZXRT
dGF0dXNUZXh0KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCiAgICAgICAgIC5zZXRIZWFkZXJz
KGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpKTsKLSAg
ICBtX2Zyb250ZW5kLT53ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2VpdmVkKElkZW50aWZp
ZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCByZXNwb25z
ZU9iamVjdCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlUmVjZWl2ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciks
IGN1cnJlbnRUaW1lKCksIHJlc3BvbnNlT2JqZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7
Ci0gICAgbV9mcm9udGVuZC0+d2ViU29ja2V0Q2xvc2VkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVx
dWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+d2ViU29ja2V0Q2xvc2VkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50
aWZpZXIpLCBjdXJyZW50VGltZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCkBAIC00OTcsNyArNDk5LDcgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLAogICAgICAgICAuc2V0T3Bjb2RlKGZyYW1lLm9wQ29kZSkKICAgICAgICAgLnNl
dE1hc2soZnJhbWUubWFza2VkKQogICAgICAgICAuc2V0UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1l
LnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpKTsKLSAgICBtX2Zyb250ZW5kLT53ZWJTb2Nr
ZXRGcmFtZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIp
LCBjdXJyZW50VGltZSgpLCBmcmFtZU9iamVjdCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PndlYlNvY2tldEZyYW1lUmVjZWl2ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRl
bnRpZmllciksIGN1cnJlbnRUaW1lKCksIGZyYW1lT2JqZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCkBAIC01MDYsMTIgKzUwOCwxMiBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbgogICAgICAgICAuc2V0T3Bjb2RlKGZyYW1lLm9wQ29k
ZSkKICAgICAgICAgLnNldE1hc2soZnJhbWUubWFza2VkKQogICAgICAgICAuc2V0UGF5bG9hZERh
dGEoU3RyaW5nKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpKTsKLSAgICBtX2Zy
b250ZW5kLT53ZWJTb2NrZXRGcmFtZVNlbnQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQo
aWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCksIGZyYW1lT2JqZWN0KTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVTZW50KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVz
dElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBmcmFtZU9iamVjdCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAg
ICBtX2Zyb250ZW5kLT53ZWJTb2NrZXRGcmFtZUVycm9yKElkZW50aWZpZXJzRmFjdG9yeTo6cmVx
dWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBlcnJvck1lc3NhZ2UpOworICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFtZUVycm9yKElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBlcnJvck1lc3NhZ2UpOwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpAQCAtNTI5LDcgKzUzMSw3IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIAogdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjplbmFibGUoKQogewotICAgIGlmICghbV9mcm9udGVuZCkK
KyAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9l
bmFibGVkID0gdHJ1ZTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJl
c291cmNlQWdlbnQodGhpcyk7CkBAIC02NDcsMTAgKzY0OSw5IEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB9
CiAKIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBw
YWdlQWdlbnQsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFn
ZW50PEluc3BlY3RvclJlc291cmNlQWdlbnQ+KCJOZXR3b3JrIiwgaW5zdHJ1bWVudGluZ0FnZW50
cykKKyAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIk5ldHdvcmsiKSwgaW5z
dHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1f
Y2xpZW50KGNsaWVudCkKLSAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fcmVzb3VyY2VzRGF0
YShhZG9wdFB0cihuZXcgTmV0d29ya1Jlc291cmNlc0RhdGEoKSkpCiAgICAgLCBtX2VuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX2NhY2hlRGlzYWJsZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCAzYjkyMWJlLi5hZmVh
MWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKQEAgLTU1LDcgKzU1LDYgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBIVFRQSGVhZGVy
TWFwOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFz
cyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3Bl
Y3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CkBAIC03NywyMCArNzYs
MTggQEAgc3RydWN0IFdlYlNvY2tldEZyYW1lOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQ8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6TmV0d29ya0NvbW1hbmRIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclJlc291cmNl
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6Ok5ldHdvcmtDb21tYW5kSGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBwYWdlQWdl
bnQsIGNsaWVudCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNw
ZWN0b3JGcm9udGVuZCopOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7Ci0KLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiByZXN0b3JlKFBhZ2Uq
LCBJbnNwZWN0b3JGcm9udGVuZCopOwotCiAgICAgfkluc3BlY3RvclJlc291cmNlQWdlbnQoKTsK
IAorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklE
RTsKKwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbGFvZGVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKQEAgLTE1Niw3ICsxNTMsNyBAQCBwcml2YXRl
OgogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JD
bGllbnQqIG1fY2xpZW50OwotICAgIEluc3BlY3RvckZyb250ZW5kOjpOZXR3b3JrKiBtX2Zyb250
ZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRj
aGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBTdHJpbmcgbV91c2VyQWdlbnRPdmVycmlk
ZTsKICAgICBPd25QdHI8TmV0d29ya1Jlc291cmNlc0RhdGE+IG1fcmVzb3VyY2VzRGF0YTsKICAg
ICBib29sIG1fZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggOTgxYmUzYi4uOGIzNDY5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgc3RhdGljIGJvb2wgYXNCb29sKGNvbnN0IGJvb2wqIGNvbnN0IGIpCiB9CiAK
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclJ1
bnRpbWVBZ2VudD4oIlJ1bnRpbWUiLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVj
dG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiUnVudGltZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRz
KQogICAgICwgbV9lbmFibGVkKGZhbHNlKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIo
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmlu
ZGV4IGQzNWIzNjEuLjNlMzUyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTQzLDcgKzQzLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7
CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3Mg
SW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBJbnN0cnVtZW50
aW5nQWdlbnRzOwpAQCAtNTIsNyArNTEsNyBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUnVudGltZUFnZW50PiwgcHVi
bGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpSdW50aW1lQ29tbWFuZEhhbmRsZXIgewor
Y2xhc3MgSW5zcGVjdG9yUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwg
cHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpSdW50aW1lQ29tbWFuZEhhbmRsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclJ1bnRpbWVBZ2VudCk7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUnVudGltZUFnZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggODlh
NWQ2MC4uZjA0ZGMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNjMsMjQgKzYzLDI1IEBAIHZvaWQgVGltZWxpbmVU
aW1lQ29udmVydGVyOjpyZXNldCgpCiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkKIHsKLSAgICBjbGVhckZyb250ZW5kKCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5k
ID0gZnJvbnRlbmQtPnRpbWVsaW5lKCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVu
ZENoYW5uZWwpOworICAgIGJhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckFnZW50KHRoaXMpOwog
fQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQordm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpCiB7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOworCiAgICAgRXJyb3JTdHJpbmcg
ZXJyb3I7CiAgICAgc3RvcCgmZXJyb3IpOwotICAgIG1fZnJvbnRlbmQgPSAwOwogfQogCiB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBt
YXhDYWxsU3RhY2tEZXB0aCwgY29uc3QgYm9vbCogaW5jbHVkZURvbUNvdW50ZXJzKQogewotICAg
IGlmICghbV9mcm9udGVuZCkKKyAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobWF4Q2FsbFN0YWNrRGVwdGggJiYgKm1heENhbGxTdGFja0Rl
cHRoID4gMCkKQEAgLTU3OCwxMCArNTc5LDkgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB9CiAK
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQsIEluc3BlY3Rvck1lbW9yeUFnZW50KiBtZW1vcnlBZ2VudCwgSW5zcGVjdG9yVHlwZSB0
eXBlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJ
bnNwZWN0b3JUaW1lbGluZUFnZW50PigiVGltZWxpbmUiLCBpbnN0cnVtZW50aW5nQWdlbnRzKQor
ICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fbWVt
b3J5QWdlbnQobWVtb3J5QWdlbnQpCi0gICAgLCBtX2Zyb250ZW5kKDApCiAgICAgLCBtX2lkKDEp
CiAgICAgLCBtX21heENhbGxTdGFja0RlcHRoKDUpCiAgICAgLCBtX2luc3BlY3RvclR5cGUodHlw
ZSkKQEAgLTYwNCw3ICs2MDQsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlbmRF
dmVudChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnQpCiB7CiAgICAgLy8gRklYTUU6
IHJ1bnRpbWVDYXN0IGlzIGEgaGFjay4gV2UgZG8gaXQgYmVjYXVzZSB3ZSBjYW4ndCBidWlsZCBU
aW1lbGluZUV2ZW50IGRpcmVjdGx5IG5vdy4KICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpUaW1lbGluZUV2ZW50PiByZWNvcmRDaGVja2VkID0gVHlwZUJ1aWxkZXI6OlRpbWVsaW5l
OjpUaW1lbGluZUV2ZW50OjpydW50aW1lQ2FzdChldmVudCk7Ci0gICAgbV9mcm9udGVuZC0+ZXZl
bnRSZWNvcmRlZChyZWNvcmRDaGVja2VkLnJlbGVhc2UoKSk7CisgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPmV2ZW50UmVjb3JkZWQocmVjb3JkQ2hlY2tlZC5yZWxlYXNlKCkpOwogfQogCiB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnB1c2hDdXJyZW50UmVjb3JkKFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUgdHlwZSwgYm9vbCBjYXB0dXJl
Q2FsbFN0YWNrLCBGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCAyZmY3NGIxLi43MDdlMjI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAg
LTQ3LDcgKzQ3LDYgQEAgY2xhc3MgRXZlbnQ7CiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xh
c3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOwpAQCAtMTIyLDcgKzEyMSw3IEBAIHByaXZhdGU6CiB9Owog
CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ci0gICAgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+CisgICAgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50CiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlRpbWVsaW5l
Q29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQpOwogcHVibGljOgpAQCAtMTM1LDggKzEzNCw4IEBAIHB1YmxpYzoKIAogICAgIH5J
bnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQo
SW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsK
IAogICAgIHZpcnR1YWwgdm9pZCBzdGFydChFcnJvclN0cmluZyosIGNvbnN0IGludCogbWF4Q2Fs
bFN0YWNrRGVwdGgsIGNvbnN0IGJvb2wqIGluY2x1ZGVEb21Db3VudGVycyk7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3AoRXJyb3JTdHJpbmcqKTsKQEAgLTI1OSw3ICsyNTgsNyBAQCBwcml2YXRlOgog
ICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KiBtX21lbW9yeUFnZW50OwogICAgIFRpbWVsaW5lVGlt
ZUNvbnZlcnRlciBtX3RpbWVDb252ZXJ0ZXI7CiAKLSAgICBJbnNwZWN0b3JGcm9udGVuZDo6VGlt
ZWxpbmUqIG1fZnJvbnRlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclRpbWVsaW5l
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBkb3VibGUgbV90
aW1lc3RhbXBPZmZzZXQ7CiAKICAgICBWZWN0b3I8VGltZWxpbmVSZWNvcmRFbnRyeT4gbV9yZWNv
cmRTdGFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwCmluZGV4IDI0OWZmNTUuLjI1ZDIyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtNDgsOCArNDgsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJv
bnRlbmRDaGFubmVsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0
b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0
IFdvcmtlckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIFdvcmtl
ckdsb2JhbFNjb3BlUHJveHkqIHByb3h5KQotICAgICAgICA6IG1fZnJvbnRlbmQoZnJvbnRlbmQp
CisgICAgZXhwbGljaXQgV29ya2VyRnJvbnRlbmRDaGFubmVsKEluc3BlY3RvcldvcmtlckZyb250
ZW5kRGlzcGF0Y2hlciogZnJvbnRlbmREaXNwYXRjaGVyLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5
KiBwcm94eSkKKyAgICAgICAgOiBtX2Zyb250ZW5kRGlzcGF0Y2hlcihmcm9udGVuZERpc3BhdGNo
ZXIpCiAgICAgICAgICwgbV9wcm94eShwcm94eSkKICAgICAgICAgLCBtX2lkKHNfbmV4dElkKysp
CiAgICAgICAgICwgbV9jb25uZWN0ZWQoZmFsc2UpCkBAIC04OSwxMCArODksMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZU9iamVjdCA9IHZhbHVl
LT5hc09iamVjdCgpOwogICAgICAgICBpZiAoIW1lc3NhZ2VPYmplY3QpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIG1fZnJvbnRlbmQtPndvcmtlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9t
V29ya2VyKG1faWQsIG1lc3NhZ2VPYmplY3QpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVdvcmtlcihtX2lkLCBtZXNzYWdlT2JqZWN0KTsKICAgICB9
CiAKLSAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKKyAgICBJbnNwZWN0b3JXb3Jr
ZXJGcm9udGVuZERpc3BhdGNoZXIqIG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFdvcmtlckds
b2JhbFNjb3BlUHJveHkqIG1fcHJveHk7CiAgICAgaW50IG1faWQ7CiAgICAgYm9vbCBtX2Nvbm5l
Y3RlZDsKQEAgLTEwNyw4ICsxMDcsNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvcldvcmtlckFnZW50
PiBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudAogfQogCiBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JXb3JrZXJBZ2VudD4oIldvcmtlciIsIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBt
X2luc3BlY3RvckZyb250ZW5kKDApCisgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRl
cmFsKCJXb3JrZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZW5hYmxlZChmYWxz
ZSkKICAgICAsIG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KGZhbHNlKQogewpA
QCAtMTIwLDMxICsxMTksMzUgQEAgSW5zcGVjdG9yV29ya2VyQWdlbnQ6On5JbnNwZWN0b3JXb3Jr
ZXJBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JXb3JrZXJB
Z2VudCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6c2V0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IGZyb250ZW5kOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgYmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVy
QWdlbnQodGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNsZWFyRnJvbnRl
bmQoKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoKQogewogICAgIG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0ID0gZmFs
c2U7Ci0gICAgZGlzYWJsZSgwKTsKLSAgICBtX2luc3BlY3RvckZyb250ZW5kID0gMDsKKyAgICBk
aXNhYmxlKG51bGxwdHIpOworCisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwog
fQogCiB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogewog
ICAgIG1fZW5hYmxlZCA9IHRydWU7Ci0gICAgaWYgKCFtX2luc3BlY3RvckZyb250ZW5kKQorICAg
IGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIpCiAgICAgICAgIHJldHVybjsKKwogICAgIGNyZWF0
ZVdvcmtlckZyb250ZW5kQ2hhbm5lbHNGb3JFeGlzdGluZ1dvcmtlcnMoKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgbV9lbmFi
bGVkID0gZmFsc2U7Ci0gICAgaWYgKCFtX2luc3BlY3RvckZyb250ZW5kKQorICAgIGlmICghbV9m
cm9udGVuZERpc3BhdGNoZXIpCiAgICAgICAgIHJldHVybjsKKwogICAgIGRlc3Ryb3lXb3JrZXJG
cm9udGVuZENoYW5uZWxzKCk7CiB9CiAKQEAgLTE5Nyw3ICsyMDAsNyBAQCBib29sIEluc3BlY3Rv
cldvcmtlckFnZW50OjpzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQoKSBjb25zdAog
dm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3Jr
ZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29wZVByb3h5LCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBtX2RlZGljYXRlZFdvcmtlcnMuc2V0KHdvcmtlckdsb2JhbFNjb3BlUHJveHks
IHVybC5zdHJpbmcoKSk7Ci0gICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmQgJiYgbV9lbmFibGVk
KQorICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlciAmJiBtX2VuYWJsZWQpCiAgICAgICAgIGNy
ZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbCh3b3JrZXJHbG9iYWxTY29wZVByb3h5LCB1cmwuc3Ry
aW5nKCkpOwogfQogCkBAIC0yMDYsNyArMjA5LDcgQEAgdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dDo6d29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkKFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHAK
ICAgICBtX2RlZGljYXRlZFdvcmtlcnMucmVtb3ZlKHByb3h5KTsKICAgICBmb3IgKFdvcmtlckNo
YW5uZWxzOjppdGVyYXRvciBpdCA9IG1faWRUb0NoYW5uZWwuYmVnaW4oKTsgaXQgIT0gbV9pZFRv
Q2hhbm5lbC5lbmQoKTsgKytpdCkgewogICAgICAgICBpZiAocHJveHkgPT0gaXQtPnZhbHVlLT5w
cm94eSgpKSB7Ci0gICAgICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kLT53b3JrZXIoKS0+d29y
a2VyVGVybWluYXRlZChpdC0+a2V5KTsKKyAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT53b3JrZXJUZXJtaW5hdGVkKGl0LT5rZXkpOwogICAgICAgICAgICAgZGVsZXRlIGl0LT52YWx1
ZTsKICAgICAgICAgICAgIG1faWRUb0NoYW5uZWwucmVtb3ZlKGl0KTsKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTIzMSwxMyArMjM0LDEzIEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRl
c3Ryb3lXb3JrZXJGcm9udGVuZENoYW5uZWxzKCkKIAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dDo6Y3JlYXRlV29ya2VyRnJvbnRlbmRDaGFubmVsKFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHdv
cmtlckdsb2JhbFNjb3BlUHJveHksIGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIFdvcmtlckZy
b250ZW5kQ2hhbm5lbCogY2hhbm5lbCA9IG5ldyBXb3JrZXJGcm9udGVuZENoYW5uZWwobV9pbnNw
ZWN0b3JGcm9udGVuZCwgd29ya2VyR2xvYmFsU2NvcGVQcm94eSk7CisgICAgV29ya2VyRnJvbnRl
bmRDaGFubmVsKiBjaGFubmVsID0gbmV3IFdvcmtlckZyb250ZW5kQ2hhbm5lbChtX2Zyb250ZW5k
RGlzcGF0Y2hlci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGVQcm94eSk7CiAgICAgbV9pZFRvQ2hh
bm5lbC5zZXQoY2hhbm5lbC0+aWQoKSwgY2hhbm5lbCk7CiAKLSAgICBBU1NFUlQobV9pbnNwZWN0
b3JGcm9udGVuZCk7CisgICAgQVNTRVJUKG1fZnJvbnRlbmREaXNwYXRjaGVyKTsKICAgICBpZiAo
bV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQpCiAgICAgICAgIGNoYW5uZWwtPmNv
bm5lY3RUb1dvcmtlckdsb2JhbFNjb3BlKCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZC0+d29y
a2VyKCktPndvcmtlckNyZWF0ZWQoY2hhbm5lbC0+aWQoKSwgdXJsLCBtX3Nob3VsZFBhdXNlRGVk
aWNhdGVkV29ya2VyT25TdGFydCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndvcmtlckNy
ZWF0ZWQoY2hhbm5lbC0+aWQoKSwgdXJsLCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25T
dGFydCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggZmJkOTA4NC4uYzgxY2YwZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5o
CkBAIC0zOCwyMSArMzgsMjEgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rvck9i
amVjdDsKK2NsYXNzIEluc3BlY3RvcldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBVUkw7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZVBy
b3h5OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yV29y
a2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvcldvcmtlckFnZW50
PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpXb3JrZXJDb21tYW5kSGFuZGxl
ciB7CitjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6V29ya2VyQ29tbWFuZEhhbmRs
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvcldvcmtlckFnZW50
PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIH5JbnNwZWN0b3JXb3JrZXJBZ2Vu
dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7
Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDYWxsZWQgZnJv
bSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAgICBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVk
V29ya2VyT25TdGFydCgpIGNvbnN0OwpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY3JlYXRlV29ya2VyRnJvbnRlbmRDaGFubmVsKFdvcmtlckdsb2JhbFNjb3BlUHJveHkqLCBj
b25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9pZCBkZXN0cm95V29ya2VyRnJvbnRlbmRDaGFubmVs
cygpOwogCi0gICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1faW5zcGVjdG9yRnJvbnRlbmQ7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvcldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9u
dGVuZERpc3BhdGNoZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX3Nob3VsZFBh
dXNlRGVkaWNhdGVkV29ya2VyT25TdGFydDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDQxODI3YjEuLmI4ODNiOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTUzLDcgKzUzLDYg
QEAgUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmoKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChp
bnN0cnVtZW50aW5nQWdlbnRzLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2luc3Bl
Y3RlZFBhZ2UocGFnZSkKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKLSAgICAsIG1fZnJv
bnRlbmQoMCkKICAgICAsIG1fbWFpbldvcmxkQ29udGV4dENyZWF0ZWQoZmFsc2UpCiB7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlUnVudGltZUFnZW50KHRoaXMpOwpAQCAtNjQs
MTQgKzYzLDE2IEBAIFBhZ2VSdW50aW1lQWdlbnQ6On5QYWdlUnVudGltZUFnZW50KCkKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFBhZ2VSdW50aW1lQWdlbnQoMCk7CiB9CiAKLXZvaWQg
UGFnZVJ1bnRpbWVBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
KQordm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kID0gZnJvbnRl
bmQtPnJ1bnRpbWUoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
KyAgICBiYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJBZ2VudCh0aGlzKTsKIH0KIAotdm9pZCBQ
YWdlUnVudGltZUFnZW50OjpjbGVhckZyb250ZW5kKCkKK3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKQogewotICAgIG1fZnJvbnRlbmQgPSAwOwor
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKKwogICAgIFN0cmluZyBlcnJvclN0
cmluZzsKICAgICBkaXNhYmxlKCZlcnJvclN0cmluZyk7CiB9CkBAIC0xMDQsNyArMTA1LDcgQEAg
dm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVNYWluV29ybGRDb250ZXh0KEZyYW1lKiBm
cmFtZSkKIAogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJU
KG1fZnJvbnRlbmQpOworICAgIEFTU0VSVChtX2Zyb250ZW5kRGlzcGF0Y2hlcik7CiAgICAgU3Ry
aW5nIGZyYW1lSWQgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7CiAgICAgSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKTsKICAgICBub3Rp
ZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBzY3JpcHRTdGF0ZSwgMCwgdHJ1ZSk7CkBAIC0xMTQs
NyArMTE1LDcgQEAgdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVJc29sYXRlZENvbnRl
eHQoRnJhbWUqIGZyYW1lLCBKU0M6OkV4ZWNTdGF0ZSogc2MKIHsKICAgICBpZiAoIW1fZW5hYmxl
ZCkKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKKyAgICBBU1NFUlQo
bV9mcm9udGVuZERpc3BhdGNoZXIpOwogICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQt
PmZyYW1lSWQoZnJhbWUpOwogICAgIG5vdGlmeUNvbnRleHRDcmVhdGVkKGZyYW1lSWQsIHNjcmlw
dFN0YXRlLCBvcmlnaW4sIGZhbHNlKTsKIH0KQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIFBhZ2VS
dW50aW1lQWdlbnQ6Om5vdGlmeUNvbnRleHRDcmVhdGVkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCwg
SlNDOjpFeGVjU3RhdAogICAgIEFTU0VSVChzZWN1cml0eU9yaWdpbiB8fCBpc1BhZ2VDb250ZXh0
KTsKICAgICBpbnQgZXhlY3V0aW9uQ29udGV4dElkID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkt
PmluamVjdGVkU2NyaXB0SWRGb3Ioc2NyaXB0U3RhdGUpOwogICAgIFN0cmluZyBuYW1lID0gc2Vj
dXJpdHlPcmlnaW4gPyBzZWN1cml0eU9yaWdpbi0+dG9SYXdTdHJpbmcoKSA6ICIiOwotICAgIG1f
ZnJvbnRlbmQtPmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkKEV4ZWN1dGlvbkNvbnRleHREZXNjcmlw
dGlvbjo6Y3JlYXRlKCkKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZXhlY3V0aW9uQ29udGV4
dENyZWF0ZWQoRXhlY3V0aW9uQ29udGV4dERlc2NyaXB0aW9uOjpjcmVhdGUoKQogICAgICAgICAu
c2V0SWQoZXhlY3V0aW9uQ29udGV4dElkKQogICAgICAgICAuc2V0SXNQYWdlQ29udGV4dChpc1Bh
Z2VDb250ZXh0KQogICAgICAgICAuc2V0TmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggY2RkMzQ2Ny4uZTZiNDEzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCkBAIC01MSw4ICs1MSw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlUnVudGltZUFnZW50KGlu
c3RydW1lbnRpbmdBZ2VudHMsIGluamVjdGVkU2NyaXB0TWFuYWdlciwgcGFnZSwgcGFnZUFnZW50
KSk7CiAgICAgfQogICAgIHZpcnR1YWwgflBhZ2VSdW50aW1lQWdlbnQoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJGcm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKIApAQCAtNzAsNyArNzAs
NyBAQCBwcml2YXRlOgogCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3BlY3Rv
clBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OlJ1bnRpbWUq
IG1fZnJvbnRlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclJ1bnRpbWVGcm9udGVu
ZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9tYWluV29ybGRD
b250ZXh0Q3JlYXRlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuaAppbmRleCBjYTMzNDFiLi5kYjQ0YjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCkBAIC00MSw3ICs0
MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEV2ZW50OwogICAgIGNsYXNz
IEZsb2F0UXVhZDsKLSAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKICAgICBjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggZGFiZmQwYi4uMWFmNTQyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAt
MTE3LDIyICsxMTcsMTkgQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fldvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIoKQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5l
Y3RGcm9udGVuZCgpCiB7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kKTsKKyAgICBBU1NFUlQoIW1f
ZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGFkb3B0UHRyKG5ldyBQ
YWdlSW5zcGVjdG9yUHJveHkobV93b3JrZXJHbG9iYWxTY29wZSkpOwotICAgIG1fZnJvbnRlbmQg
PSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkp
KTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7Ci0gICAgbV9hZ2VudHMucmVnaXN0ZXJJ
bkRpc3BhdGNoZXIobV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7Ci0gICAgbV9hZ2VudHMuc2V0
RnJvbnRlbmQobV9mcm9udGVuZC5nZXQoKSk7CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVy
LmdldCgpKTsKIH0KIAogdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0
RnJvbnRlbmQoKQogewotICAgIGlmICghbV9mcm9udGVuZCkKKyAgICBpZiAoIW1fZnJvbnRlbmRD
aGFubmVsKQogICAgICAgICByZXR1cm47CisgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwotICAgIG1fYWdlbnRzLmNsZWFyRnJv
bnRlbmQoKTsKLSAgICBtX2Zyb250ZW5kLmNsZWFyKCk7CiAgICAgbV9mcm9udGVuZENoYW5uZWwu
Y2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggM2M5MzcwNy4uMTYwZjRlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCkBA
IC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjsKIGNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudDsKQEAg
LTU5LDcgKzU4LDcgQEAgcHVibGljOgogICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29y
a2VyR2xvYmFsU2NvcGUqKTsKICAgICB+V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpOwogCi0g
ICAgYm9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRlbmQ7IH0KKyAgICBi
b29sIGhhc0Zyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9mcm9udGVuZENoYW5uZWw7IH0KICAg
ICB2b2lkIGNvbm5lY3RGcm9udGVuZCgpOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKCk7
CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CkBA
IC03Niw3ICs3NSw2IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUnVudGltZUFnZW50KiBtX3J1
bnRpbWVBZ2VudDsKICAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogICAgIE93
blB0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw+IG1fZnJvbnRlbmRDaGFubmVsOwotICAgIE93
blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gbV9mcm9udGVuZDsKICAgICBSZWZQdHI8SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IGI2NDM0MGQu
LjE5NGM1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1l
QWdlbnQuY3BwCkBAIC01Nyw2ICs1NywxNSBAQCBXb3JrZXJSdW50aW1lQWdlbnQ6On5Xb3JrZXJS
dW50aW1lQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V29ya2VyUnVudGlt
ZUFnZW50KDApOwogfQogCit2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3sKKyAgICBiYWNrZW5kRGlzcGF0Y2hlci0+
cmVnaXN0ZXJBZ2VudCh0aGlzKTsKK30KKwordm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKK3sKK30KKwogSW5qZWN0ZWRTY3JpcHQgV29ya2Vy
UnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqIGVycm9yLCBj
b25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4
dElkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGlt
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgK
aW5kZXggZWZlMWE2Yi4uNmMzMjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJSdW50aW1lQWdlbnQuaApAQCAtNDgsNiArNDgsOSBAQCBwdWJsaWM6CiAgICAgfQogICAg
IHZpcnR1YWwgfldvcmtlclJ1bnRpbWVBZ2VudCgpOwogCisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOworCiAgICAgLy8gUHJvdG9jb2wgY29t
bWFuZHMuCiAgICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvSW5wdXQuanNvbiBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9JbnB1dC5qc29uCmluZGV4IDRlZTI1ODcuLjdlMzYx
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9JbnB1dC5q
c29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9JbnB1dC5qc29uCkBA
IC0zMyw2ICszMyw1IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkRpc3BhdGNoZXMgYSBtb3VzZSBldmVudCB0byB0aGUgcGFnZS4iCiAgICAgICAgIH0KLSAg
ICBdLAotICAgICJldmVudHMiOiBbXQorICAgIF0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>