<?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>52532</bug_id>
          
          <creation_ts>2011-01-16 03:20:38 -0800</creation_ts>
          <short_desc>Web Inspector: make WebCore use InspectorInstrumentation for instrumentation calls.</short_desc>
          <delta_ts>2011-01-17 02:45:54 -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 (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>52510</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>335034</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-16 03:20:38 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335075</commentid>
    <comment_count>1</comment_count>
      <attachid>79109</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-16 13:04:33 -0800</bug_when>
    <thetext>Created attachment 79109
[PATCH] Proposed change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335223</commentid>
    <comment_count>2</comment_count>
      <attachid>79109</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-17 02:27:32 -0800</bug_when>
    <thetext>Comment on attachment 79109
[PATCH] Proposed change

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

&gt; Source/WebCore/inspector/InspectorController.cpp:151
&gt; +    InspectorInstrumentation::inspectorControllerCreated(page, this);

I&apos;d rather declare a friend function that would get InspectorAgent from Page.

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:893
&gt; +        return inspectorControllerWithFrontendForPage(static_cast&lt;Document*&gt;(context)-&gt;page());

Should return IC even if there is no FE

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:915
&gt; +        return inspectorControllerForContext(context);

Please check that the IC has FE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335225</commentid>
    <comment_count>3</comment_count>
      <attachid>79145</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-17 02:31:34 -0800</bug_when>
    <thetext>Created attachment 79145
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335226</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-17 02:45:54 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/dom/Document.cpp
	M	Source/WebCore/dom/Document.h
	M	Source/WebCore/dom/ScriptExecutionContext.h
	M	Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
	M	Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h
	M	Source/WebCore/inspector/InspectorConsoleAgent.cpp
	M	Source/WebCore/inspector/InspectorConsoleAgent.h
	M	Source/WebCore/inspector/InspectorController.cpp
	M	Source/WebCore/inspector/InspectorController.h
	M	Source/WebCore/inspector/InspectorDOMAgent.h
	M	Source/WebCore/inspector/InspectorDOMStorageAgent.h
	M	Source/WebCore/inspector/InspectorDatabaseAgent.cpp
	M	Source/WebCore/inspector/InspectorDatabaseAgent.h
	M	Source/WebCore/inspector/InspectorFrontendHost.cpp
	M	Source/WebCore/inspector/InspectorFrontendHost.h
	M	Source/WebCore/inspector/InspectorInstrumentation.cpp
	M	Source/WebCore/inspector/InspectorInstrumentation.h
	M	Source/WebCore/inspector/InspectorState.cpp
	M	Source/WebCore/loader/FrameLoader.cpp
	M	Source/WebCore/page/Chrome.cpp
	M	Source/WebCore/page/Console.cpp
	M	Source/WebCore/page/DOMWindow.cpp
	M	Source/WebCore/page/EventHandler.cpp
	M	Source/WebCore/page/Page.cpp
	M	Source/WebCore/storage/Database.cpp
	M	Source/WebCore/workers/AbstractWorker.cpp
	M	Source/WebCore/workers/SharedWorker.cpp
	M	Source/WebCore/workers/Worker.cpp
	M	Source/WebCore/workers/WorkerMessagingProxy.cpp
Committed r75932</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79109</attachid>
            <date>2011-01-16 13:04:33 -0800</date>
            <delta_ts>2011-01-17 02:31:34 -0800</delta_ts>
            <desc>[PATCH] Proposed change</desc>
            <filename>webcore_instr2</filename>
            <type>text/plain</type>
            <size>100501</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NjVmZmY5Li5iOWEwMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc2
IEBACisyMDExLTAxLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IG1ha2UgV2ViQ29yZSB1c2UgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCisgICAgICAg
IGZvciBpbnN0cnVtZW50YXRpb24gY2FsbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MjUzMgorCisgICAgICAgIFRoaXMgY2hhbmdlIG1ha2VzIFdl
YkNvcmUgY2xhc3NlcyBpc3N1ZSBpbnN0cnVtZW50YXRpb24gc2lnbmFscworICAgICAgICBieSBt
ZWFucyBvZiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gaW50ZXJmYWNlLiBJdCBjb3ZlcmVkIG1p
Z3JhdGlvbgorICAgICAgICBmb3IgRG9jdW1lbnQsIEZyYW1lTG9hZGVyLCBEYXRhYmFzZSwgRE9N
U3RvcmFnZSwgZXRjLiBJdCBmaXhlZAorICAgICAgICBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcg
Zm9yIENvbnNvbGUgYXMgd2VsbC4gVGhpcyBhbGwgaXMgYSBwYXJ0CisgICAgICAgIG9mIHN0b3J5
IGRlc2NyaWJlZCBpbiB0aGUgYnVnIDUyNTEwLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JC
cm93c2VyRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6d2lsbEluc2Vy
dERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6OndpbGxSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJyb3dz
ZXJEZWJ1Z2dlckFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5h
dGl2ZUV2ZW50SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
c29sZUFnZW50Ojpjb3VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aGFuZGxlTW91
c2VQcmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zdFdvcmtlck5vdGlm
aWNhdGlvblRvRnJvbnRlbmRUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVy
RWxlbWVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpoYW5kbGVNb3VzZVByZXNzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1haW5SZXNvdXJjZUZpcmVkRE9NQ29u
dGVudEV2ZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRD
b25zb2xlVGltaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnN0b3BDb25zb2xlVGltaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVNYXJrVGltZWxpbmVJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdl
VG9Db25zb2xlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE9wZW5EYXRhYmFzZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRVc2VET01TdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdvcmtlckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREZXN0cm95V29ya2VySW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdl
YlNvY2tldEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENsb3NlV2ViU29ja2V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1
c0ltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29u
dHJvbGxlckNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RlZFBhZ2VEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
SW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlTW91
c2VQcmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNo
YXJhY3RlckRhdGFNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENh
bGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVU
aW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxM
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
TG9hZFhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxSZWNhbGN1bGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYWluUmVzb3VyY2VGaXJlZExv
YWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1h
aW5SZXNvdXJjZUZpcmVkRE9NQ29udGVudEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVzZURP
TVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDcmVhdGVXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWREZXN0cm95V29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0
YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1l
c3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVNYXJrVGltZWxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3Nh
Z2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xs
ZXJGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyV2l0aEZy
b250ZW5kRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVy
V2l0aEZyb250ZW5kRm9yUGFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0YXRl
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6bW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb25zb2xlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Om1hcmtUaW1lbGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb25zb2xlOjpwcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6
OnRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6dGltZUVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlOjpncm91cCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpncm91
cENvbGxhcHNlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpncm91cEVuZCk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpz
ZXNzaW9uU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmxvY2FsU3RvcmFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6On5QYWdlKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuRGF0YWJhc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJz
dHJhY3RXb3JrZXI6Om9uRGVzdHJveVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRX
b3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKwogMjAx
MS0wMS0xNCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBOb3QgcmV2aWV3ZWQuIEZvbGxvdyB1cCB0byByNzU3OTE6IGZpeCBtaXNzaW5nIGRpc3BhdGNo
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWQ3OTA5Yy4uM2I4NDcxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC05Miw3ICs5Miw2IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVl
c3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2VMb2FkZXIu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKQEAgLTQyNTgsMTMgKzQyNTcsNyBAQCB2b2lkIERvY3VtZW50OjpmaW5pc2hl
ZFBhcnNpbmcoKQogCiAgICAgICAgIGYtPmxvYWRlcigpLT5maW5pc2hlZFBhcnNpbmcoKTsKIAot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIGlmICghcGFnZSgpKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0g
cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgICAgICBjb250cm9sbGVyLT5t
YWluUmVzb3VyY2VGaXJlZERPTUNvbnRlbnRFdmVudChmLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2Fk
ZXIoKSwgdXJsKCkpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZlbnQoZiwgdXJsKCkpOwogICAgIH0KIH0KIApA
QCAtNDgxNSwxMyArNDgwOCw2IEBAIGJvb2wgRG9jdW1lbnQ6OmlzWEhUTUxNUERvY3VtZW50KCkg
Y29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLUluc3BlY3RvckNvbnRy
b2xsZXIqIERvY3VtZW50OjppbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gcGFnZSgpID8gcGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkgOiAwOwotfQotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiB2b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgc2hvcnQg
ZmxhZ3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDI4NjMxNzUuLmIzOGQzZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC05MSw3ICs5MSw2IEBAIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7
CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwogY2xhc3MgSGl0
VGVzdFJlc3VsdDsKLWNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBJbnRQb2ludDsK
IGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIEpTTm9kZTsKQEAgLTUwMiw5ICs1MDEsNiBA
QCBwdWJsaWM6CiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfSAv
LyBjYW4gYmUgTlVMTAogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKICAg
ICBTZXR0aW5ncyogc2V0dGluZ3MoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIHZpcnR1YWwgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlcigpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAotI2VuZGlmCiAKICAgICBQYXNzUmVmUHRy
PFJhbmdlPiBjcmVhdGVSYW5nZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAppbmRleCAxMmViNzc2Li5lNDczYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTU3LDkgKzU3LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2VuZGlmCiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgU2Vj
dXJpdHlPcmlnaW47Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBjbGFzcyBJbnNwZWN0b3JD
b250cm9sbGVyOwotI2VuZGlmCiAKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsK
ICAgICBwdWJsaWM6CkBAIC04Nyw5ICs4NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25zdCA9IDA7CiAKICAg
ICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWN1cml0eU9yaWdpbi5nZXQoKTsgfQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIHZp
cnR1YWwgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcigpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KLSNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRp
b24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJE
ZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlMTZmNGVmLi5hMzNiYWNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTYxLDggKzYxLDggQEAgY29uc3QgaW50IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlw
ZVNoaWZ0ID0gMTY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQ6Okluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KEluc3BlY3RvckNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIpCi0gICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKK0luc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQorICAgIDogbV9pbnNwZWN0
b3JDb250cm9sbGVyKGluc3BlY3RvckNvbnRyb2xsZXIpCiAgICAgLCBtX2hhc1hIUkJyZWFrcG9p
bnRXaXRoRW1wdHlVUkwoZmFsc2UpCiB7CiB9CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlKiBub2RlKQog
CiB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpzZXRET01CcmVha3BvaW50KGxv
bmcgbm9kZUlkLCBsb25nIHR5cGUpCiB7Ci0gICAgTm9kZSogbm9kZSA9IG1fY29udHJvbGxlci0+
bV9kb21BZ2VudC0+bm9kZUZvcklkKG5vZGVJZCk7CisgICAgTm9kZSogbm9kZSA9IG1faW5zcGVj
dG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC0+bm9kZUZvcklkKG5vZGVJZCk7CiAgICAgaWYgKCFu
b2RlKQogICAgICAgICByZXR1cm47CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpzZXRET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25n
IHR5cGUpCiAKIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJy
ZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKIHsKLSAgICBOb2RlKiBub2RlID0gbV9j
b250cm9sbGVyLT5tX2RvbUFnZW50LT5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICBOb2RlKiBub2Rl
ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LT5ub2RlRm9ySWQobm9kZUlkKTsK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZv
aWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQobG9u
ZyBub2RlSWQsIGxvbmcgdHlwZSkKIAogdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dDo6d2lsbEluc2VydERPTU5vZGUoTm9kZSosIE5vZGUqIHBhcmVudCkKIHsKLSAgICBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gbV9jb250cm9sbGVyLT5tX2RlYnVnZ2Vy
QWdlbnQuZ2V0KCk7CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIGlmICgh
ZGVidWdnZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9p
ZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUoTm9kZSos
IE5vZGUqIHBhcmVudCkKIAogdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6d2ls
bFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBkZWJ1Z2dlckFnZW50ID0gbV9jb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7Cisg
ICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIGlmICghZGVidWdnZXJBZ2VudCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKIAogdm9pZCBJ
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCog
ZWxlbWVudCkKIHsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0g
bV9jb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7CisgICAgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dl
ckFnZW50LmdldCgpOwogICAgIGlmICghZGVidWdnZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6
ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGxvbmcgYnIKICAgICBpZiAoKDEg
PDwgYnJlYWtwb2ludFR5cGUpICYgaW5oZXJpdGFibGVET01CcmVha3BvaW50VHlwZXNNYXNrKSB7
CiAgICAgICAgIC8vIEZvciBpbmhlcml0YWJsZSBicmVha3BvaW50IHR5cGVzLCB0YXJnZXQgbm9k
ZSBpc24ndCBhbHdheXMgdGhlIHNhbWUgYXMgdGhlIG5vZGUgdGhhdCBvd25zIGEgYnJlYWtwb2lu
dC4KICAgICAgICAgLy8gVGFyZ2V0IG5vZGUgbWF5IGJlIHVua25vd24gdG8gZnJvbnRlbmQsIHNv
IHdlIG5lZWQgdG8gcHVzaCBpdCBmaXJzdC4KLSAgICAgICAgbG9uZyB0YXJnZXROb2RlSWQgPSBt
X2NvbnRyb2xsZXItPm1fZG9tQWdlbnQtPnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQodGFyZ2V0KTsK
KyAgICAgICAgbG9uZyB0YXJnZXROb2RlSWQgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fZG9t
QWdlbnQtPnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQodGFyZ2V0KTsKICAgICAgICAgQVNTRVJUKHRh
cmdldE5vZGVJZCk7CiAgICAgICAgIGRlc2NyaXB0aW9uLT5zZXROdW1iZXIoInRhcmdldE5vZGVJ
ZCIsIHRhcmdldE5vZGVJZCk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEluc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwg
bG9uZyBicgogICAgICAgICAgICAgZGVzY3JpcHRpb24tPnNldEJvb2xlYW4oImluc2VydGlvbiIs
IGluc2VydGlvbik7CiAgICAgfQogCi0gICAgbG9uZyBicmVha3BvaW50T3duZXJOb2RlSWQgPSBt
X2NvbnRyb2xsZXItPm1fZG9tQWdlbnQtPnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoYnJlYWtwb2lu
dE93bmVyKTsKKyAgICBsb25nIGJyZWFrcG9pbnRPd25lck5vZGVJZCA9IG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+bV9kb21BZ2VudC0+cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChicmVha3BvaW50T3du
ZXIpOwogICAgIEFTU0VSVChicmVha3BvaW50T3duZXJOb2RlSWQpOwogICAgIGRlc2NyaXB0aW9u
LT5zZXROdW1iZXIoIm5vZGVJZCIsIGJyZWFrcG9pbnRPd25lck5vZGVJZCk7CiAgICAgZGVzY3Jp
cHRpb24tPnNldE51bWJlcigidHlwZSIsIGJyZWFrcG9pbnRUeXBlKTsKQEAgLTI1Miw3ICsyNTIs
NyBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp1cGRhdGVTdWJ0cmVlQnJl
YWtwb2ludHMoTm9kZSogbm9kZSwgdWludDMyXwogCiB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50OjpwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChjb25zdCBTdHJpbmcmIGNhdGVn
b3J5VHlwZSwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpCiB7Ci0g
ICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1fY29udHJvbGxlci0+
bV9kZWJ1Z2dlckFnZW50LmdldCgpOworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVn
Z2VyQWdlbnQgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKTsK
ICAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjg3LDcgKzI4
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZVhIUkJyZWFr
cG9pbnQoY29uc3QgU3RyaW5nJiB1cmwpCiAKIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2Vy
QWdlbnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1fY29udHJvbGxlci0+bV9k
ZWJ1Z2dlckFnZW50LmdldCgpOworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2Vy
QWdlbnQgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKTsKICAg
ICBpZiAoIWRlYnVnZ2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaApp
bmRleCBkOGE1YjdmLi41MzdiZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaApAQCAtNTAsOSArNTAsOSBA
QCBjbGFzcyBOb2RlOwogCiBjbGFzcyBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKiBjb250
cm9sbGVyKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFn
ZW50PiBjcmVhdGUoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2Vy
QWdlbnQoY29udHJvbGxlcikpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgpOwpAQCAtODMsNyArODMs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgbG9uZyB0eXBlKTsK
ICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlciog
bV9jb250cm9sbGVyOworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIG1faW5zcGVjdG9yQ29udHJv
bGxlcjsKICAgICBIYXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9icmVha3BvaW50czsKICAgICBI
YXNoU2V0PFN0cmluZz4gbV9ldmVudExpc3RlbmVyQnJlYWtwb2ludHM7CiAgICAgSGFzaFNldDxT
dHJpbmc+IG1fWEhSQnJlYWtwb2ludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IGQ1YWQ0OTEuLmE1NDNjYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKKyNpbmNs
dWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0x
MTYsNyArMTE3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0YXJ0VGltaW5nKGNv
bnN0IFN0cmluZyYgdGl0bGUpCiAgICAgbV90aW1lcy5hZGQodGl0bGUsIGN1cnJlbnRUaW1lKCkg
KiAxMDAwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoY29u
c3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VOYW1lKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICAg
ICAvLyBGb2xsb3cgRmlyZWJ1ZydzIGJlaGF2aW9yIG9mIHJlcXVpcmluZyBhIHRpdGxlIHRoYXQg
aXMgbm90IG51bGwgb3IKICAgICAvLyB1bmRlZmluZWQgZm9yIHRpbWluZyBmdW5jdGlvbnMKQEAg
LTEzMiwxMiArMTMzLDE5IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5n
KGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsCiAKICAgICBkb3VibGUg
ZWxhcHNlZCA9IGN1cnJlbnRUaW1lKCkgKiAxMDAwIC0gc3RhcnRUaW1lOwogICAgIFN0cmluZyBt
ZXNzYWdlID0gdGl0bGUgKyBTdHJpbmc6OmZvcm1hdCgiOiAlLjBmbXMiLCBlbGFwc2VkKTsKLSAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExv
Z01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlTmFtZSk7CisgICAgY29u
c3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKKyAgICBh
ZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01l
c3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIu
c291cmNlVVJMKCkpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQoY29u
c3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCkKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudChQYXNzUmVmUHRyPFNjcmlw
dEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0
YWNrKQogewotICAgIFN0cmluZyBpZGVudGlmaWVyID0gbWFrZVN0cmluZyh0aXRsZSwgJ0AnLCBz
b3VyY2VJRCwgJzonLCBTdHJpbmc6Om51bWJlcihsaW5lTnVtYmVyKSk7CisgICAgY29uc3QgU2Ny
aXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKKyAgICAvLyBGb2xs
b3cgRmlyZWJ1ZydzIGJlaGF2aW9yIG9mIGNvdW50aW5nIHdpdGggbnVsbCBhbmQgdW5kZWZpbmVk
IHRpdGxlIGluCisgICAgLy8gdGhlIHNhbWUgYnVja2V0IGFzIG5vIGFyZ3VtZW50CisgICAgU3Ry
aW5nIHRpdGxlOworICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKHRpdGxl
KTsKKyAgICBTdHJpbmcgaWRlbnRpZmllciA9IG1ha2VTdHJpbmcodGl0bGUsICdAJywgbGFzdENh
bGxlci5zb3VyY2VVUkwoKSwgJzonLCBTdHJpbmc6Om51bWJlcihsYXN0Q2FsbGVyLmxpbmVOdW1i
ZXIoKSkpOworCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPjo6aXRlcmF0b3IgaXQgPSBt
X2NvdW50cy5maW5kKGlkZW50aWZpZXIpOwogICAgIGludCBjb3VudDsKICAgICBpZiAoaXQgPT0g
bV9jb3VudHMuZW5kKCkpCkBAIC0xNTAsNyArMTU4LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OmNvdW50KGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnMKICAgICBtX2NvdW50cy5hZGQoaWRlbnRpZmllciwgY291bnQpOwogCiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBtYWtlU3RyaW5nKHRpdGxlLCAiOiAiLCBTdHJpbmc6Om51bWJlcihjb3VudCkpOwot
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
TG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CisgICAgYWRk
TWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNz
YWdlTGV2ZWwsIG1lc3NhZ2UsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNv
dXJjZVVSTCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnJlc291cmNlUmV0
cmlldmVkQnlYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBz
ZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCBiNjBkNzQ1Li45N2ZjYjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5o
CkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKIAog
ICAgIHZvaWQgc3RhcnRUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgdm9pZCBzdG9w
VGltaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlTmFtZSk7Ci0gICAgdm9pZCBjb3VudChjb25zdCBTdHJpbmcmIHRpdGxlLCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKKyAgICB2b2lkIHN0
b3BUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
KTsKKyAgICB2b2lkIGNvdW50KFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+KTsKIAogICAgIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2ln
bmVkIHNlbmRMaW5lTnVtYmVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4NWE5NDhk
Li40MmI2YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5j
bHVkZSAiQ29va2llSmFyLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRE9N
V3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dExvYWRlci5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKQEAgLTE0Nyw2ICsxNDgsNyBAQCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAgICAgQVNT
RVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
bnNwZWN0b3JDb250cm9sbGVyQ3JlYXRlZChwYWdlLCB0aGlzKTsKIH0KIAogSW5zcGVjdG9yQ29u
dHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIoKQpAQCAtMTcyLDcgKzE3NCw5IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiAgICAgbV9kZWJ1
Z2dlckFnZW50LmNsZWFyKCk7CiAgICAgbV9icm93c2VyRGVidWdnZXJBZ2VudC5jbGVhcigpOwog
I2VuZGlmCisKICAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJEZWxldGVkKG1faW5zcGVjdGVkUGFnZSk7
CiAgICAgbV9pbnNwZWN0ZWRQYWdlID0gMDsKIAogICAgIG1fY2xpZW50LT5pbnNwZWN0b3JEZXN0
cm95ZWQoKTsKQEAgLTMwMywxMiArMzA3LDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpo
aWRlSGlnaGxpZ2h0KCkKICAgICBtX2NsaWVudC0+aGlkZUhpZ2hsaWdodCgpOwogfQogCi12b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6Om1hcmtUaW1lbGluZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Ci17Ci0gICAgaWYgKHRpbWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudCgpLT5k
aWRNYXJrVGltZWxpbmUobWVzc2FnZSk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNp
Z25lZCkKIHsKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhc2VhcmNoaW5nRm9yTm9kZUluUGFnZSgp
KQpAQCAtMzIxLDE4ICszMTksMTcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHUKICAgICAgICAg
aGlnaGxpZ2h0KG5vZGUpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmhhbmRsZU1v
dXNlUHJlc3MoKQorYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYW5kbGVNb3VzZVByZXNzKCkK
IHsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKHNl
YXJjaGluZ0Zvck5vZGVJblBhZ2UoKSk7Ci0gICAgaWYgKCFtX2hpZ2hsaWdodGVkTm9kZSkKLSAg
ICAgICAgcmV0dXJuOworICAgIGlmICghZW5hYmxlZCgpIHx8ICFzZWFyY2hpbmdGb3JOb2RlSW5Q
YWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxOb2RlPiBub2RlID0g
bV9oaWdobGlnaHRlZE5vZGU7Ci0gICAgc2V0U2VhcmNoaW5nRm9yTm9kZShmYWxzZSk7Ci0gICAg
aW5zcGVjdChub2RlLmdldCgpKTsKKyAgICBpZiAobV9oaWdobGlnaHRlZE5vZGUpIHsKKyAgICAg
ICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2hpZ2hsaWdodGVkTm9kZTsKKyAgICAgICAgc2V0U2Vh
cmNoaW5nRm9yTm9kZShmYWxzZSk7CisgICAgICAgIGluc3BlY3Qobm9kZS5nZXQoKSk7CisgICAg
fQorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+
IGNsaWVudCkKQEAgLTM0MSw4ICszMzgsMTEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
ZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChQYXNzT3duUHRyPEluc3BlY3RvckZyb250ZW4KICAg
ICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50ID0gY2xpZW50OwogfQogCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Omluc3BlY3RlZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQoRnJhbWUqIGZy
YW1lKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogeworICAgIGlmICh3b3Js
ZCAhPSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8g
SWYgdGhlIHBhZ2UgaXMgc3VwcG9zZWQgdG8gc2VydmUgYXMgSW5zcGVjdG9yRnJvbnRlbmQgbm90
aWZ5IGluc3BldG9yIGZyb250ZW5kCiAgICAgLy8gY2xpZW50IHRoYXQgaXQncyBjbGVhcmVkIHNv
IHRoYXQgdGhlIGNsaWVudCBjYW4gZXhwb3NlIGluc3BlY3RvciBiaW5kaW5ncy4KICAgICBpZiAo
bV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCAmJiBmcmFtZSA9PSBtX2luc3BlY3RlZFBhZ2UtPm1h
aW5GcmFtZSgpKQpAQCAtNjc4LDE1ICs2NzgsNiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICB9CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqIHJvb3RG
cmFtZSkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5mcmFtZURldGFjaGVk
RnJvbVBhcmVudChyb290RnJhbWUpOwotfQotCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Om1h
aW5SZXNvdXJjZUZpcmVkRE9NQ29udGVudEV2ZW50KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IEtVUkwmIHVybCkKIHsKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhaXNNYWluUmVzb3VyY2VM
b2FkZXIobG9hZGVyLCB1cmwpKQpAQCAtNzg3LDggKzc3OCwxMCBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENv
bnRleHQpCiAgICAgewotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
ID0gc2NyaXB0Q29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICAgICAgaW5z
cGVjdG9yLT5wb3N0V29ya2VyTm90aWZpY2F0aW9uVG9Gcm9udGVuZCgqbV93b3JrZXIsIG1fYWN0
aW9uKTsKKyAgICAgICAgaWYgKHNjcmlwdENvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgICAg
ICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oc2NyaXB0Q29udGV4dCktPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQor
ICAgICAgICAgICAgICAgIGluc3BlY3Rvci0+cG9zdFdvcmtlck5vdGlmaWNhdGlvblRvRnJvbnRl
bmQoKm1fd29ya2VyLCBtX2FjdGlvbik7CisgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAx
MmFkMGJmLi4zOWQ3ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwogY2xhc3MgRGF0YWJhc2U7
CitjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50
TG9hZGVyOwogY2xhc3MgRmxvYXRSZWN0OwpAQCAtMTQ4LDE1ICsxNDksMTQgQEAgcHVibGljOgog
CiAgICAgYm9vbCBzZWFyY2hpbmdGb3JOb2RlSW5QYWdlKCkgY29uc3Q7CiAgICAgdm9pZCBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZp
ZXJGbGFncyk7Ci0gICAgdm9pZCBoYW5kbGVNb3VzZVByZXNzKCk7CisgICAgYm9vbCBoYW5kbGVN
b3VzZVByZXNzKCk7CiAKICAgICB2b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFBhc3NP
d25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGNsaWVudCk7CiAgICAgYm9vbCBoYXNJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ7IH0KIAotICAgIHZvaWQgaW5zcGVjdGVkV2luZG93U2NyaXB0T2JqZWN0Q2xlYXJlZChG
cmFtZSopOworICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9N
V3JhcHBlcldvcmxkKik7CiAKICAgICB2b2lkIGRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIq
KTsKLSAgICB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KEZyYW1lKik7CiAKICAgICB2b2lk
IHNldEV4dHJhSGVhZGVycyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4pOwogCkBAIC0yMDMs
OCArMjAzLDYgQEAgcHVibGljOgogICAgIHZvaWQgb3BlbkluSW5zcGVjdGVkV2luZG93KGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGRyYXdFbGVtZW50VGl0bGUoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgYm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgb3ZlcmxheVJl
Y3QsIFdlYkNvcmU6OlNldHRpbmdzKikgY29uc3Q7CiAKLSAgICB2b2lkIG1hcmtUaW1lbGluZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CiAgICAgdm9pZCBhZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICBib29sIGlzUmVjb3Jk
aW5nVXNlckluaXRpYXRlZFByb2ZpbGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggOWVhNjkwYy4uOTcxNzVmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEyNCw3ICsxMjQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQnJlYWtPbk5vZGVS
ZW1vdmFsKE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXRhaWxzKTsK
ICAgICAgICAgYm9vbCBzaG91bGRCcmVha09uQXR0cmlidXRlTW9kaWZpY2F0aW9uKEVsZW1lbnQq
IGVsZW1lbnQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXRhaWxzKTsKIAotICAgICAg
ICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBJbnNwZWN0b3JDb250cm9sbGVyLgorICAgICAg
ICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uCiAg
ICAgICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KTsKICAgICAgICAgdm9p
ZCByZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXggYmRmZDdjYi4uZjFkNGQ1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaApAQCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
bnNwZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBJbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2U7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIFN0
b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHAKaW5kZXggODhkYjNhZS4uMzZiY2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMzQsOSArMzQs
OSBAQAogCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAj
aW5jbHVkZSAiU1FMRXJyb3IuaCIKICNpbmNsdWRlICJTUUxTdGF0ZW1lbnRDYWxsYmFjay5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgK
aW5kZXggYzczZDNjOC4uYTllOWE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKLWNsYXNz
IEluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOwog
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggNGI3ZTEzZi4uMzQyYWYwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUg
IkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmlu
ZGV4IGQzMzM4OTMuLjAzYzU1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDb25z
b2xlLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudVBy
b3ZpZGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDYsNiAr
NDUsNyBAQCBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRlcjsKIGNsYXNzIEluc3BlY3RvckNsaWVu
dDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgTm9kZTsKK2NsYXNzIFBh
Z2U7CiAKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPElu
c3BlY3RvckZyb250ZW5kSG9zdD4KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNjdmYTc3ZS4uMzQ4ZTc3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRDb250
ZXh0LmgiCkBAIC02MSw2ICs2Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjbGVhclRp
bWVyRXZlbnROYW1lID0gImNsZWFyVGltZXIiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHRp
bWVyRmlyZWRFdmVudE5hbWUgPSAidGltZXJGaXJlZCI7CiAKIGludCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNfZnJvbnRlbmRDb3VudGVyID0gMDsKK0hhc2hNYXA8UGFnZSosIEluc3BlY3Rv
ckNvbnRyb2xsZXIqPiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNfaW5zcGVjdG9yQ29udHJv
bGxlcnM7CiAKIHN0YXRpYyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9y
PEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKIHsKQEAgLTc5LDYgKzgxLDE2IEBAIHN0YXRpYyBi
b29sIGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01X
aW5kb3cqIHdpbmRvdywKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCkKK3sKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoZnJhbWUsIHdvcmxkKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIpCit7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVk
UGFnZURlc3Ryb3llZCgpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEluc2VydERPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIsIE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVudCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKQEAgLTEyOSw2ICsxNDEsMTYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3QKICAg
ICAgICAgZG9tQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVudCk7CiB9CiAKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgSGl0VGVzdFJlc3VsdCYg
cmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQoreworICAgIGluc3BlY3RvckNvbnRyb2xs
ZXItPm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7Cit9CisK
K2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVNb3VzZVByZXNzSW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQoreworICAgIHJldHVybiBpbnNw
ZWN0b3JDb250cm9sbGVyLT5oYW5kbGVNb3VzZVByZXNzKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIENoYXJhY3RlckRhdGEqIGNoYXJhY3RlckRhdGEp
CiB7CiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRy
b2xsZXItPm1fZG9tQWdlbnQuZ2V0KCkpCkBAIC0xNjMsNyArMTg1LDYgQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVySW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3IKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVtb3ZlVGltZXIodGltZXJJ
ZCk7CiB9CiAKLQogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbkltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGlu
ZSkKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKQEAgLTQ1NCw2ICs0NzUsMjcgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiBpYywgdW5zaWcKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+c2V0SW5pdGlh
bENvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCAiU2NyaXB0Iik7CiB9CiAKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYWluUmVzb3VyY2VGaXJlZExvYWRFdmVudEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiB1cmwpCit7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+bWFpblJlc291cmNl
RmlyZWRMb2FkRXZlbnQoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCB1cmwpOwor
fQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFpblJlc291cmNlRmlyZWRET01D
b250ZW50RXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQoreworICAgIGluc3BlY3RvckNvbnRyb2xs
ZXItPm1haW5SZXNvdXJjZUZpcmVkRE9NQ29udGVudEV2ZW50KGZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKSwgdXJsKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCBGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNl
QWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaW5zcGVjdG9yQ29u
dHJvbGxlcikpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50
KGZyYW1lKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExv
YWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCit7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkQ29tbWl0TG9h
ZChsb2FkZXIpOworfQorCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3Rh
cnRMaW5lKQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwpAQCAtNDcxLDgyICs1MTMs
MTA3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUxJbXBsKGNv
bnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZFdyaXRlSFRNTChlbmRMaW5lKTsKIH0KIAotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBTY3JpcHRBcmd1bWVudHMqIGFyZ3VtZW50cywgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3Rh
Y2spCiB7Ci0gICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkQ3JlYXRlV2ViU29ja2V0KGlkZW50
aWZpZXIsIHJlcXVlc3RVUkwsIGRvY3VtZW50VVJMKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVy
LT5jb25zb2xlQWdlbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVs
LCBtZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3RJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCiB7Ci0gICAgaW5z
cGVjdG9yQ29udHJvbGxlci0+d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGlkZW50
aWZpZXIsIHJlcXVlc3QpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmNvbnNvbGVBZ2VudCgp
LT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVO
dW1iZXIsIHNvdXJjZUlEKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y29uc29sZUNvdW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCBTY3JpcHRBcmd1bWVudHMqIGFyZ3VtZW50cywgU2NyaXB0Q2FsbFN0YWNr
KiBzdGFjaykKIHsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaWRSZWNlaXZlV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOworICAgIGluc3BlY3RvckNv
bnRyb2xsZXItPmNvbnNvbGVBZ2VudCgpLT5jb3VudChhcmd1bWVudHMsIHN0YWNrKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0SW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5n
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJp
bmcmIHRpdGxlKQogewotICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpZENsb3NlV2ViU29ja2V0
KGlkZW50aWZpZXIpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmNvbnNvbGVBZ2VudCgpLT5z
dGFydFRpbWluZyh0aXRsZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
dG9wQ29uc29sZVRpbWluZ0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciwgY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBzdGFjaykKK3sKKyAg
ICBpbnNwZWN0b3JDb250cm9sbGVyLT5jb25zb2xlQWdlbnQoKS0+c3RvcFRpbWluZyh0aXRsZSwg
c3RhY2spOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZU1hcmtU
aW1lbGluZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgU2Ny
aXB0QXJndW1lbnRzKiBhcmd1bWVudHMpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJv
bGxlcikpIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CisgICAgICAgIGFyZ3VtZW50cy0+Z2V0
Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOworICAgICAgICB0aW1lbGluZUFnZW50LT5k
aWRNYXJrVGltZWxpbmUobWVzc2FnZSk7CisgICAgfQorfQorCisjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkU3RhcnRQcm9m
aWxpbmdNZXNzYWdlVG9Db25zb2xlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCog
cHJvZmlsZXJBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fcHJvZmlsZXJBZ2VudC5nZXQo
KSkKKyAgICAgICAgcHJvZmlsZXJBZ2VudC0+YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25z
b2xlKHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljKQorI2lm
IEVOQUJMRShEQVRBQkFTRSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVu
RGF0YWJhc2VJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIERh
dGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogewotICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGljLT5hcHBsaWNhdGlvbkNhY2hl
QWdlbnQoKSkKLSAgICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50LT5uZXR3b3JrU3RhdGVDaGFu
Z2VkKCk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkT3BlbkRhdGFiYXNlKGRhdGFiYXNl
LCBkb21haW4sIG5hbWUsIHZlcnNpb24pOwogfQorI2VuZGlmCiAKLXZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiBpYywgRnJhbWUqIGZyYW1lKQorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVc2VET01TdG9yYWdlSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBTdG9yYWdlQXJlYSogc3RvcmFnZUFy
ZWEsIGJvb2wgaXNMb2NhbFN0b3JhZ2UsIEZyYW1lKiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBpYy0+YXBw
bGljYXRpb25DYWNoZUFnZW50KCkpCi0gICAgICAgIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+dXBk
YXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhmcmFtZSk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxl
ci0+ZGlkVXNlRE9NU3RvcmFnZShzdG9yYWdlQXJlYSwgaXNMb2NhbFN0b3JhZ2UsIGZyYW1lKTsK
IH0KICNlbmRpZgogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRv
Q29uc29sZShQYWdlKiBwYWdlLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlw
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8
U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBj
YWxsU3RhY2spCisjaWYgRU5BQkxFKFdPUktFUlMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlV29ya2VySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyLCBpbnRwdHJfdCBpZCwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNTaGFyZWRX
b3JrZXIpCiB7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5jb25zb2xlQWdlbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShz
b3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CisgICAg
aW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkQ3JlYXRlV29ya2VyKGlkLCB1cmwsIGlzU2hhcmVkV29y
a2VyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoUGFnZSogcGFnZSwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZERlc3Ryb3lXb3JrZXJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIsIGludHB0cl90IGlkKQogewotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29uc29sZUFnZW50KCktPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJl
ciwgc291cmNlSUQpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpZERlc3Ryb3lXb3JrZXIo
aWQpOwogfQorI2VuZGlmCiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb3VudChQ
YWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUlEKQorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpCiB7Ci0gICAgaWYg
KCFwYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5jb25zb2xlQWdlbnQoKS0+Y291bnQodGl0bGUsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKKyAg
ICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaWRDcmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllciwgcmVx
dWVzdFVSTCwgZG9jdW1lbnRVUkwpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c3RhcnRUaW1pbmcoUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3RJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmNvbnNvbGVBZ2VudCgpLT5zdGFydFRpbWluZyh0aXRsZSk7CisgICAgaW5z
cGVjdG9yQ29udHJvbGxlci0+d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGlkZW50
aWZpZXIsIHJlcXVlc3QpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3Rv
cFRpbWluZyhQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBpZiAo
IXBhZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PmNvbnNvbGVBZ2VudCgpLT5zdG9wVGltaW5nKHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VOYW1l
KTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi0jaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkU3RhcnRQcm9m
aWxpbmdNZXNzYWdlVG9Db25zb2xlKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldEltcGwoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKQogewotICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50
ID0gaWMtPm1fcHJvZmlsZXJBZ2VudC5nZXQoKSkKLSAgICAgICAgcHJvZmlsZXJBZ2VudC0+YWRk
U3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VV
UkwpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpZENsb3NlV2ViU29ja2V0KGlkZW50aWZp
ZXIpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqIGljKQoreworICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGljLT5hcHBsaWNhdGlvbkNhY2hlQWdl
bnQoKSkKKyAgICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50LT5uZXR3b3JrU3RhdGVDaGFuZ2Vk
KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlv
bkNhY2hlU3RhdHVzSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgRnJhbWUqIGZyYW1lKQor
eworICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCA9IGljLT5hcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSkKKyAgICAgICAgYXBwbGljYXRp
b25DYWNoZUFnZW50LT51cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKGZyYW1lKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKaW5kZXggN2Y3NDRmNC4uOTQ0Nzc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMzEsMTcgKzMx
LDI0IEBACiAjaWZuZGVmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbl9oCiAjZGVmaW5lIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbl9oCiAKKyNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENoYXJhY3RlckRhdGE7Citj
bGFzcyBET01XcmFwcGVyV29ybGQ7CitjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50Q29udGV4dDsKIGNsYXNzIERvY3VtZW50TG9hZGVy
OworY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFz
cyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsK
QEAgLTUyLDYgKzU5LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEFy
Z3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CitjbGFzcyBTdG9yYWdlQXJlYTsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCiAjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQpAQCAtNjMsNiArNzEsOSBAQCB0eXBlZGVmIHBhaXI8SW5zcGVj
dG9yQ29udHJvbGxlciosIGludD4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llOwogCiBj
bGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gewogcHVibGljOgorICAgIHN0YXRpYyB2b2lk
IGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCopOwor
ICAgIHN0YXRpYyB2b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoUGFnZSopOworCiAgICAgc3Rh
dGljIHZvaWQgd2lsbEluc2VydERPTU5vZGUoRG9jdW1lbnQqLCBOb2RlKiwgTm9kZSogcGFyZW50
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlKERvY3VtZW50KiwgTm9kZSopOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlKERvY3VtZW50KiwgTm9kZSopOwpAQCAt
NzAsNiArODEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihE
b2N1bWVudCosIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZp
ZWQoRG9jdW1lbnQqLCBDaGFyYWN0ZXJEYXRhKik7CiAKKyAgICBzdGF0aWMgdm9pZCBtb3VzZURp
ZE1vdmVPdmVyRWxlbWVudChQYWdlKiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1v
ZGlmaWVyRmxhZ3MpOworICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3MoUGFnZSopOwor
CiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNjaGVkdWxl
UmVzb3VyY2VSZXF1ZXN0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHN0YXRp
YyB2b2lkIGRpZEluc3RhbGxUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50IHRpbWVy
SWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOwpAQCAtMTA5LDMwICsxMjMsNTMgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQg
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGlu
ZU51bWJlcik7CiAgICAgc3RhdGljIHZvaWQgc2NyaXB0SW1wb3J0ZWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcpOworICAgIHN0YXRpYyB2b2lkIG1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KEZyYW1l
KiwgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyB2b2lkIG1haW5SZXNvdXJjZUZpcmVkRE9NQ29u
dGVudEV2ZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyB2b2lkIGZyYW1lRGV0
YWNoZWRGcm9tUGFyZW50KEZyYW1lKik7CisgICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZChG
cmFtZSosIERvY3VtZW50TG9hZGVyKik7CisKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIHdpbGxXcml0ZUhUTUwoRG9jdW1lbnQqLCB1bnNpZ25lZCBpbnQgbGVuZ3Ro
LCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgdW5zaWduZWQgaW50IGVuZExp
bmUpOwogCisgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlKiwgTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBTY3JpcHRBcmd1bWVudHMqLCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICBzdGF0aWMgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYpOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudChQYWdlKiwgU2NyaXB0
QXJndW1lbnRzKiwgU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgc3RhdGljIHZvaWQgc3RhcnRDb25z
b2xlVGltaW5nKFBhZ2UqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBzdGF0aWMgdm9pZCBz
dG9wQ29uc29sZVRpbWluZyhQYWdlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0
YWNrKik7CisgICAgc3RhdGljIHZvaWQgY29uc29sZU1hcmtUaW1lbGluZShQYWdlKiwgU2NyaXB0
QXJndW1lbnRzKik7CisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBzdGF0
aWMgdm9pZCBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoUGFnZSosIGNvbnN0IFN0
cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgIHN0YXRpYyB2b2lkIGRpZE9w
ZW5EYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2UqLCBjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwor
I2VuZGlmCisKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisgICAgc3RhdGljIHZvaWQgZGlkVXNl
RE9NU3RvcmFnZShQYWdlKiwgU3RvcmFnZUFyZWEqLCBib29sIGlzTG9jYWxTdG9yYWdlLCBGcmFt
ZSopOworI2VuZGlmCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBzdGF0aWMgdm9pZCBkaWRD
cmVhdGVXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludHB0cl90IGlkLCBjb25zdCBT
dHJpbmcmIHVybCwgYm9vbCBpc1NoYXJlZFdvcmtlcik7CisgICAgc3RhdGljIHZvaWQgZGlkRGVz
dHJveVdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50cHRyX3QgaWQpOworI2VuZGlm
CisKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2Vi
U29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMKTsKICAgICBz
dGF0aWMgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZENsb3NlV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKQogICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoUGFnZSopOwogICAg
IHN0YXRpYyB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoRnJhbWUqKTsKLQotICAg
IHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSosIE1lc3NhZ2VTb3VyY2UsIE1l
c3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0
cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwotICAgIHN0
YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSosIE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJik7Ci0KLSAgICBzdGF0aWMgdm9pZCBjb3VudChQYWdlKiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VJRCk7Ci0gICAgc3RhdGljIHZvaWQgc3RhcnRUaW1pbmcoUGFnZSosIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOwotICAgIHN0YXRpYyB2b2lkIHN0b3BUaW1pbmcoUGFnZSosIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlTmFtZSk7
Ci0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBzdGF0aWMgdm9pZCBhZGRT
dGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0
IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBzdGF0aWMgdm9pZCBp
bnNwZWN0b3JDb250cm9sbGVyQ3JlYXRlZChQYWdlKiBwYWdlLCBJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyKSB7IHNfaW5zcGVjdG9yQ29udHJvbGxlcnMuc2V0KHBhZ2Us
IGluc3BlY3RvckNvbnRyb2xsZXIpOyB9CisgICAgc3RhdGljIHZvaWQgaW5zcGVjdG9yQ29udHJv
bGxlckRlbGV0ZWQoUGFnZSogcGFnZSkgeyBzX2luc3BlY3RvckNvbnRyb2xsZXJzLnJlbW92ZShw
YWdlKTsgfQogICAgIHN0YXRpYyB2b2lkIGZyb250ZW5kQ3JlYXRlZCgpIHsgc19mcm9udGVuZENv
dW50ZXIgKz0gMTsgfQogICAgIHN0YXRpYyB2b2lkIGZyb250ZW5kRGVsZXRlZCgpIHsgc19mcm9u
dGVuZENvdW50ZXIgLT0gMTsgfQogICAgIHN0YXRpYyBib29sIGhhc0Zyb250ZW5kcygpIHsgcmV0
dXJuIHNfZnJvbnRlbmRDb3VudGVyOyB9CkBAIC0xNDIsNiArMTc5LDkgQEAgcHVibGljOgogCiBw
cml2YXRlOgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgc3RhdGljIHZvaWQgZGlkQ2xlYXJX
aW5kb3dPYmplY3RJbldvcmxkSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgRnJhbWUqLCBET01X
cmFwcGVyV29ybGQqKTsKKyAgICBzdGF0aWMgdm9pZCBpbnNwZWN0ZWRQYWdlRGVzdHJveWVkSW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKik7CisKICAgICBzdGF0aWMgdm9pZCB3aWxsSW5zZXJ0RE9N
Tm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVudCk7
CiAgICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciosIE5vZGUqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciosIE5vZGUqKTsKQEAgLTE1MCw2ICsxOTAsOSBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIGRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBF
bGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgQ2hhcmFjdGVyRGF0YSopOwogCisgICAgc3RhdGljIHZvaWQgbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBIaXRU
ZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CisgICAgc3RhdGljIGJvb2wgaGFu
ZGxlTW91c2VQcmVzc0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciopOworCiAgICAgc3RhdGljIHZv
aWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVz
dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRJbnN0YWxsVGltZXJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBpbnQgdGlt
ZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CkBAIC0xODgsOSArMjMxLDM4IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5k
VVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcik7CiAgICAgc3RhdGljIHZvaWQgc2NyaXB0SW1w
b3J0ZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluUmVzb3Vy
Y2VGaXJlZExvYWRFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEZyYW1lKiwgY29uc3Qg
S1VSTCYpOworICAgIHN0YXRpYyB2b2lkIG1haW5SZXNvdXJjZUZpcmVkRE9NQ29udGVudEV2ZW50
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgc3Rh
dGljIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
LCBGcmFtZSopOworICAgIHN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqLCBEb2N1bWVudExvYWRlciopOworCiAgICAgc3RhdGljIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwg
dW5zaWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSk7CiAgICAgc3RhdGlj
IHZvaWQgZGlkV3JpdGVIVE1MSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUmLCB1bnNpZ25lZCBpbnQgZW5kTGluZSk7CiAKKyAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTY3JpcHRBcmd1bWVu
dHMqLCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25z
b2xlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKKyAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnRJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBTY3JpcHRBcmd1bWVudHMqLCBTY3JpcHRDYWxsU3Rh
Y2sqKTsKKyAgICBzdGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1pbmdJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9wQ29u
c29sZVRpbWluZ0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IFN0cmluZyYgdGl0bGUs
IFNjcmlwdENhbGxTdGFjayopOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVNYXJrVGltZWxpbmVJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBTY3JpcHRBcmd1bWVudHMqKTsKKworI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIHN0YXRpYyB2b2lkIGFkZFN0YXJ0UHJvZmlsaW5n
TWVzc2FnZVRvQ29uc29sZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IFN0cmluZyYg
dGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyNl
bmRpZgorCisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgIHN0YXRpYyB2b2lkIGRpZE9wZW5EYXRh
YmFzZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIERhdGFiYXNlKiwgY29uc3QgU3RyaW5nJiBk
b21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorICAgIHN0YXRpYyB2b2lkIGRpZFVzZURPTVN0
b3JhZ2VJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBTdG9yYWdlQXJlYSosIGJvb2wgaXNMb2Nh
bFN0b3JhZ2UsIEZyYW1lKik7CisjZW5kaWYKKworI2lmIEVOQUJMRShXT1JLRVJTKQorICAgIHN0
YXRpYyB2b2lkIGRpZENyZWF0ZVdvcmtlckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGludHB0
cl90IGlkLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpc1NoYXJlZFdvcmtlcik7CisgICAgc3Rh
dGljIHZvaWQgZGlkRGVzdHJveVdvcmtlckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGludHB0
cl90IGlkKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogICAgIHN0YXRpYyB2
b2lkIGRpZENyZWF0ZVdlYlNvY2tldEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYgZG9j
dW1lbnRVUkwpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCYpOwpAQCAtMjAzLDEwICsyNzUsMTMgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiwgRnJhbWUqKTsKICNlbmRpZgogCi0gICAgc3RhdGljIElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3VtZW50Kik7CiAgICAgc3RhdGljIEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShGcmFtZSopOworICAgIHN0
YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKFBhZ2UqKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckNvbnRleHQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKKyAg
ICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9u
dGVuZEZvckZyYW1lKEZyYW1lKik7CisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JQYWdlKFBhZ2UqKTsKIAogICAgIHN0YXRp
YyBib29sIGhhc0Zyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICBzdGF0aWMgdm9p
ZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3Qg
U3RyaW5nJiBjYXRlZ29yeVR5cGUsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNo
cm9ub3VzKTsKQEAgLTIxNiwxMyArMjkxLDMwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQqIHJldHJpZXZlUmVzb3VyY2VBZ2VudChJbnNwZWN0b3JDb250cm9s
bGVyKik7CiAKICAgICBzdGF0aWMgaW50IHNfZnJvbnRlbmRDb3VudGVyOworICAgIHN0YXRpYyBI
YXNoTWFwPFBhZ2UqLCBJbnNwZWN0b3JDb250cm9sbGVyKj4gc19pbnNwZWN0b3JDb250cm9sbGVy
czsKICNlbmRpZgogfTsKIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQq
IHdvcmxkKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUo
ZnJhbWUpKQorICAgICAgICBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsIGZyYW1lLCB3b3JsZCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKFBhZ2UqIHBhZ2Up
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQor
ICAgICAgICBpbnNwZWN0ZWRQYWdlRGVzdHJveWVkSW1wbChpbnNwZWN0b3JDb250cm9sbGVyKTsK
KyNlbmRpZgorfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJ
bnNlcnRET01Ob2RlKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSwgTm9kZSogcGFyZW50
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9j
dW1lbnQpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckRvY3VtZW50KGRvY3VtZW50KSkK
ICAgICAgICAgd2lsbEluc2VydERPTU5vZGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIG5vZGUs
IHBhcmVudCk7CiAjZW5kaWYKIH0KQEAgLTIzMCw3ICszMjIsNyBAQCBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKERvY3VtZW50KiBkb2N1bWVu
dCwgTm9kZQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRE
T01Ob2RlKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICBpZiAoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xs
ZXJXaXRoRnJvbnRlbmRGb3JEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIGRpZEluc2VydERP
TU5vZGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIG5vZGUpOwogI2VuZGlmCiB9CkBAIC0yMzgs
NyArMzMwLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNl
cnRET01Ob2RlKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSoKIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBO
b2RlKiBub2RlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9j
dW1lbnQoZG9jdW1lbnQpKSB7CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRG9jdW1lbnQo
ZG9jdW1lbnQpKSB7CiAgICAgICAgIHdpbGxSZW1vdmVET01Ob2RlSW1wbChpbnNwZWN0b3JDb250
cm9sbGVyLCBub2RlKTsKICAgICAgICAgZGlkUmVtb3ZlRE9NTm9kZUltcGwoaW5zcGVjdG9yQ29u
dHJvbGxlciwgbm9kZSk7CiAgICAgfQpAQCAtMjQ4LDcgKzM0MCw3IEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBOb2RlCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2Rp
ZnlET01BdHRyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCogZWxlbWVudCkKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAg
ICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3Rv
ckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIHdp
bGxNb2RpZnlET01BdHRySW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBlbGVtZW50KTsKICNlbmRp
ZgogfQpAQCAtMjU2LDE1ICszNDgsMzIgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihEb2N1bWVudCogZG9jdW1lbnQsIEVsZW0KIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihEb2N1bWVu
dCogZG9jdW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZy
b250ZW5kRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQogICAgICAgICBkaWRNb2RpZnlET01BdHRySW1w
bChpbnNwZWN0b3JDb250cm9sbGVyLCBlbGVtZW50KTsKICNlbmRpZgogfQogCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFBhZ2Uq
IHBhZ2UsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFn
cykKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZv
clBhZ2UocGFnZSkpCisgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbChpbnNwZWN0
b3JDb250cm9sbGVyLCByZXN1bHQsIG1vZGlmaWVyRmxhZ3MpOworI2VuZGlmCit9CisKK2lubGlu
ZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzcyhQYWdlKiBw
YWdlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5k
Rm9yUGFnZShwYWdlKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZU1vdXNlUHJlc3NJbXBsKGluc3Bl
Y3RvckNvbnRyb2xsZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZChEb2N1
bWVudCogZG9jdW1lbnQsIENoYXJhY3RlckRhdGEqIGNoYXJhY3RlckRhdGEpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyV2l0aEZyb250ZW5kRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQogICAgICAgICBjaGFy
YWN0ZXJEYXRhTW9kaWZpZWRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNoYXJhY3RlckRhdGEp
OwogI2VuZGlmCiB9CkBAIC0yNzIsNyArMzgxLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoRG9jdW1lbnQqIGRvY3VtZW50LAog
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0
KSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAg
ICB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCB1cmwpOwog
I2VuZGlmCiB9CkBAIC0yODAsNyArMzg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnQKIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2NoZWR1bGVSZXNvdXJjZVJl
cXVlc3QoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNv
bnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIGRpZFNj
aGVkdWxlUmVzb3VyY2VSZXF1ZXN0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCB1cmwpOwogI2Vu
ZGlmCiB9CkBAIC0yODgsNyArMzk3LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChEb2N1bWVudCogZG9jdW0KIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBz
aW5nbGVTaG90KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29u
dGV4dChjb250ZXh0KSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JDb250ZXh0KGNvbnRl
eHQpKQogICAgICAgICBkaWRJbnN0YWxsVGltZXJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHRp
bWVySWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogI2VuZGlmCiB9CkBAIC0yOTYsNyArNDA1LDcg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
aW50IHRpbWVySWQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JD
b250ZXh0KGNvbnRleHQpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckNvbnRleHQoY29u
dGV4dCkpCiAgICAgICAgIGRpZFJlbW92ZVRpbWVySW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCB0
aW1lcklkKTsKICNlbmRpZgogfQpAQCAtMzA1LDcgKzQxNCw3IEBAIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29uCiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5k
Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gd2lsbENhbGxGdW5jdGlvbkltcGwoaW5z
cGVjdG9yQ29udHJvbGxlciwgc2NyaXB0TmFtZSwgc2NyaXB0TGluZSk7CiAjZW5kaWYKICAgICBy
ZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CkBAIC0zMjIsNyArNDMxLDcg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24o
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGEKIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2hhbmdlWEhSUmVhZHlTdGF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBYTUxIdHRwUmVxdWVzdCogcmVxdWVz
dCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29u
dGV4dCkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIg
PSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yQ29udGV4dChjb250ZXh0KSkKICAg
ICAgICAgcmV0dXJuIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChpbnNwZWN0b3JDb250cm9s
bGVyLCByZXF1ZXN0KTsKICNlbmRpZgogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUoKTsKQEAgLTMzOSw3ICs0NDgsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUoY29uc3QgSW5zcGVjdG9ySW5zdAog
aW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRXZlbnQm
IGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50
Q29udGV4dD4mIGFuY2VzdG9ycykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJv
bGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JE
b2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudEltcGwo
aW5zcGVjdG9yQ29udHJvbGxlciwgZXZlbnQsIHdpbmRvdywgbm9kZSwgYW5jZXN0b3JzKTsKICNl
bmRpZgogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKQEAgLTM1
Niw3ICs0NjUsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERp
c3BhdGNoRXZlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudAogaW5saW5lIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRj
aEV2ZW50T25XaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRv
dyogd2luZG93KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJh
bWUoZnJhbWUpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckZyYW1lKGZyYW1lKSkKICAg
ICAgICAgcmV0dXJuIHdpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKGluc3BlY3RvckNvbnRy
b2xsZXIsIGV2ZW50LCB3aW5kb3cpOwogI2VuZGlmCiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSgpOwpAQCAtMzczLDcgKzQ4Miw3IEBAIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93KGNvbnN0IEluc3Bl
Y3RvckluCiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3Ry
aW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckZy
YW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuIHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoaW5zcGVj
dG9yQ29udHJvbGxlciwgdXJsLCBsaW5lTnVtYmVyKTsKICNlbmRpZgogICAgIHJldHVybiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKQEAgLTM5MCw3ICs0OTksNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbgogaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgaW50IHRpbWVySWQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAg
ICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVu
ZEZvckNvbnRleHQoY29udGV4dCkpCiAgICAgICAgIHJldHVybiB3aWxsRmlyZVRpbWVySW1wbChp
bnNwZWN0b3JDb250cm9sbGVyLCB0aW1lcklkKTsKICNlbmRpZgogICAgIHJldHVybiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKQEAgLTQwNyw3ICs1MTYsNyBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpbwogaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQoRnJhbWUqIGZyYW1lKQogewogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJv
bGxlcldpdGhGcm9udGVuZEZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuIHdpbGxMYXlv
dXRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIpOwogI2VuZGlmCiAgICAgcmV0dXJuIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwpAQCAtNDI0LDcgKzUzMyw3IEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KGNvbnN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvCiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQorICAgIGlmIChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhG
cm9udGVuZEZvckNvbnRleHQoY29udGV4dCkpCiAgICAgICAgIHJldHVybiB3aWxsTG9hZFhIUklt
cGwoaW5zcGVjdG9yQ29udHJvbGxlciwgcmVxdWVzdCk7CiAjZW5kaWYKICAgICByZXR1cm4gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CkBAIC00NDEsNyArNTUwLDcgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSKGNvbnN0IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkMKIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
RnJhbWUoZnJhbWUpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckZyYW1lKGZyYW1lKSkK
ICAgICAgICAgcmV0dXJuIHdpbGxQYWludEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgcmVjdCk7
CiAjZW5kaWYKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CkBA
IC00NTgsNyArNTY3LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRQYWludChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db28KIGlubGluZSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVj
YWxjdWxhdGVTdHlsZShEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0
aEZyb250ZW5kRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gd2lsbFJlY2Fs
Y3VsYXRlU3R5bGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIpOwogI2VuZGlmCiAgICAgcmV0dXJu
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwpAQCAtNDc4LDcgKzU4Nyw3IEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0KEZyYW1lKiBmcmFtZSwKICAgICAvLyBUaGlzIG5vdGlmaWNhdGlvbiBzaG91bGQgYmUg
cHJvY2VjZXNzZWQgZXZlbiBpbiBjYXNlcyB0aGVyZSBpcyBubyBmcm9udGVuZC4KICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlj
ID0gZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKGZyYW1lLT5wYWdl
KCkpKQogICAgICAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3RJbXBsKGljLCBpZGVudGlm
aWVyLCBsb2FkZXIsIHJlcXVlc3QpOwogI2VuZGlmCiB9CkBAIC00ODYsNyArNTk1LDcgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJl
cXVlc3QoRnJhbWUqIGZyYW1lLAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsU2VuZFJlcXVlc3QoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JD
b250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9u
dGVuZEZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgd2lsbFNlbmRSZXF1ZXN0SW1wbChpYywgaWRl
bnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAjZW5kaWYKIH0KQEAgLTQ5NCwy
MSArNjAzLDIxIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNl
bmRSZXF1ZXN0KEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKFBhZ2UqIHBhZ2UsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIG1hcmtS
ZXNvdXJjZUFzQ2FjaGVkSW1wbChwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGlkZW50aWZp
ZXIpOyAKKyAgICBtYXJrUmVzb3VyY2VBc0NhY2hlZEltcGwoaW5zcGVjdG9yQ29udHJvbGxlckZv
clBhZ2UocGFnZSksIGlkZW50aWZpZXIpOyAKICNlbmRpZgogfQogCiBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdl
KiBwYWdlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBkaWRMb2FkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGVJbXBsKHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgbG9hZGVyLCByZXNv
dXJjZSk7CisgICAgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChpbnNwZWN0b3JD
b250cm9sbGVyRm9yUGFnZShwYWdlKSwgbG9hZGVyLCByZXNvdXJjZSk7CiAjZW5kaWYKIH0KIAog
aW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
RnJhbWUoZnJhbWUpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckZyYW1lKGZyYW1lKSkK
ICAgICAgICAgcmV0dXJuIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChpbnNwZWN0b3JDb250
cm9sbGVyLCBpZGVudGlmaWVyKTsKICNlbmRpZgogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUoKTsKQEAgLTUyNSw3ICs2MzQsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGEoY29uc3QgSW5zcGVjdG9y
SW5zdAogaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSogZnJhbWUsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkp
CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNw
ZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1
cm4gd2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBp
ZGVudGlmaWVyLCByZXNwb25zZSk7CiAjZW5kaWYKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llKCk7CkBAIC01NDIsNyArNjUxLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb25zdCBJbnNw
ZWN0b3IKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBs
ZW5ndGhSZWNlaXZlZCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZv
ckZyYW1lKGZyYW1lKSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JGcmFtZShmcmFtZSkp
CiAgICAgICAgIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChpbnNwZWN0b3JDb250cm9sbGVy
LCBpZGVudGlmaWVyLCBsZW5ndGhSZWNlaXZlZCk7CiAjZW5kaWYKIH0KQEAgLTU1MCw3ICs2NTks
NyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250
ZW50TGVuZ3RoKEZyYW1lKiBmcmFtZSwgdW5zaQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVj
dG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRG
b3JGcmFtZShmcmFtZSkpCiAgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKGluc3BlY3RvckNv
bnRyb2xsZXIsIGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogI2VuZGlmCiB9CkBAIC01NTgsNyAr
NjY3LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hM
b2FkaW5nKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG8KIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldp
dGhGcm9udGVuZEZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgZGlkRmFpbExvYWRpbmdJbXBsKGlu
c3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIGVycm9yKTsKICNlbmRpZgogfQpAQCAtNTY2
LDcgKzY3NSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFp
bExvYWRpbmcoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
Y29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQo
Y29udGV4dCkpCiAgICAgICAgIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwo
aW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCB1cmwsIHNlbmRV
UkwsIHNlbmRMaW5lTnVtYmVyKTsKICNlbmRpZgogfQpAQCAtNTc0LDE1ICs2ODMsNDcgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1M
SHR0cFJlcXVlc3QoU2NyaXB0RXgKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2NyaXB0SW1wb3J0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyID0gY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgIGlmIChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxl
ckZvckNvbnRleHQoY29udGV4dCkpCiAgICAgICAgIHNjcmlwdEltcG9ydGVkSW1wbChpbnNwZWN0
b3JDb250cm9sbGVyLCBpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwogI2VuZGlmCiB9CiAKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFpblJlc291cmNlRmlyZWRMb2Fk
RXZlbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCit7CisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9
IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JGcmFtZShmcmFtZSkpCisgICAgICAg
IG1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBmcmFt
ZSwgdXJsKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Om1haW5SZXNvdXJjZUZpcmVkRE9NQ29udGVudEV2ZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZy
b250ZW5kRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICBtYWluUmVzb3VyY2VGaXJlZERPTUNvbnRl
bnRFdmVudEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZnJhbWUsIHVybCk7CisjZW5kaWYKK30K
KworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZURldGFjaGVkRnJv
bVBhcmVudChGcmFtZSogZnJhbWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRy
b2xsZXJXaXRoRnJvbnRlbmRGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIGZyYW1lRGV0YWNoZWRG
cm9tUGFyZW50SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBmcmFtZSk7CisjZW5kaWYKK30KKwor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkKEZyYW1l
KiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5z
cGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgZGlkQ29tbWl0TG9hZElt
cGwoaW5zcGVjdG9yQ29udHJvbGxlciwgbG9hZGVyKTsKKyNlbmRpZgorfQorCiBpbmxpbmUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFdyaXRlSFRNTChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2ln
bmVkIGludCBzdGFydExpbmUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xs
ZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRG9j
dW1lbnQoZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gd2lsbFdyaXRlSFRNTEltcGwoaW5zcGVj
dG9yQ29udHJvbGxlciwgbGVuZ3RoLCBzdGFydExpbmUpOwogI2VuZGlmCiAgICAgcmV0dXJuIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwpAQCAtNTk2LDExICs3MzcsNTAgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwoY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW8KICNlbmRpZgogfQogCisjaWYgRU5BQkxFKERBVEFCQVNFKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBT
dHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRl
eHQpKQorICAgICAgICBkaWRPcGVuRGF0YWJhc2VJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGRh
dGFiYXNlLCBkb21haW4sIG5hbWUsIHZlcnNpb24pOworI2VuZGlmCit9CisjZW5kaWYKKworI2lm
IEVOQUJMRShET01fU1RPUkFHRSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkVXNlRE9NU3RvcmFnZShQYWdlKiBwYWdlLCBTdG9yYWdlQXJlYSogc3RvcmFnZUFyZWEs
IGJvb2wgaXNMb2NhbFN0b3JhZ2UsIEZyYW1lKiBmcmFtZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
aW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UocGFnZSkpCisgICAgICAgIGRpZFVzZURPTVN0b3Jh
Z2VJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHN0b3JhZ2VBcmVhLCBpc0xvY2FsU3RvcmFnZSwg
ZnJhbWUpOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmIEVOQUJMRShXT1JLRVJTKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXb3JrZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50cHRyX3QgaWQsIGNvbnN0IFN0cmluZyYgdXJsLCBi
b29sIGlzU2hhcmVkV29ya2VyKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9s
bGVyV2l0aEZyb250ZW5kRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgZGlkQ3JlYXRlV29y
a2VySW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpZCwgdXJsLCBpc1NoYXJlZFdvcmtlcik7Cisj
ZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREZXN0
cm95V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludHB0cl90IGlkKQor
eworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yQ29u
dGV4dChjb250ZXh0KSkKKyAgICAgICAgZGlkRGVzdHJveVdvcmtlckltcGwoaW5zcGVjdG9yQ29u
dHJvbGxlciwgaWQpOworI2VuZGlmCit9CisjZW5kaWYKKworCiAjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJT
b2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCkK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4
dCkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBp
bnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yQ29udGV4dChjb250ZXh0KSkKICAgICAg
ICAgZGlkQ3JlYXRlV2ViU29ja2V0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpZGVudGlmaWVy
LCByZXF1ZXN0VVJMLCBkb2N1bWVudFVSTCk7CiAjZW5kaWYKIH0KQEAgLTYwOCw3ICs3ODgsNyBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tl
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0JiByZXF1ZXN0KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0
b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRl
bmRGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3RJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIHJlcXVlc3QpOwog
I2VuZGlmCiB9CkBAIC02MTYsNyArNzk2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoU2NyaXB0RXgKIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChj
b250ZXh0KSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JDb250ZXh0KGNvbnRleHQpKQog
ICAgICAgICBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICNlbmRpZgogfQpAQCAtNjI0LDU0
ICs4MDQsMTM2IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKFNjcmlwCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCisgICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVy
V2l0aEZyb250ZW5kRm9yQ29udGV4dChjb250ZXh0KSkKICAgICAgICAgZGlkQ2xvc2VXZWJTb2Nr
ZXRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIpOwogI2VuZGlmCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWQoUGFnZSogcGFnZSkK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
aW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UocGFnZSkpCisgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250
ZW5kRm9yUGFnZShwYWdlKSkKICAgICAgICAgbmV0d29ya1N0YXRlQ2hhbmdlZEltcGwoaW5zcGVj
dG9yQ29udHJvbGxlcik7CiAjZW5kaWYKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKiBmcmFtZSkKIHsK
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5z
cGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
ICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVj
dG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgdXBkYXRl
QXBwbGljYXRpb25DYWNoZVN0YXR1c0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZnJhbWUpOwog
I2VuZGlmCiB9CisjZW5kaWYKKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBhZ2UsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgU2NyaXB0QXJndW1lbnRzKiBhcmd1bWVudHMsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNr
KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShwYWdlKSkK
KyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgc291
cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLCBjYWxsU3RhY2spOworI2VuZGlm
Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRv
Q29uc29sZShQYWdlKiBwYWdlLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlw
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQorICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoUGFnZSogcGFnZSwgU2NyaXB0QXJndW1l
bnRzKiBhcmd1bWVudHMsIFNjcmlwdENhbGxTdGFjayogc3RhY2spCit7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQorICAgICAgICBjb25zb2xlQ291
bnRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGFyZ3VtZW50cywgc3RhY2spOworI2VuZGlmCit9
CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGlt
aW5nKFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9
IGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQorICAgICAgICBzdGFydENvbnNvbGVU
aW1pbmdJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpdGxlKTsKKyNlbmRpZgorfQorCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKFBhZ2Uq
IHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogc3RhY2spCit7Cisj
aWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQorICAgICAg
ICBzdG9wQ29uc29sZVRpbWluZ0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgdGl0bGUsIHN0YWNr
KTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnNvbGVNYXJrVGltZWxpbmUoUGFnZSogcGFnZSwgU2NyaXB0QXJndW1lbnRzKiBhcmd1bWVudHMp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JQ
YWdlKHBhZ2UpKQorICAgICAgICBjb25zb2xlTWFya1RpbWVsaW5lSW1wbChpbnNwZWN0b3JDb250
cm9sbGVyLCBhcmd1bWVudHMpOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkU3RhcnRQ
cm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShwYWdlKSkKKyAgICAgICAgYWRk
U3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCB0
aXRsZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyNlbmRpZgorfQorI2VuZGlmCiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAoaGFzRnJvbnRlbmRzKCkgJiYgY29udGV4
dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250
cm9sbGVyRm9yUGFnZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpOwor
ICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JQYWdlKHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBJbnNw
ZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRy
b2xsZXJGb3JGcmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKGZyYW1lKQorICAgICAgICBy
ZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UoZnJhbWUtPnBhZ2UoKSk7CisgICAgcmV0
dXJuIDA7Cit9CisKK2lubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKFBhZ2UqIHBhZ2UpCit7CisgICAg
aWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBzX2luc3BlY3RvckNv
bnRyb2xsZXJzLmdldChwYWdlKTsKK30KKworaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZv
ckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAoaGFz
RnJvbnRlbmRzKCkpCisgICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4
dChjb250ZXh0KTsKICAgICByZXR1cm4gMDsKIH0KIAotaW5saW5lIEluc3BlY3RvckNvbnRyb2xs
ZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3Vt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKK2lubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JE
b2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgaWYgKGhhc0Zyb250ZW5kcygpICYm
IGRvY3VtZW50KQotICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UoZG9j
dW1lbnQtPnBhZ2UoKSk7CisgICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZy
b250ZW5kRm9yUGFnZShkb2N1bWVudC0+cGFnZSgpKTsKICAgICByZXR1cm4gMDsKIH0KIAotaW5s
aW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVj
dG9yQ29udHJvbGxlckZvckZyYW1lKEZyYW1lKiBmcmFtZSkKK2lubGluZSBJbnNwZWN0b3JDb250
cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJXaXRo
RnJvbnRlbmRGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKGhhc0Zyb250ZW5kcygp
ICYmIGZyYW1lKQotICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UoZnJh
bWUtPnBhZ2UoKSk7CisgICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250
ZW5kRm9yUGFnZShmcmFtZS0+cGFnZSgpKTsKICAgICByZXR1cm4gMDsKIH0KIAotaW5saW5lIElu
c3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29u
dHJvbGxlckZvclBhZ2UoUGFnZSogcGFnZSkKK2lubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRG
b3JQYWdlKFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCkpIHsKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShwYWdlKSkgewogICAgICAgICAg
ICAgaWYgKGhhc0Zyb250ZW5kKGluc3BlY3RvckNvbnRyb2xsZXIpKQogICAgICAgICAgICAgICAg
IHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAppbmRleCA3YTlhNGFkLi4xYjc0NTE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDM0ZmExOTUuLjY1
MGZmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjU4MCwxMCAr
MjU4MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQoKQogICAgIC8vIGhh
bmRsZXJzIG1pZ2h0IHN0YXJ0IGEgbmV3IHN1YnJlc291cmNlIGxvYWQgaW4gdGhpcyBmcmFtZS4K
ICAgICBzdG9wQWxsTG9hZGVycygpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5mcmFtZURldGFjaGVkRnJvbVBhcmVudChtX2ZyYW1lKTsKLSNlbmRpZgorICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQobV9mcmFt
ZSk7CiAKICAgICBkZXRhY2hWaWV3c0FuZERvY3VtZW50TG9hZGVyKCk7CiAKQEAgLTMzNzEsMTUg
KzMzNjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogCiAgICAgbV9jbGllbnQtPmRpc3BhdGNo
RGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKHdvcmxkKTsKIAotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgaWYgKHdvcmxkICE9IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAg
ICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0gcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpKQotICAgICAgICAgICAgaW5zcGVjdG9yLT5pbnNwZWN0ZWRXaW5kb3dTY3JpcHRP
YmplY3RDbGVhcmVkKG1fZnJhbWUpOwotICAgIH0KLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKG1fZnJhbWUsIHdvcmxkKTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlU2FuZGJveEZsYWdzKCkKQEAgLTM0MjYsMTAg
KzM0MTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogCiAg
ICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogCi0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRDb21taXRMb2FkKG1fZG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRM
b2FkKG1fZnJhbWUsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjp0ZWxsQ2xpZW50QWJvdXRQYXN0TWVtb3J5Q2FjaGVMb2FkcygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAKaW5kZXggYTgwMTA2NS4uMDQwNTQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTM0NCwxMCArMzQ0LDcgQEAgdm9pZCBDaHJvbWU6
Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5z
aWduZWQgbW9kaWYKICAgICB9CiAgICAgbV9jbGllbnQtPm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlm
IChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBtX3BhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkKLSAgICAgICAgaW5zcGVjdG9yLT5tb3VzZURpZE1vdmVPdmVyRWxlbWVudChyZXN1
bHQsIG1vZGlmaWVyRmxhZ3MpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChtX3BhZ2UsIHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7
CiB9CiAKIHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3Vs
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCmluZGV4IGNmOTE1NTkuLmQ0YWVkNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcApAQCAtMTQ2LDEyICsxNDYsMTAgQEAgdm9pZCBDb25zb2xlOjphZGRN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2
ZWwgbGUKICAgICBpZiAoc291cmNlID09IEpTTWVzc2FnZVNvdXJjZSkKICAgICAgICAgcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCAwLCBjYWxsU3RhY2spOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1l
c3NhZ2VUb0NvbnNvbGUocGFnZSwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgMCwgY2Fs
bFN0YWNrLmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwotI2VuZGlmCiAKICAgICBpZiAoIUNvbnNvbGU6OnNo
b3VsZFByaW50RXhjZXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC0xODksOSArMTg3LDcg
QEAgdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgUGFzc1JlZlB0cjxTY3JpcHQKICAgICBpZiAoYXJndW1lbnRzLT5nZXRGaXJzdEFy
Z3VtZW50QXNTdHJpbmcobWVzc2FnZSkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNz
YWdlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAK
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRk
TWVzc2FnZVRvQ29uc29sZShwYWdlLCBKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNz
YWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSwgSlNNZXNzYWdlU291cmNlLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLmdldCgpLCBjYWxsU3RhY2suZ2V0KCkpOwogfQog
CiB2b2lkIENvbnNvbGU6OmRlYnVnKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVu
dHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCkBAIC0yNTAsMzYgKzI0
NiwxMiBAQCB2b2lkIENvbnNvbGU6OmFzc2VydENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgUGFz
c1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZQogCiB2b2lkIENvbnNvbGU6OmNvdW50KFBh
c3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjYWxsU3RhY2spCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYWdlKiBw
YWdlID0gdGhpcy0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsK
LSAgICAvLyBGb2xsb3cgRmlyZWJ1ZydzIGJlaGF2aW9yIG9mIGNvdW50aW5nIHdpdGggbnVsbCBh
bmQgdW5kZWZpbmVkIHRpdGxlIGluCi0gICAgLy8gdGhlIHNhbWUgYnVja2V0IGFzIG5vIGFyZ3Vt
ZW50Ci0gICAgU3RyaW5nIHRpdGxlOwotICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFz
U3RyaW5nKHRpdGxlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvdW50KHBhZ2Us
IHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwotI2VuZGlmCisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQocGFnZSgpLCBhcmd1bWVudHMuZ2V0KCks
IGNhbGxTdGFjay5nZXQoKSk7CiB9CiAKIHZvaWQgQ29uc29sZTo6bWFya1RpbWVsaW5lKFBhc3NS
ZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5w
YWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgbWVz
c2FnZTsKLSAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsK
LQotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+bWFya1RpbWVsaW5lKG1lc3NhZ2Up
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRzKTsKLSNlbmRpZgorICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZU1hcmtUaW1lbGluZShwYWdlKCksIGFyZ3VtZW50
cy5nZXQoKSk7CiB9CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKQEAgLTMwNywx
MCArMjc5LDggQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNj
cmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHQKIAogICAgIFNjcmlwdFByb2ZpbGVy
OjpzdGFydChzdGF0ZSwgcmVzb2x2ZWRUaXRsZSk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VU
b0NvbnNvbGUoY29udHJvbGxlciwgcmVzb2x2ZWRUaXRsZSwgbGFzdENhbGxlci5saW5lTnVtYmVy
KCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUocGFnZSwgcmVzb2x2
ZWRUaXRsZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkp
OwogfQogCiB2b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2Ny
aXB0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQpA
QCAtMzQxLDQ5ICszMTEsMjcgQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlRW5kKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3IKIAogdm9pZCBDb25z
b2xlOjp0aW1lKGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0VGltaW5nKHBhZ2UoKSwgdGl0bGUp
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odGl0bGUpOwotI2VuZGlmCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcocGFnZSgpLCB0aXRsZSk7CiB9CiAK
IHZvaWQgQ29uc29sZTo6dGltZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNj
cmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RD
YWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c3RvcFRpbWluZyhwYWdlKCksIHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENh
bGxlci5zb3VyY2VVUkwoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0aXRsZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGNhbGxTdGFjayk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnN0b3BDb25zb2xlVGltaW5nKHBhZ2UoKSwgdGl0bGUsIGNhbGxTdGFjay5nZXQoKSk7
CiB9CiAKIHZvaWQgQ29uc29sZTo6Z3JvdXAoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFy
Z3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2Fn
ZVRvQ29uc29sZShwYWdlKCksIEpTTWVzc2FnZVNvdXJjZSwgU3RhcnRHcm91cE1lc3NhZ2VUeXBl
LCBMb2dNZXNzYWdlTGV2ZWwsIFN0cmluZygpLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsU3Rh
Y2spOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9D
b25zb2xlKHBhZ2UoKSwgSlNNZXNzYWdlU291cmNlLCBTdGFydEdyb3VwTWVzc2FnZVR5cGUsIExv
Z01lc3NhZ2VMZXZlbCwgU3RyaW5nKCksIGFyZ3VtZW50cy5nZXQoKSwgY2FsbFN0YWNrLmdldCgp
KTsKIH0KIAogdm9pZCBDb25zb2xlOjpncm91cENvbGxhcHNlZChQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphZGRNZXNzYWdlVG9Db25zb2xlKHBhZ2UoKSwgSlNNZXNzYWdlU291cmNlLCBTdGFydEdyb3Vw
Q29sbGFwc2VkTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5nKCksIGFyZ3VtZW50
cywgY2FsbFN0YWNrKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50cyk7Ci0gICAg
VU5VU0VEX1BBUkFNKGNhbGxTdGFjayk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSgpLCBKU01lc3NhZ2VTb3VyY2UsIFN0YXJ0
R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBTdHJpbmcoKSwgYXJn
dW1lbnRzLmdldCgpLCBjYWxsU3RhY2suZ2V0KCkpOwogfQogCiB2b2lkIENvbnNvbGU6Omdyb3Vw
RW5kKCkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlKCksIEpTTWVzc2FnZVNvdXJjZSwgRW5kR3Jv
dXBNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwot
I2VuZGlmCiB9CiAKIGJvb2wgQ29uc29sZTo6c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA5NmMzNGFkLi43N2E3ZGJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC02NSw3ICs2NSw2IEBACiAjaW5jbHVkZSAi
SGlzdG9yeS5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnkuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiTG9jYXRpb24uaCIKQEAgLTYyOCw5ICs2MjcsNyBAQCBTdG9yYWdlKiBET01XaW5k
b3c6OnNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICByZXR1
cm4gMDsKIAogICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBwYWdlLT5zZXNz
aW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRp
ZFVzZURPTVN0b3JhZ2Uoc3RvcmFnZUFyZWEuZ2V0KCksIGZhbHNlLCBtX2ZyYW1lKTsKLSNlbmRp
ZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXNlRE9NU3RvcmFnZShwYWdlLCBz
dG9yYWdlQXJlYS5nZXQoKSwgZmFsc2UsIG1fZnJhbWUpOwogCiAgICAgbV9zZXNzaW9uU3RvcmFn
ZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBzdG9yYWdlQXJlYS5yZWxlYXNlKCkpOwogICAg
IHJldHVybiBtX3Nlc3Npb25TdG9yYWdlLmdldCgpOwpAQCAtNjU4LDkgKzY1NSw3IEBAIFN0b3Jh
Z2UqIERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBw
YWdlLT5ncm91cCgpLmxvY2FsU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKSk7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmRpZFVzZURPTVN0b3JhZ2Uoc3RvcmFnZUFyZWEuZ2V0KCksIHRydWUsIG1f
ZnJhbWUpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVc2VET01T
dG9yYWdlKHBhZ2UsIHN0b3JhZ2VBcmVhLmdldCgpLCB0cnVlLCBtX2ZyYW1lKTsKIAogICAgIG1f
bG9jYWxTdG9yYWdlID0gU3RvcmFnZTo6Y3JlYXRlKG1fZnJhbWUsIHN0b3JhZ2VBcmVhLnJlbGVh
c2UoKSk7CiAgICAgcmV0dXJuIG1fbG9jYWxTdG9yYWdlLmdldCgpOwpAQCAtMTUyNywxMyArMTUy
Miw3IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiAgICAgICAgIG93bmVy
RWxlbWVudC0+ZGlzcGF0Y2hHZW5lcmljRXZlbnQob3duZXJFdmVudC5yZWxlYXNlKCkpOwogICAg
IH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKCFmcmFtZSgpIHx8ICFmcmFtZSgp
LT5wYWdlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBjb250cm9sbGVyID0gZnJhbWUoKS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0g
ICAgICAgIGNvbnRyb2xsZXItPm1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KGZyYW1lKCktPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLCB1cmwoKSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Om1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KGZyYW1lKCksIHVybCgp
KTsKIH0KIAogYm9vbCBET01XaW5kb3c6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
cHJwRXZlbnQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHBycFRhcmdldCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBkMGYxNzU2Li4wMjQxNDNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBACiAjaW5jbHVkZSAiSGl0VGVz
dFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUg
Ik1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgi
CkBAIC0xMzA4LDE3ICsxMzA4LDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVBy
ZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogCiAgICAgbV9t
b3VzZVByZXNzTm9kZSA9IG1ldi50YXJnZXROb2RlKCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsK
LSAgICAgICAgaWYgKGluc3BlY3RvciAmJiBpbnNwZWN0b3ItPmVuYWJsZWQoKSAmJiBpbnNwZWN0
b3ItPnNlYXJjaGluZ0Zvck5vZGVJblBhZ2UoKSkgewotICAgICAgICAgICAgaW5zcGVjdG9yLT5o
YW5kbGVNb3VzZVByZXNzKCk7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlQ2xpY2soKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzcyhtX2ZyYW1lLT5wYWdlKCkpKSB7CisgICAgICAgIGlu
dmFsaWRhdGVDbGljaygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0jZW5kaWYKLQor
ICAgICAgICAKICAgICBGcmFtZSogc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQo
bWV2KTsKICAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUo
bWV2LCBzdWJmcmFtZSkpIHsKICAgICAgICAgLy8gU3RhcnQgY2FwdHVyaW5nIGZ1dHVyZSBldmVu
dHMgZm9yIHRoaXMgZnJhbWUuICBXZSBvbmx5IGRvIHRoaXMgaWYgd2UgZGlkbid0IGNsZWFyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCAzYTI0OGExLi4wMTJhOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTE5OSwxMCArMTk5LDggQEAgUGFnZTo6flBhZ2UoKQogICAgICAgICBmcmFtZS0+cGFnZURl
c3Ryb3llZCgpOwogCiAgICAgbV9lZGl0b3JDbGllbnQtPnBhZ2VEZXN0cm95ZWQoKTsKLSAgICAK
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVj
dGVkUGFnZURlc3Ryb3llZCgpOwotI2VuZGlmCisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQodGhpcyk7CiAKICAgICBiYWNrRm9yd2FyZCgpLT5j
bG9zZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCmluZGV4IDkyMGY3NWIuLjhl
Zjc4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCkBAIC0zNiw3ICszNiw3IEBA
CiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBA
IC0xMDYsMTMgKzEwNiw4IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlOjpvcGVuRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAgICAgRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3Jp
Z2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIAogICAgIGNvbnRleHQt
PnNldEhhc09wZW5EYXRhYmFzZXMoKTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChj
b250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudC0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5kaWRPcGVuRGF0YWJhc2UoZGF0YWJhc2UsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmhv
c3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uKTsKLSAgICB9Ci0jZW5kaWYKKworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlLmdl
dCgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCksIG5hbWUsIGV4cGVjdGVkVmVy
c2lvbik7CiAKICAgICAvLyBJZiBpdCdzIGEgbmV3IGRhdGFiYXNlIGFuZCBhIGNyZWF0aW9uIGNh
bGxiYWNrIHdhcyBwcm92aWRlZCwgcmVzZXQgdGhlIGV4cGVjdGVkCiAgICAgLy8gdmVyc2lvbiB0
byAiIiBhbmQgc2NoZWR1bGUgdGhlIGNyZWF0aW9uIGNhbGxiYWNrLiBCZWNhdXNlIG9mIHNvbWUg
c3VidGxlIFN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFj
dFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcApp
bmRleCAxMGJjOTVmLi4xOGE5NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0Fic3RyYWN0V29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogCkBAIC01NiwxMCArNTYsNyBAQCBBYnN0cmFjdFdvcmtlcjo6fkFic3Ry
YWN0V29ya2VyKCkKIAogdm9pZCBBYnN0cmFjdFdvcmtlcjo6b25EZXN0cm95V29ya2VyKCkKIHsK
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPyBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSA6IDApCi0gICAgICAgIGluc3BlY3Rvci0+ZGlkRGVz
dHJveVdvcmtlcihhc0lEKCkpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREZXN0cm95V29ya2VyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYXNJRCgpKTsKIH0K
IAogdm9pZCBBYnN0cmFjdFdvcmtlcjo6Y29udGV4dERlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggOTk3ZjljZC4uODc0ZWE2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5j
bHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIK
QEAgLTY0LDEwICs2NCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiBTaGFyZWRXb3JrZXI6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuCiAKICAgICBTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KHdvcmtlci5nZXQoKSwgcmVtb3RlUG9ydC5yZWxlYXNl
KCksIHNjcmlwdFVSTCwgbmFtZSwgZWMpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0gY29udGV4dC0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpKQotICAgICAgICBpbnNwZWN0b3ItPmRpZENyZWF0ZVdvcmtlcih3b3JrZXItPmFz
SUQoKSwgc2NyaXB0VVJMLnN0cmluZygpLCB0cnVlKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV29ya2VyKGNvbnRleHQsIHdvcmtlci0+YXNJRCgpLCBz
Y3JpcHRVUkwuc3RyaW5nKCksIHRydWUpOwogCiAgICAgcmV0dXJuIHdvcmtlci5yZWxlYXNlKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggOGEyZjYyYS4uOTY4MzUyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgpAQCAtNzEsMTAgKzcwLDcgQEAgUGFzc1JlZlB0cjxXb3JrZXI+IFdv
cmtlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b24KICAgICAvLyBUaGUgd29ya2VyIGNvbnRleHQgZG9lcyBub3QgZXhpc3Qgd2hpbGUgbG9hZGlu
Zywgc28gd2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgd29ya2VyIG9iamVjdCBpcyBub3QgY29sbGVj
dGVkLCBub3IgYXJlIGl0cyBldmVudCBsaXN0ZW5lcnMuCiAgICAgd29ya2VyLT5zZXRQZW5kaW5n
QWN0aXZpdHkod29ya2VyLmdldCgpKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IGNvbnRleHQtPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkKLSAgICAgICAgaW5zcGVjdG9yLT5kaWRDcmVhdGVXb3JrZXIod29ya2VyLT5hc0lE
KCksIHNjcmlwdFVSTC5zdHJpbmcoKSwgZmFsc2UpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXb3JrZXIoY29udGV4dCwgd29ya2VyLT5hc0lEKCksIHNj
cmlwdFVSTC5zdHJpbmcoKSwgZmFsc2UpOwogCiAgICAgcmV0dXJuIHdvcmtlci5yZWxlYXNlKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CmluZGV4IDEwNzAwYzYuLmU4OWNjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
RXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAi
V29ya2VyLmgiCg==
</data>
<flag name="review"
          id="70488"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79145</attachid>
            <date>2011-01-17 02:31:34 -0800</date>
            <delta_ts>2011-01-17 02:36:33 -0800</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>webcore_instr</filename>
            <type>text/plain</type>
            <size>100456</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNDIxNmIyLi41ZTlkNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc2
IEBACisyMDExLTAxLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IG1ha2UgV2ViQ29yZSB1c2UgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCisgICAgICAg
IGZvciBpbnN0cnVtZW50YXRpb24gY2FsbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MjUzMgorCisgICAgICAgIFRoaXMgY2hhbmdlIG1ha2VzIFdl
YkNvcmUgY2xhc3NlcyBpc3N1ZSBpbnN0cnVtZW50YXRpb24gc2lnbmFscworICAgICAgICBieSBt
ZWFucyBvZiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gaW50ZXJmYWNlLiBJdCBjb3ZlcmVkIG1p
Z3JhdGlvbgorICAgICAgICBmb3IgRG9jdW1lbnQsIEZyYW1lTG9hZGVyLCBEYXRhYmFzZSwgRE9N
U3RvcmFnZSwgZXRjLiBJdCBmaXhlZAorICAgICAgICBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcg
Zm9yIENvbnNvbGUgYXMgd2VsbC4gVGhpcyBhbGwgaXMgYSBwYXJ0CisgICAgICAgIG9mIHN0b3J5
IGRlc2NyaWJlZCBpbiB0aGUgYnVnIDUyNTEwLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JC
cm93c2VyRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6d2lsbEluc2Vy
dERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6OndpbGxSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJyb3dz
ZXJEZWJ1Z2dlckFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5h
dGl2ZUV2ZW50SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
c29sZUFnZW50Ojpjb3VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aGFuZGxlTW91
c2VQcmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zdFdvcmtlck5vdGlm
aWNhdGlvblRvRnJvbnRlbmRUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVy
RWxlbWVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpoYW5kbGVNb3VzZVByZXNzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1haW5SZXNvdXJjZUZpcmVkRE9NQ29u
dGVudEV2ZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRD
b25zb2xlVGltaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnN0b3BDb25zb2xlVGltaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVNYXJrVGltZWxpbmVJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdl
VG9Db25zb2xlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE9wZW5EYXRhYmFzZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRVc2VET01TdG9yYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdvcmtlckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREZXN0cm95V29ya2VySW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdl
YlNvY2tldEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENsb3NlV2ViU29ja2V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1
c0ltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29u
dHJvbGxlckNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RlZFBhZ2VEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
SW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlTW91
c2VQcmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNo
YXJhY3RlckRhdGFNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENh
bGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVU
aW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxM
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
TG9hZFhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxSZWNhbGN1bGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYWluUmVzb3VyY2VGaXJlZExv
YWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1h
aW5SZXNvdXJjZUZpcmVkRE9NQ29udGVudEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVzZURP
TVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDcmVhdGVXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWREZXN0cm95V29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0
YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1l
c3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVNYXJrVGltZWxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3Nh
Z2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xs
ZXJGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyV2l0aEZy
b250ZW5kRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVy
V2l0aEZyb250ZW5kRm9yUGFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0YXRl
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6bW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb25zb2xlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Om1hcmtUaW1lbGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb25zb2xlOjpwcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6
OnRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6dGltZUVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlOjpncm91cCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpncm91
cENvbGxhcHNlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpncm91cEVuZCk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpz
ZXNzaW9uU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmxvY2FsU3RvcmFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6On5QYWdlKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuRGF0YWJhc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJz
dHJhY3RXb3JrZXI6Om9uRGVzdHJveVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRX
b3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKwogMjAx
MS0wMS0xNyAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCBlZDc5MDljLi4zYjg0NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTkyLDcg
KzkyLDYgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RS
ZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDI1OCwxMyAr
NDI1Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiAKICAgICAgICAgZi0+
bG9hZGVyKCktPmZpbmlzaGVkUGFyc2luZygpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAg
ICAgICAgaWYgKCFwYWdlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSkKLSAgICAgICAgICAgIGNvbnRyb2xsZXItPm1haW5SZXNvdXJjZUZpcmVkRE9NQ29udGVu
dEV2ZW50KGYtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCB1cmwoKSk7Ci0jZW5kaWYKKyAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYWluUmVzb3VyY2VGaXJlZERPTUNvbnRl
bnRFdmVudChmLCB1cmwoKSk7CiAgICAgfQogfQogCkBAIC00ODE1LDEzICs0ODA4LDYgQEAgYm9v
bCBEb2N1bWVudDo6aXNYSFRNTE1QRG9jdW1lbnQoKSBjb25zdAogfQogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotSW5zcGVjdG9yQ29udHJvbGxlciogRG9jdW1lbnQ6Omluc3BlY3Rv
ckNvbnRyb2xsZXIoKSBjb25zdAotewotICAgIHJldHVybiBwYWdlKCkgPyBwYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKSA6IDA7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKIHZvaWQgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChF
bGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBzaG9ydCBmbGFncykKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggMjg2MzE3NS4uYjM4ZDNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTkxLDcg
KzkxLDYgQEAgY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50Owog
Y2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwotY2xhc3MgSW5zcGVj
dG9yQ29udHJvbGxlcjsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwog
Y2xhc3MgSlNOb2RlOwpAQCAtNTAyLDkgKzUwMSw2IEBAIHB1YmxpYzoKICAgICBGcmFtZSogZnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9IC8vIGNhbiBiZSBOVUxMCiAgICAgUGFnZSog
cGFnZSgpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAogICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNv
bnN0OyAvLyBjYW4gYmUgTlVMTAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgdmlydHVhbCBJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3Q7IC8vIGNhbiBi
ZSBOVUxMCi0jZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNyZWF0ZVJhbmdlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDEyZWI3
NzYuLmU0NzNhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaApAQCAtNTcsOSArNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICBj
bGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7Ci0jZW5kaWYKIAogICAg
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewogICAgIHB1YmxpYzoKQEAgLTg3LDkgKzg0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdl
bnQoY29uc3QgS1VSTCYpIGNvbnN0ID0gMDsKIAogICAgICAgICBTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9Ci0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgdmlydHVhbCBJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotI2VuZGlmCiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGUx
NmY0ZWYuLmEzM2JhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjEsOCArNjEsOCBAQCBj
b25zdCBpbnQgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKLSAgICA6
IG1fY29udHJvbGxlcihjb250cm9sbGVyKQorSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6
Okluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIpCisgICAgOiBtX2luc3BlY3RvckNvbnRyb2xsZXIoaW5zcGVjdG9yQ29u
dHJvbGxlcikKICAgICAsIG1faGFzWEhSQnJlYWtwb2ludFdpdGhFbXB0eVVSTChmYWxzZSkKIHsK
IH0KQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50
OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCiAKIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKIHsK
LSAgICBOb2RlKiBub2RlID0gbV9jb250cm9sbGVyLT5tX2RvbUFnZW50LT5ub2RlRm9ySWQobm9k
ZUlkKTsKKyAgICBOb2RlKiBub2RlID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50
LT5ub2RlRm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnNl
dERPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKIAogdm9pZCBJbnNwZWN0b3JC
cm93c2VyRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCwgbG9u
ZyB0eXBlKQogewotICAgIE5vZGUqIG5vZGUgPSBtX2NvbnRyb2xsZXItPm1fZG9tQWdlbnQtPm5v
ZGVGb3JJZChub2RlSWQpOworICAgIE5vZGUqIG5vZGUgPSBtX2luc3BlY3RvckNvbnRyb2xsZXIt
Pm1fZG9tQWdlbnQtPm5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdn
ZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKQogCiB2
b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZShOb2Rl
KiwgTm9kZSogcGFyZW50KQogewotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2Vy
QWdlbnQgPSBtX2NvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKTsKKyAgICBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5t
X2RlYnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgaWYgKCFkZWJ1Z2dlckFnZW50KQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZShOb2RlKiwgTm9kZSogcGFyZW50KQogCiB2b2lkIElu
c3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3ZlRE9NTm9kZShOb2RlKiBub2Rl
KQogewotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2NvbnRy
b2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKTsKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBkZWJ1Z2dlckFnZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQu
Z2V0KCk7CiAgICAgaWYgKCFkZWJ1Z2dlckFnZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTE4
Miw3ICsxODIsNyBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp3aWxsUmVt
b3ZlRE9NTm9kZShOb2RlKiBub2RlKQogCiB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFn
ZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQogewotICAgIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2NvbnRyb2xsZXItPm1fZGVidWdnZXJB
Z2VudC5nZXQoKTsKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0g
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgaWYgKCFk
ZWJ1Z2dlckFnZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lk
IEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5v
ZGUqIHRhcmdldCwgbG9uZyBicgogICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlwZSkgJiBpbmhl
cml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsKICAgICAgICAgLy8gRm9yIGluaGVyaXRh
YmxlIGJyZWFrcG9pbnQgdHlwZXMsIHRhcmdldCBub2RlIGlzbid0IGFsd2F5cyB0aGUgc2FtZSBh
cyB0aGUgbm9kZSB0aGF0IG93bnMgYSBicmVha3BvaW50LgogICAgICAgICAvLyBUYXJnZXQgbm9k
ZSBtYXkgYmUgdW5rbm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0
LgotICAgICAgICBsb25nIHRhcmdldE5vZGVJZCA9IG1fY29udHJvbGxlci0+bV9kb21BZ2VudC0+
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCh0YXJnZXQpOworICAgICAgICBsb25nIHRhcmdldE5vZGVJ
ZCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC0+cHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZCh0YXJnZXQpOwogICAgICAgICBBU1NFUlQodGFyZ2V0Tm9kZUlkKTsKICAgICAgICAgZGVz
Y3JpcHRpb24tPnNldE51bWJlcigidGFyZ2V0Tm9kZUlkIiwgdGFyZ2V0Tm9kZUlkKTsKIApAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRlc2Ny
aXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBsb25nIGJyCiAgICAgICAgICAgICBkZXNj
cmlwdGlvbi0+c2V0Qm9vbGVhbigiaW5zZXJ0aW9uIiwgaW5zZXJ0aW9uKTsKICAgICB9CiAKLSAg
ICBsb25nIGJyZWFrcG9pbnRPd25lck5vZGVJZCA9IG1fY29udHJvbGxlci0+bV9kb21BZ2VudC0+
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChicmVha3BvaW50T3duZXIpOworICAgIGxvbmcgYnJlYWtw
b2ludE93bmVyTm9kZUlkID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LT5wdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKGJyZWFrcG9pbnRPd25lcik7CiAgICAgQVNTRVJUKGJyZWFrcG9p
bnRPd25lck5vZGVJZCk7CiAgICAgZGVzY3JpcHRpb24tPnNldE51bWJlcigibm9kZUlkIiwgYnJl
YWtwb2ludE93bmVyTm9kZUlkKTsKICAgICBkZXNjcmlwdGlvbi0+c2V0TnVtYmVyKCJ0eXBlIiwg
YnJlYWtwb2ludFR5cGUpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgSW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQ6OnVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiBub2RlLCB1aW50
MzJfCiAKIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnBhdXNlT25OYXRpdmVF
dmVudElmTmVlZGVkKGNvbnN0IFN0cmluZyYgY2F0ZWdvcnlUeXBlLCBjb25zdCBTdHJpbmcmIGV2
ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cykKIHsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBkZWJ1Z2dlckFnZW50ID0gbV9jb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7Cisg
ICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIGlmICghZGVidWdnZXJBZ2VudCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudDo6cmVtb3ZlWEhSQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCkK
IAogdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRYTUxIdHRwUmVx
dWVzdChjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBk
ZWJ1Z2dlckFnZW50ID0gbV9jb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7CisgICAg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1faW5zcGVjdG9yQ29udHJv
bGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIGlmICghZGVidWdnZXJBZ2VudCkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oCmluZGV4IGQ4YTViN2YuLjUzN2JkYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdn
ZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2Vy
RGVidWdnZXJBZ2VudC5oCkBAIC01MCw5ICs1MCw5IEBAIGNsYXNzIE5vZGU7CiAKIGNsYXNzIElu
c3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50IDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudD4g
Y3JlYXRlKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudChjb250cm9sbGVyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQoaW5z
cGVjdG9yQ29udHJvbGxlcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkluc3BlY3RvckJyb3dz
ZXJEZWJ1Z2dlckFnZW50KCk7CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBo
YXNCcmVha3BvaW50KE5vZGUqLCBsb25nIHR5cGUpOwogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdz
KCk7CiAKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CisgICAgSW5zcGVj
dG9yQ29udHJvbGxlciogbV9pbnNwZWN0b3JDb250cm9sbGVyOwogICAgIEhhc2hNYXA8Tm9kZSos
IHVpbnQzMl90PiBtX2JyZWFrcG9pbnRzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2V2ZW50TGlz
dGVuZXJCcmVha3BvaW50czsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9YSFJCcmVha3BvaW50czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKaW5kZXggZDVhZDQ5MS4uYTU0M2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTExNiw3ICsxMTcsNyBAQCB2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBt
X3RpbWVzLmFkZCh0aXRsZSwgY3VycmVudFRpbWUoKSAqIDEwMDApOwogfQogCi12b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU5hbWUpCit2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6c3RvcFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewogICAgIC8vIEZvbGxvdyBGaXJlYnVnJ3MgYmVo
YXZpb3Igb2YgcmVxdWlyaW5nIGEgdGl0bGUgdGhhdCBpcyBub3QgbnVsbCBvcgogICAgIC8vIHVu
ZGVmaW5lZCBmb3IgdGltaW5nIGZ1bmN0aW9ucwpAQCAtMTMyLDEyICsxMzMsMTkgQEAgdm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5z
aWduZWQgbGluZU51bWJlciwKIAogICAgIGRvdWJsZSBlbGFwc2VkID0gY3VycmVudFRpbWUoKSAq
IDEwMDAgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSB0aXRsZSArIFN0cmluZzo6
Zm9ybWF0KCI6ICUuMGZtcyIsIGVsYXBzZWQpOwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBs
aW5lTnVtYmVyLCBzb3VyY2VOYW1lKTsKKyAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RD
YWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsYXN0
Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudChjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQordm9pZCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OmNvdW50KFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBh
c3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7Ci0gICAgU3RyaW5nIGlkZW50
aWZpZXIgPSBtYWtlU3RyaW5nKHRpdGxlLCAnQCcsIHNvdXJjZUlELCAnOicsIFN0cmluZzo6bnVt
YmVyKGxpbmVOdW1iZXIpKTsKKyAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIg
PSBjYWxsU3RhY2stPmF0KDApOworICAgIC8vIEZvbGxvdyBGaXJlYnVnJ3MgYmVoYXZpb3Igb2Yg
Y291bnRpbmcgd2l0aCBudWxsIGFuZCB1bmRlZmluZWQgdGl0bGUgaW4KKyAgICAvLyB0aGUgc2Ft
ZSBidWNrZXQgYXMgbm8gYXJndW1lbnQKKyAgICBTdHJpbmcgdGl0bGU7CisgICAgYXJndW1lbnRz
LT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcodGl0bGUpOworICAgIFN0cmluZyBpZGVudGlmaWVy
ID0gbWFrZVN0cmluZyh0aXRsZSwgJ0AnLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpLCAnOicsIFN0
cmluZzo6bnVtYmVyKGxhc3RDYWxsZXIubGluZU51bWJlcigpKSk7CisKICAgICBIYXNoTWFwPFN0
cmluZywgdW5zaWduZWQ+OjppdGVyYXRvciBpdCA9IG1fY291bnRzLmZpbmQoaWRlbnRpZmllcik7
CiAgICAgaW50IGNvdW50OwogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkKQEAgLTE1MCw3
ICsxNTgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQoY29uc3QgU3RyaW5n
JiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29ucwogICAgIG1fY291bnRzLmFkZChpZGVu
dGlmaWVyLCBjb3VudCk7CiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcodGl0bGUs
ICI6ICIsIFN0cmluZzo6bnVtYmVyKGNvdW50KSk7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShK
U01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2Us
IGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGFzdENh
bGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOwogfQogCiB2b2lkIElu
c3BlY3RvckNvbnNvbGVBZ2VudDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5l
TnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oCmluZGV4IGI2MGQ3NDUuLjk3ZmNiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOwogCiAgICAgdm9pZCBzdGFydFRpbWluZyhjb25z
dCBTdHJpbmcmIHRpdGxlKTsKLSAgICB2b2lkIHN0b3BUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VOYW1lKTsKLSAgICB2
b2lkIGNvdW50KGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlSUQpOworICAgIHZvaWQgc3RvcFRpbWluZyhjb25zdCBTdHJpbmcmIHRp
dGxlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgIHZvaWQgY291bnQoUGFzc1Jl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwogCiAg
ICAgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDg1YTk0OGQuLjQyYjZjMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNs
dWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgpAQCAtMTQ3LDYgKzE0OCw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiB7CiAgICAg
QVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKICAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJDcmVhdGVk
KHBhZ2UsIHRoaXMpOwogfQogCiBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJv
bGxlcigpCkBAIC0xNzIsNyArMTc0LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNw
ZWN0ZWRQYWdlRGVzdHJveWVkKCkKICAgICBtX2RlYnVnZ2VyQWdlbnQuY2xlYXIoKTsKICAgICBt
X2Jyb3dzZXJEZWJ1Z2dlckFnZW50LmNsZWFyKCk7CiAjZW5kaWYKKwogICAgIEFTU0VSVChtX2lu
c3BlY3RlZFBhZ2UpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29u
dHJvbGxlckRlbGV0ZWQobV9pbnNwZWN0ZWRQYWdlKTsKICAgICBtX2luc3BlY3RlZFBhZ2UgPSAw
OwogCiAgICAgbV9jbGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwpAQCAtMzAzLDEyICszMDcs
NiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZGVIaWdobGlnaHQoKQogICAgIG1fY2xp
ZW50LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6bWFy
a1RpbWVsaW5lKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBpZiAodGltZWxpbmVBZ2Vu
dCgpKQotICAgICAgICB0aW1lbGluZUFnZW50KCktPmRpZE1hcmtUaW1lbGluZShtZXNzYWdlKTsK
LX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChj
b25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkKQogewogICAgIGlmICghZW5hYmxl
ZCgpIHx8ICFzZWFyY2hpbmdGb3JOb2RlSW5QYWdlKCkpCkBAIC0zMjEsMTggKzMxOSwxNyBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCwgdQogICAgICAgICBoaWdobGlnaHQobm9kZSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFuZGxlTW91c2VQcmVzcygpCitib29sIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmhhbmRsZU1vdXNlUHJlc3MoKQogewotICAgIGlmICghZW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoc2VhcmNoaW5nRm9yTm9kZUluUGFnZSgpKTsK
LSAgICBpZiAoIW1faGlnaGxpZ2h0ZWROb2RlKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFl
bmFibGVkKCkgfHwgIXNlYXJjaGluZ0Zvck5vZGVJblBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2hpZ2hsaWdodGVkTm9kZTsKLSAgICBz
ZXRTZWFyY2hpbmdGb3JOb2RlKGZhbHNlKTsKLSAgICBpbnNwZWN0KG5vZGUuZ2V0KCkpOworICAg
IGlmIChtX2hpZ2hsaWdodGVkTm9kZSkgeworICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1f
aGlnaGxpZ2h0ZWROb2RlOworICAgICAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKGZhbHNlKTsKKyAg
ICAgICAgaW5zcGVjdChub2RlLmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoUGFz
c093blB0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gY2xpZW50KQpAQCAtMzQxLDggKzMzOCwx
MSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRlbgogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQgPSBjbGllbnQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkV2lu
ZG93U2NyaXB0T2JqZWN0Q2xlYXJlZChGcmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBw
ZXJXb3JsZCogd29ybGQpCiB7CisgICAgaWYgKHdvcmxkICE9IG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBJZiB0aGUgcGFnZSBpcyBzdXBwb3NlZCB0
byBzZXJ2ZSBhcyBJbnNwZWN0b3JGcm9udGVuZCBub3RpZnkgaW5zcGV0b3IgZnJvbnRlbmQKICAg
ICAvLyBjbGllbnQgdGhhdCBpdCdzIGNsZWFyZWQgc28gdGhhdCB0aGUgY2xpZW50IGNhbiBleHBv
c2UgaW5zcGVjdG9yIGJpbmRpbmdzLgogICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50
ICYmIGZyYW1lID09IG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkpCkBAIC02NzgsMTUgKzY3
OCw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudExv
YWRlciogbG9hZGVyKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpmcmFt
ZURldGFjaGVkRnJvbVBhcmVudChGcmFtZSogcm9vdEZyYW1lKQotewotICAgIGlmICghZW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAg
ICBtX3Jlc291cmNlQWdlbnQtPmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KHJvb3RGcmFtZSk7Ci19
Ci0KIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6bWFpblJlc291cmNlRmlyZWRET01Db250ZW50
RXZlbnQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIGlm
ICghZW5hYmxlZCgpIHx8ICFpc01haW5SZXNvdXJjZUxvYWRlcihsb2FkZXIsIHVybCkpCkBAIC03
ODcsOCArNzc4LDEwIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkKICAgICB7Ci0gICAgICAgIGlm
IChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBzY3JpcHRDb250ZXh0LT5pbnNwZWN0
b3JDb250cm9sbGVyKCkpCi0gICAgICAgICAgICBpbnNwZWN0b3ItPnBvc3RXb3JrZXJOb3RpZmlj
YXRpb25Ub0Zyb250ZW5kKCptX3dvcmtlciwgbV9hY3Rpb24pOworICAgICAgICBpZiAoc2NyaXB0
Q29udGV4dC0+aXNEb2N1bWVudCgpKSB7CisgICAgICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRDb250ZXh0KS0+
cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgICAgICAgICAgaW5zcGVjdG9y
LT5wb3N0V29ya2VyTm90aWZpY2F0aW9uVG9Gcm9udGVuZCgqbV93b3JrZXIsIG1fYWN0aW9uKTsK
KyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDEyYWQwYmYuLjM5ZDdmOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDYsNiAr
NDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNz
IENoYXJhY3RlckRhdGE7CiBjbGFzcyBEYXRhYmFzZTsKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGbG9hdFJlY3Q7
CkBAIC0xNDgsMTUgKzE0OSwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIHNlYXJjaGluZ0Zvck5v
ZGVJblBhZ2UoKSBjb25zdDsKICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0
IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKLSAgICB2b2lkIGhhbmRs
ZU1vdXNlUHJlc3MoKTsKKyAgICBib29sIGhhbmRsZU1vdXNlUHJlc3MoKTsKIAogICAgIHZvaWQg
c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9udGVuZENs
aWVudD4gY2xpZW50KTsKICAgICBib29sIGhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29u
c3QgeyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsgfQogCi0gICAgdm9pZCBpbnNw
ZWN0ZWRXaW5kb3dTY3JpcHRPYmplY3RDbGVhcmVkKEZyYW1lKik7CisgICAgdm9pZCBkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQqKTsKIAogICAgIHZv
aWQgZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciopOwotICAgIHZvaWQgZnJhbWVEZXRhY2hl
ZEZyb21QYXJlbnQoRnJhbWUqKTsKIAogICAgIHZvaWQgc2V0RXh0cmFIZWFkZXJzKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0Pik7CiAKQEAgLTIwMyw4ICsyMDMsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBvcGVuSW5JbnNwZWN0ZWRXaW5kb3coY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQg
ZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBib3VuZGlu
Z0JveCwgY29uc3QgRmxvYXRSZWN0JiBvdmVybGF5UmVjdCwgV2ViQ29yZTo6U2V0dGluZ3MqKSBj
b25zdDsKIAotICAgIHZvaWQgbWFya1RpbWVsaW5lKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0K
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICB2b2lkIGFkZFByb2ZpbGUoUGFz
c1JlZlB0cjxTY3JpcHRQcm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpOwogICAgIGJvb2wgaXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApp
bmRleCA5ZWE2OTBjLi45NzE3NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaApAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgYm9vbCBzaG91bGRCcmVha09uTm9kZVJlbW92YWwoTm9kZSogbm9kZSwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRldGFpbHMpOwogICAgICAgICBib29sIHNob3VsZEJyZWFr
T25BdHRyaWJ1dGVNb2RpZmljYXRpb24oRWxlbWVudCogZWxlbWVudCwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRldGFpbHMpOwogCi0gICAgICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20g
dGhlIEluc3BlY3RvckNvbnRyb2xsZXIuCisgICAgICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20g
dGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4KICAgICAgICAgdm9pZCBzZXREb2N1bWVudChE
b2N1bWVudCogZG9jdW1lbnQpOwogICAgICAgICB2b2lkIHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaAppbmRleCBiZGZkN2NiLi5mMWQ0ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC0zNiw3ICszNiw2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3RvckFycmF5OwotY2xhc3MgSW5z
cGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTsKIGNs
YXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgU3RvcmFnZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCA4OGRiM2Fl
Li4zNmJjYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwCkBAIC0zNCw5ICszNCw5IEBACiAKICNpbmNsdWRlICJEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTUUxFcnJvci5oIgogI2lu
Y2x1ZGUgIlNRTFN0YXRlbWVudENhbGxiYWNrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCBjNzNkM2M4Li5hOWU5YTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmgKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFz
ZTsKIGNsYXNzIEluc3BlY3RvckFycmF5OwotY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNs
YXNzIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcAppbmRleCA0YjdlMTNmLi4zNDJhZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1
ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKaW5kZXggZDMzMzg5My4uMDNjNTVhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDb250ZXh0
TWVudS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51UHJvdmlkZXIuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Niw2ICs0NSw3IEBAIGNsYXNzIEZyb250ZW5kTWVu
dVByb3ZpZGVyOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ7CiBjbGFzcyBOb2RlOworY2xhc3MgUGFnZTsKIAogY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0IDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yRnJvbnRlbmRIb3N0Pgogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAppbmRleCA2N2ZhNzdlLi4zNDhlNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKQEAgLTYxLDYgKzYyLDcgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNsZWFyVGltZXJFdmVudE5hbWUgPSAiY2xlYXJUaW1l
ciI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdGltZXJGaXJlZEV2ZW50TmFtZSA9ICJ0aW1l
ckZpcmVkIjsKIAogaW50IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c19mcm9udGVuZENvdW50
ZXIgPSAwOworSGFzaE1hcDxQYWdlKiwgSW5zcGVjdG9yQ29udHJvbGxlcio+IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c19pbnNwZWN0b3JDb250cm9sbGVyczsKIAogc3RhdGljIGJvb2wgZXZl
bnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyog
d2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3Jz
KQogewpAQCAtNzksNiArODEsMTYgQEAgc3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogd2luZG93LAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFyV2lu
ZG93T2JqZWN0SW5Xb3JsZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciwgRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQoreworICAgIGluc3Bl
Y3RvckNvbnRyb2xsZXItPmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChmcmFtZSwgd29ybGQp
OworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdGVkUGFnZURlc3Ry
b3llZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK3sKKyAg
ICBpbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCk7Cit9CisKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSwgTm9kZSogcGFy
ZW50KQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpAQCAtMTI5LDYgKzE0MSwx
NiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0ckltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdAogICAgICAgICBkb21BZ2VudC0+ZGlkTW9kaWZ5
RE9NQXR0cihlbGVtZW50KTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyLCBjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVy
RmxhZ3MpCit7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+bW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQocmVzdWx0LCBtb2RpZmllckZsYWdzKTsKK30KKworYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmhhbmRsZU1vdXNlUHJlc3NJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIpCit7CisgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXItPmhhbmRsZU1v
dXNlUHJlc3MoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3Rl
ckRhdGFNb2RpZmllZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciwgQ2hhcmFjdGVyRGF0YSogY2hhcmFjdGVyRGF0YSkKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9N
QWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQoKSkK
QEAgLTE2Myw3ICsxODUsNiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVt
b3ZlVGltZXJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvcgogICAgICAgICB0aW1l
bGluZUFnZW50LT5kaWRSZW1vdmVUaW1lcih0aW1lcklkKTsKIH0KIAotCiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0
aW9uSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBT
dHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lKQogewogICAgIGludCB0aW1lbGluZUFn
ZW50SWQgPSAwOwpAQCAtNDU0LDYgKzQ3NSwyNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2NyaXB0SW1wb3J0ZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZwog
ICAgICAgICByZXNvdXJjZUFnZW50LT5zZXRJbml0aWFsQ29udGVudChpZGVudGlmaWVyLCBzb3Vy
Y2VTdHJpbmcsICJTY3JpcHQiKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Om1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBp
bnNwZWN0b3JDb250cm9sbGVyLT5tYWluUmVzb3VyY2VGaXJlZExvYWRFdmVudChmcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIHVybCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjptYWluUmVzb3VyY2VGaXJlZERPTUNvbnRlbnRFdmVudEltcGwoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJM
JiB1cmwpCit7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+bWFpblJlc291cmNlRmlyZWRET01D
b250ZW50RXZlbnQoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCB1cmwpOworfQor
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnRJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEZyYW1lKiBmcmFt
ZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJl
dHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKSkKKyAgICAgICAgcmVzb3Vy
Y2VBZ2VudC0+ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoZnJhbWUpOworfQorCit2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBp
bnNwZWN0b3JDb250cm9sbGVyLT5kaWRDb21taXRMb2FkKGxvYWRlcik7Cit9CisKIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0
ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2ln
bmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpCiB7CiAgICAgaW50IHRpbWVs
aW5lQWdlbnRJZCA9IDA7CkBAIC00NzEsODIgKzUxMywxMDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ28KICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkV3JpdGVIVE1MKGVuZExpbmUpOwogfQog
Ci0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENyZWF0ZVdlYlNvY2tldEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJM
LCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFNjcmlwdEFyZ3VtZW50cyogYXJn
dW1lbnRzLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKIHsKLSAgICBpbnNwZWN0b3JDb250
cm9sbGVyLT5kaWRDcmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllciwgcmVxdWVzdFVSTCwgZG9jdW1l
bnRVUkwpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmNvbnNvbGVBZ2VudCgpLT5hZGRNZXNz
YWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgY2Fs
bFN0YWNrKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFk
ZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCkKIHsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLT53aWxsU2Vu
ZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCk7CisgICAgaW5z
cGVjdG9yQ29udHJvbGxlci0+Y29uc29sZUFnZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291
cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
JiByZXNwb25zZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIFNjcmlwdEFyZ3Vt
ZW50cyogYXJndW1lbnRzLCBTY3JpcHRDYWxsU3RhY2sqIHN0YWNrKQogewotICAgIGluc3BlY3Rv
ckNvbnRyb2xsZXItPmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShpZGVudGlm
aWVyLCByZXNwb25zZSk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+Y29uc29sZUFnZW50KCkt
PmNvdW50KGFyZ3VtZW50cywgc3RhY2spOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmdJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaW5zcGVj
dG9yQ29udHJvbGxlci0+ZGlkQ2xvc2VXZWJTb2NrZXQoaWRlbnRpZmllcik7CisgICAgaW5zcGVj
dG9yQ29udHJvbGxlci0+Y29uc29sZUFnZW50KCktPnN0YXJ0VGltaW5nKHRpdGxlKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nSW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBTY3JpcHRDYWxsU3RhY2sqIHN0YWNrKQoreworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmNv
bnNvbGVBZ2VudCgpLT5zdG9wVGltaW5nKHRpdGxlLCBzdGFjayk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlTWFya1RpbWVsaW5lSW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBTY3JpcHRBcmd1bWVudHMqIGFyZ3VtZW50cykK
K3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJp
ZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKSkgeworICAgICAgICBTdHJpbmcg
bWVzc2FnZTsKKyAgICAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVz
c2FnZSk7CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZE1hcmtUaW1lbGluZShtZXNzYWdlKTsK
KyAgICB9Cit9CisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGVJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYg
dGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorewor
ICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9y
Q29udHJvbGxlci0+bV9wcm9maWxlckFnZW50LmdldCgpKQorICAgICAgICBwcm9maWxlckFnZW50
LT5hZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUodGl0bGUsIGxpbmVOdW1iZXIsIHNv
dXJjZVVSTCk7CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdlZElt
cGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMpCisjaWYgRU5BQkxFKERBVEFCQVNFKQordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZUltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBT
dHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
CiB7Ci0gICAgaWYgKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25D
YWNoZUFnZW50ID0gaWMtPmFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpKQotICAgICAgICBhcHBsaWNh
dGlvbkNhY2hlQWdlbnQtPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKKyAgICBpbnNwZWN0b3JDb250
cm9sbGVyLT5kaWRPcGVuRGF0YWJhc2UoZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lvbik7
CiB9CisjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxp
Y2F0aW9uQ2FjaGVTdGF0dXNJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCBGcmFtZSogZnJh
bWUpCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFVzZURPTVN0b3JhZ2VJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIsIFN0b3JhZ2VBcmVhKiBzdG9yYWdlQXJlYSwgYm9vbCBpc0xvY2FsU3RvcmFnZSwg
RnJhbWUqIGZyYW1lKQogewotICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQq
IGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGljLT5hcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSkKLSAg
ICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50LT51cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVz
KGZyYW1lKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaWRVc2VET01TdG9yYWdlKHN0b3Jh
Z2VBcmVhLCBpc0xvY2FsU3RvcmFnZSwgZnJhbWUpOwogfQogI2VuZGlmCiAKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBhZ2UsIE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50
cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKKyNpZiBFTkFCTEUoV09S
S0VSUykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXb3JrZXJJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGludHB0cl90IGlkLCBj
b25zdCBTdHJpbmcmIHVybCwgYm9vbCBpc1NoYXJlZFdvcmtlcikKIHsKLSAgICBpZiAoIXBhZ2Up
Ci0gICAgICAgIHJldHVybjsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbnNv
bGVBZ2VudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaWRD
cmVhdGVXb3JrZXIoaWQsIHVybCwgaXNTaGFyZWRXb3JrZXIpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlKiBwYWdlLCBNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlSUQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGVzdHJveVdvcmtlcklt
cGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgaW50cHRyX3QgaWQp
CiB7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5jb25zb2xlQWdlbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2Us
IHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CisgICAgaW5zcGVj
dG9yQ29udHJvbGxlci0+ZGlkRGVzdHJveVdvcmtlcihpZCk7CiB9CisjZW5kaWYKIAotdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvdW50KFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYg
dGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCisjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENy
ZWF0ZVdlYlNvY2tldEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBLVVJMJiBkb2N1bWVudFVSTCkKIHsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsK
LSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbnNvbGVBZ2VudCgpLT5jb3VudCh0
aXRsZSwgbGluZU51bWJlciwgc291cmNlSUQpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRp
ZENyZWF0ZVdlYlNvY2tldChpZGVudGlmaWVyLCByZXF1ZXN0VVJMLCBkb2N1bWVudFVSTCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydFRpbWluZyhQYWdlKiBwYWdl
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmICghcGFnZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29uc29sZUFnZW50
KCktPnN0YXJ0VGltaW5nKHRpdGxlKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT53aWxsU2Vu
ZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wVGltaW5nKFBhZ2UqIHBhZ2UsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
TmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2VJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29uc29sZUFnZW50KCktPnN0b3BUaW1p
bmcodGl0bGUsIGxpbmVOdW1iZXIsIHNvdXJjZU5hbWUpOworICAgIGluc3BlY3RvckNvbnRyb2xs
ZXItPmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShpZGVudGlmaWVyLCByZXNw
b25zZSk7CiB9CiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoSW5z
cGVjdG9yQ29udHJvbGxlciogaWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENsb3NlV2ViU29ja2V0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQqIHByb2ZpbGVyQWdlbnQgPSBpYy0+bV9wcm9maWxlckFnZW50Lmdl
dCgpKQotICAgICAgICBwcm9maWxlckFnZW50LT5hZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0Nv
bnNvbGUodGl0bGUsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgaW5zcGVjdG9yQ29udHJv
bGxlci0+ZGlkQ2xvc2VXZWJTb2NrZXQoaWRlbnRpZmllcik7Cit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdlZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMpCit7
CisgICAgaWYgKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNo
ZUFnZW50ID0gaWMtPmFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpKQorICAgICAgICBhcHBsaWNhdGlv
bkNhY2hlQWdlbnQtPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGljLCBGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaWMtPmFwcGxpY2F0aW9u
Q2FjaGVBZ2VudCgpKQorICAgICAgICBhcHBsaWNhdGlvbkNhY2hlQWdlbnQtPnVwZGF0ZUFwcGxp
Y2F0aW9uQ2FjaGVTdGF0dXMoZnJhbWUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA3Zjc0NGY0
Li5mNWQxNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCkBAIC0zMSwxNyArMzEsMjQgQEAKICNpZm5kZWYgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uX2gKICNkZWZpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uX2gKIAor
I2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2Ns
YXNzIERhdGFiYXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRXZl
bnRDb250ZXh0OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CitjbGFzcyBIaXRUZXN0UmVzdWx0Owog
Y2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQ7
CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwpAQCAtNTIsNiArNTksNyBAQCBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0Q2Fs
bFN0YWNrOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFN0b3JhZ2VBcmVh
OwogY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCkBAIC02
Myw2ICs3MSw5IEBAIHR5cGVkZWYgcGFpcjxJbnNwZWN0b3JDb250cm9sbGVyKiwgaW50PiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWU7CiAKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbiB7CiBwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkKik7CisgICAgc3RhdGljIHZvaWQgaW5zcGVjdGVk
UGFnZURlc3Ryb3llZChQYWdlKik7CisKICAgICBzdGF0aWMgdm9pZCB3aWxsSW5zZXJ0RE9NTm9k
ZShEb2N1bWVudCosIE5vZGUqLCBOb2RlKiBwYXJlbnQpOwogICAgIHN0YXRpYyB2b2lkIGRpZElu
c2VydERPTU5vZGUoRG9jdW1lbnQqLCBOb2RlKik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92
ZURPTU5vZGUoRG9jdW1lbnQqLCBOb2RlKik7CkBAIC03MCw2ICs4MSw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKERvY3VtZW50KiwgRWxlbWVudCopOwogICAg
IHN0YXRpYyB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZChEb2N1bWVudCosIENoYXJhY3RlckRh
dGEqKTsKIAorICAgIHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFBhZ2UqLCBj
b25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CisgICAgc3RhdGlj
IGJvb2wgaGFuZGxlTW91c2VQcmVzcyhQYWdlKik7CisKICAgICBzdGF0aWMgdm9pZCB3aWxsU2Vu
ZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHVy
bCk7CiAgICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QoRG9jdW1lbnQq
LCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgc3RhdGljIHZvaWQgZGlkSW5zdGFsbFRpbWVyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wgc2lu
Z2xlU2hvdCk7CkBAIC0xMDksMzAgKzEyMyw1MyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
ZGlkRmFpbExvYWRpbmcoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0
cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAgICBzdGF0aWMgdm9p
ZCBzY3JpcHRJbXBvcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CisgICAgc3RhdGljIHZvaWQg
bWFpblJlc291cmNlRmlyZWRMb2FkRXZlbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgc3Rh
dGljIHZvaWQgbWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZlbnQoRnJhbWUqLCBjb25zdCBL
VVJMJik7CisgICAgc3RhdGljIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqKTsK
KwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFdyaXRlSFRN
TChEb2N1bWVudCosIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUp
OwogICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRlSFRNTChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmLCB1bnNpZ25lZCBpbnQgZW5kTGluZSk7CiAKKyAgICBzdGF0aWMgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFNjcmlwdEFyZ3VtZW50cyosIFNjcmlw
dENhbGxTdGFjayopOworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSos
IE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IHZvaWQgY29uc29sZUNvdW50KFBhZ2UqLCBTY3JpcHRBcmd1bWVudHMqLCBTY3JpcHRDYWxsU3Rh
Y2sqKTsKKyAgICBzdGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1pbmcoUGFnZSosIGNvbnN0IFN0
cmluZyYgdGl0bGUpOworICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKFBhZ2UqLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICBzdGF0aWMgdm9pZCBj
b25zb2xlTWFya1RpbWVsaW5lKFBhZ2UqLCBTY3JpcHRBcmd1bWVudHMqKTsKKworI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIHN0YXRpYyB2b2lkIGFkZFN0YXJ0UHJvZmlsaW5n
TWVzc2FnZVRvQ29uc29sZShQYWdlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworI2VuZGlmCisKKyNpZiBFTkFCTEUo
REFUQUJBU0UpCisgICAgc3RhdGljIHZvaWQgZGlkT3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBEYXRhYmFzZSosIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisjZW5kaWYKKworI2lmIEVOQUJMRShET01f
U1RPUkFHRSkKKyAgICBzdGF0aWMgdm9pZCBkaWRVc2VET01TdG9yYWdlKFBhZ2UqLCBTdG9yYWdl
QXJlYSosIGJvb2wgaXNMb2NhbFN0b3JhZ2UsIEZyYW1lKik7CisjZW5kaWYKKworI2lmIEVOQUJM
RShXT1JLRVJTKQorICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdvcmtlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgaW50cHRyX3QgaWQsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzU2hhcmVk
V29ya2VyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREZXN0cm95V29ya2VyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBpbnRwdHJfdCBpZCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKICAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwg
Y29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Jik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAjZW5kaWYK
KworI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgc3RhdGljIHZvaWQg
bmV0d29ya1N0YXRlQ2hhbmdlZChQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlQXBwbGlj
YXRpb25DYWNoZVN0YXR1cyhGcmFtZSopOwotCi0gICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRv
Q29uc29sZShQYWdlKiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPik7Ci0gICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29u
c29sZShQYWdlKiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmKTsK
LQotICAgIHN0YXRpYyB2b2lkIGNvdW50KFBhZ2UqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKLSAgICBzdGF0aWMgdm9p
ZCBzdGFydFRpbWluZyhQYWdlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgc3RhdGljIHZv
aWQgc3RvcFRpbWluZyhQYWdlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VOYW1lKTsKLQotI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQotICAgIHN0YXRpYyB2b2lkIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29u
c29sZShJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgIHN0YXRpYyB2b2lkIGluc3BlY3RvckNvbnRyb2xsZXJDcmVhdGVk
KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpIHsg
c19pbnNwZWN0b3JDb250cm9sbGVycy5zZXQocGFnZSwgaW5zcGVjdG9yQ29udHJvbGxlcik7IH0K
KyAgICBzdGF0aWMgdm9pZCBpbnNwZWN0b3JDb250cm9sbGVyRGVsZXRlZChQYWdlKiBwYWdlKSB7
IHNfaW5zcGVjdG9yQ29udHJvbGxlcnMucmVtb3ZlKHBhZ2UpOyB9CiAgICAgc3RhdGljIHZvaWQg
ZnJvbnRlbmRDcmVhdGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciArPSAxOyB9CiAgICAgc3RhdGlj
IHZvaWQgZnJvbnRlbmREZWxldGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciAtPSAxOyB9CiAgICAg
c3RhdGljIGJvb2wgaGFzRnJvbnRlbmRzKCkgeyByZXR1cm4gc19mcm9udGVuZENvdW50ZXI7IH0K
QEAgLTE0Miw2ICsxNzksOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBzdGF0aWMgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCBGcmFtZSosIERPTVdyYXBwZXJXb3JsZCopOworICAgIHN0YXRp
YyB2b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95ZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqKTsK
KwogICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgTm9kZSogbm9kZSwgTm9kZSogcGFyZW50KTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbnNl
cnRET01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgTm9kZSopOwogICAgIHN0YXRpYyB2
b2lkIHdpbGxSZW1vdmVET01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgTm9kZSopOwpA
QCAtMTUwLDYgKzE5MCw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9N
QXR0ckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9p
ZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBDaGFyYWN0
ZXJEYXRhKik7CiAKKyAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2Rp
ZmllckZsYWdzKTsKKyAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNzSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKik7CisKICAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHN0YXRp
YyB2b2lkIGRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxUaW1lcklt
cGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBz
aW5nbGVTaG90KTsKQEAgLTE4OCw5ICsyMzEsMzggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVt
YmVyKTsKICAgICBzdGF0aWMgdm9pZCBzY3JpcHRJbXBvcnRlZEltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJp
bmcpOworICAgIHN0YXRpYyB2b2lkIG1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50SW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIHZvaWQg
bWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
LCBGcmFtZSosIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCBmcmFtZURldGFjaGVkRnJv
bVBhcmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEZyYW1lKik7CisgICAgc3RhdGljIHZv
aWQgZGlkQ29tbWl0TG9hZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIERvY3VtZW50TG9hZGVy
Kik7CisKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxXcml0
ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNp
Z25lZCBpbnQgc3RhcnRMaW5lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKGNv
bnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5l
KTsKIAorICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIFNjcmlwdEFyZ3VtZW50cyosIFNjcmlwdENhbGxTdGFjayopOwor
ICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQp
OworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlcios
IFNjcmlwdEFyZ3VtZW50cyosIFNjcmlwdENhbGxTdGFjayopOworICAgIHN0YXRpYyB2b2lkIHN0
YXJ0Q29uc29sZVRpbWluZ0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IFN0cmluZyYg
dGl0bGUpOworICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKik7CisgICAg
c3RhdGljIHZvaWQgY29uc29sZU1hcmtUaW1lbGluZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlcios
IFNjcmlwdEFyZ3VtZW50cyopOworCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisg
ICAgc3RhdGljIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlSW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoREFUQUJB
U0UpCisgICAgc3RhdGljIHZvaWQgZGlkT3BlbkRhdGFiYXNlSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgRGF0YWJhc2UqLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworI2VuZGlmCisKKyNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpCisgICAgc3RhdGljIHZvaWQgZGlkVXNlRE9NU3RvcmFnZUltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciosIFN0b3JhZ2VBcmVhKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSwgRnJhbWUqKTsKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV29ya2Vy
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgaW50cHRyX3QgaWQsIGNvbnN0IFN0cmluZyYgdXJs
LCBib29sIGlzU2hhcmVkV29ya2VyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREZXN0cm95V29ya2Vy
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgaW50cHRyX3QgaWQpOworI2VuZGlmCisKICNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0SW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBL
VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7CiAgICAgc3RhdGljIHZv
aWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0Jik7CkBAIC0yMDMsMTAgKzI3NSwxMyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBG
cmFtZSopOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlckZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0
YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQo
RG9jdW1lbnQqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlckZvckZyYW1lKEZyYW1lKik7CisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
ICAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvclBh
Z2UoUGFnZSopOworICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyV2l0aEZyb250ZW5kRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJv
bnRlbmRGb3JEb2N1bWVudChEb2N1bWVudCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRnJhbWUoRnJhbWUqKTsKKyAg
ICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9u
dGVuZEZvclBhZ2UoUGFnZSopOwogCiAgICAgc3RhdGljIGJvb2wgaGFzRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciopOwogICAgIHN0YXRpYyB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVl
ZGVkKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIGNhdGVnb3J5VHlwZSwgY29u
c3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpOwpAQCAtMjE2LDEzICsyOTEs
MzAgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmV0cmll
dmVSZXNvdXJjZUFnZW50KEluc3BlY3RvckNvbnRyb2xsZXIqKTsKIAogICAgIHN0YXRpYyBpbnQg
c19mcm9udGVuZENvdW50ZXI7CisgICAgc3RhdGljIEhhc2hNYXA8UGFnZSosIEluc3BlY3RvckNv
bnRyb2xsZXIqPiBzX2luc3BlY3RvckNvbnRyb2xsZXJzOwogI2VuZGlmCiB9OwogCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3Js
ZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCit7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIGRpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZnJhbWUsIHdvcmxk
KTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omlu
c3BlY3RlZFBhZ2VEZXN0cm95ZWQoUGFnZSogcGFnZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5z
cGVjdG9yQ29udHJvbGxlckZvclBhZ2UocGFnZSkpCisgICAgICAgIGluc3BlY3RlZFBhZ2VEZXN0
cm95ZWRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIpOworI2VuZGlmCit9CisKIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoRG9jdW1lbnQqIGRv
Y3VtZW50LCBOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0
aEZyb250ZW5kRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQogICAgICAgICB3aWxsSW5zZXJ0RE9NTm9k
ZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgbm9kZSwgcGFyZW50KTsKICNlbmRpZgogfQpAQCAt
MjMwLDcgKzMyMiw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEluc2VydERPTU5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlCiBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGUoRG9jdW1lbnQqIGRvY3VtZW50
LCBOb2RlKiBub2RlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
RG9jdW1lbnQoZG9jdW1lbnQpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckRvY3VtZW50
KGRvY3VtZW50KSkKICAgICAgICAgZGlkSW5zZXJ0RE9NTm9kZUltcGwoaW5zcGVjdG9yQ29udHJv
bGxlciwgbm9kZSk7CiAjZW5kaWYKIH0KQEAgLTIzOCw3ICszMzAsNyBAQCBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBOb2RlKgogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVt
b3ZlRE9NTm9kZShEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCiB7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpIHsKKyAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNv
bnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JEb2N1bWVudChkb2N1bWVudCkpIHsKICAgICAgICAgd2ls
bFJlbW92ZURPTU5vZGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIG5vZGUpOwogICAgICAgICBk
aWRSZW1vdmVET01Ob2RlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBub2RlKTsKICAgICB9CkBA
IC0yNDgsNyArMzQwLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsUmVtb3ZlRE9NTm9kZShEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUKIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBFbGVtZW50KiBlbGVtZW50KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250
cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZv
ckRvY3VtZW50KGRvY3VtZW50KSkKICAgICAgICAgd2lsbE1vZGlmeURPTUF0dHJJbXBsKGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGVsZW1lbnQpOwogI2VuZGlmCiB9CkBAIC0yNTYsMTUgKzM0OCwzMiBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRy
KERvY3VtZW50KiBkb2N1bWVudCwgRWxlbQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCogZWxl
bWVudCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50
KGRvY3VtZW50KSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JEb2N1bWVudChkb2N1bWVu
dCkpCiAgICAgICAgIGRpZE1vZGlmeURPTUF0dHJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGVs
ZW1lbnQpOwogI2VuZGlmCiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoUGFnZSogcGFnZSwgY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQoreworI2lmIEVOQUJMRShJTlNQRUNU
T1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBp
bnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yUGFnZShwYWdlKSkKKyAgICAgICAgbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHJlc3VsdCwgbW9k
aWZpZXJGbGFncyk7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpoYW5kbGVNb3VzZVByZXNzKFBhZ2UqIHBhZ2UpCit7CisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9
IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JQYWdlKHBhZ2UpKQorICAgICAgICBy
ZXR1cm4gaGFuZGxlTW91c2VQcmVzc0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlcik7CisjZW5kaWYK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKERvY3VtZW50KiBkb2N1bWVudCwgQ2hhcmFjdGVy
RGF0YSogY2hhcmFjdGVyRGF0YSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJv
bGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JE
b2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIGNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoaW5z
cGVjdG9yQ29udHJvbGxlciwgY2hhcmFjdGVyRGF0YSk7CiAjZW5kaWYKIH0KQEAgLTI3Miw3ICsz
ODEsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRh
dGFNb2RpZmllZChEb2N1bWVudCogZG9jdW1lbnQsCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQorICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9u
dGVuZEZvckNvbnRleHQoY29udGV4dCkpCiAgICAgICAgIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJ
bXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHVybCk7CiAjZW5kaWYKIH0KQEAgLTI4MCw3ICszODks
NyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0
cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgdXJsKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9s
bGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckRv
Y3VtZW50KGRvY3VtZW50KSkKICAgICAgICAgZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RJbXBs
KGluc3BlY3RvckNvbnRyb2xsZXIsIHVybCk7CiAjZW5kaWYKIH0KQEAgLTI4OCw3ICszOTcsNyBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlUmVzb3Vy
Y2VSZXF1ZXN0KERvY3VtZW50KiBkb2N1bQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
aW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiB7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQorICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJv
bGxlcldpdGhGcm9udGVuZEZvckNvbnRleHQoY29udGV4dCkpCiAgICAgICAgIGRpZEluc3RhbGxU
aW1lckltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgdGltZXJJZCwgdGltZW91dCwgc2luZ2xlU2hv
dCk7CiAjZW5kaWYKIH0KQEAgLTI5Niw3ICs0MDUsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
bwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgdGltZXJJZCkKIHsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCisgICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250
cm9sbGVyV2l0aEZyb250ZW5kRm9yQ29udGV4dChjb250ZXh0KSkKICAgICAgICAgZGlkUmVtb3Zl
VGltZXJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVySWQpOwogI2VuZGlmCiB9CkBAIC0z
MDUsNyArNDE0LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZW1vdmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb24KIGlubGluZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1
bmN0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0
TGluZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZy
YW1lKSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9
IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JGcmFtZShmcmFtZSkpCiAgICAgICAg
IHJldHVybiB3aWxsQ2FsbEZ1bmN0aW9uSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBzY3JpcHRO
YW1lLCBzY3JpcHRMaW5lKTsKICNlbmRpZgogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKTsKQEAgLTMyMiw3ICs0MzEsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YQogaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KQogewogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBp
bnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRo
RnJvbnRlbmRGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gd2lsbENoYW5nZVhI
UlJlYWR5U3RhdGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHJlcXVlc3QpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwpAQCAtMzM5LDcgKzQ0
OCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhS
UmVhZHlTdGF0ZShjb25zdCBJbnNwZWN0b3JJbnN0CiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93
LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzKQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQp
KQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5z
cGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckRvY3VtZW50KGRvY3VtZW50KSkKICAgICAg
ICAgcmV0dXJuIHdpbGxEaXNwYXRjaEV2ZW50SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBldmVu
dCwgd2luZG93LCBub2RlLCBhbmNlc3RvcnMpOwogI2VuZGlmCiAgICAgcmV0dXJuIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwpAQCAtMzU2LDcgKzQ2NSw3IEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudChjb25zdCBJbnNwZWN0
b3JJbnN0cnVtZW50CiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSogZnJh
bWUsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpCiB7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVy
V2l0aEZyb250ZW5kRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gd2lsbERpc3BhdGNo
RXZlbnRPbldpbmRvd0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZXZlbnQsIHdpbmRvdyk7CiAj
ZW5kaWYKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CkBAIC0z
NzMsNyArNDgyLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRE
aXNwYXRjaEV2ZW50T25XaW5kb3coY29uc3QgSW5zcGVjdG9ySW4KIGlubGluZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVh
dGVTY3JpcHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkp
CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNw
ZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1
cm4gd2lsbEV2YWx1YXRlU2NyaXB0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCB1cmwsIGxpbmVO
dW1iZXIpOwogI2VuZGlmCiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSgpOwpAQCAtMzkwLDcgKzQ5OSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVuCiBpbmxpbmUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgdGltZXJJ
ZCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29u
dGV4dCkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIg
PSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yQ29udGV4dChjb250ZXh0KSkKICAg
ICAgICAgcmV0dXJuIHdpbGxGaXJlVGltZXJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVy
SWQpOwogI2VuZGlmCiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgp
OwpAQCAtNDA3LDcgKzUxNiw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmlyZVRpbWVyKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvCiBpbmxpbmUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bExheW91dChGcmFtZSogZnJhbWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRy
b2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRnJhbWUo
ZnJhbWUpKQogICAgICAgICByZXR1cm4gd2lsbExheW91dEltcGwoaW5zcGVjdG9yQ29udHJvbGxl
cik7CiAjZW5kaWYKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7
CkBAIC00MjQsNyArNTMzLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMYXlvdXQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ28KIGlubGluZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
TG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBYTUxIdHRwUmVxdWVzdCog
cmVxdWVzdCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRl
eHQoY29udGV4dCkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yQ29udGV4dChjb250ZXh0
KSkKICAgICAgICAgcmV0dXJuIHdpbGxMb2FkWEhSSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBy
ZXF1ZXN0KTsKICNlbmRpZgogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUoKTsKQEAgLTQ0MSw3ICs1NTAsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZExvYWRYSFIoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQwogaW5saW5l
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxQYWludChGcmFtZSogZnJhbWUsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9s
bGVyV2l0aEZyb250ZW5kRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gd2lsbFBhaW50
SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCByZWN0KTsKICNlbmRpZgogICAgIHJldHVybiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKQEAgLTQ1OCw3ICs1NjcsNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvbwogaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3Vt
ZW50KGRvY3VtZW50KSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JEb2N1bWVudChkb2N1
bWVudCkpCiAgICAgICAgIHJldHVybiB3aWxsUmVjYWxjdWxhdGVTdHlsZUltcGwoaW5zcGVjdG9y
Q29udHJvbGxlcik7CiAjZW5kaWYKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llKCk7CkBAIC00NzgsNyArNTg3LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoRnJhbWUqIGZyYW1lLAogICAg
IC8vIFRoaXMgbm90aWZpY2F0aW9uIHNob3VsZCBiZSBwcm9jZWNlc3NlZCBldmVuIGluIGNhc2Vz
IHRoZXJlIGlzIG5vIGZyb250ZW5kLgogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsK
LSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVj
dG9yQ29udHJvbGxlckZvclBhZ2UoZnJhbWUtPnBhZ2UoKSkpCiAgICAgICAgIGlkZW50aWZpZXJG
b3JJbml0aWFsUmVxdWVzdEltcGwoaWMsIGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7CiAj
ZW5kaWYKIH0KQEAgLTQ4Niw3ICs1OTUsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChGcmFtZSogZnJhbWUsCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChGcmFtZSog
ZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9y
Q29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aWMgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRnJhbWUoZnJhbWUpKQogICAg
ICAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGljLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKICNlbmRpZgogfQpAQCAtNDk0LDIxICs2MDMsMjEgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoRnJhbWUqIGZyYW1lLCB1
bnNpZ25lZCBsb24KIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jl
c291cmNlQXNDYWNoZWQoUGFnZSogcGFnZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgbWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSwgaWRlbnRpZmllcik7IAorICAgIG1hcmtSZXNvdXJjZUFz
Q2FjaGVkSW1wbChpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShwYWdlKSwgaWRlbnRpZmllcik7
IAogI2VuZGlmCiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
TG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFBhZ2UqIHBhZ2UsIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwocGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLCBsb2FkZXIsIHJlc291cmNlKTsKKyAgICBkaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpLCBs
b2FkZXIsIHJlc291cmNlKTsKICNlbmRpZgogfQogCiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJj
ZURhdGEoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9s
bGVyV2l0aEZyb250ZW5kRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gd2lsbFJlY2Vp
dmVSZXNvdXJjZURhdGFJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIpOwogI2Vu
ZGlmCiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwpAQCAtNTI1
LDcgKzYzNCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZVJlc291cmNlRGF0YShjb25zdCBJbnNwZWN0b3JJbnN0CiBpbmxpbmUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5z
cGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRl
bmRGb3JGcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybiB3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2VJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICNl
bmRpZgogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKQEAgLTU0
Miw3ICs2NTEsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEluc3BlY3RvcgogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChGcmFtZSogZnJhbWUs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQogewogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJv
bGxlcldpdGhGcm9udGVuZEZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgZGlkUmVjZWl2ZUNvbnRl
bnRMZW5ndGhJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIGxlbmd0aFJlY2Vp
dmVkKTsKICNlbmRpZgogfQpAQCAtNTUwLDcgKzY1OSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRnJhbWUqIGZyYW1lLCB1
bnNpCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRp
bmcoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hU
aW1lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJh
bWUpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
aW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckZyYW1lKGZyYW1lKSkKICAgICAgICAg
ZGlkRmluaXNoTG9hZGluZ0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgZmlu
aXNoVGltZSk7CiAjZW5kaWYKIH0KQEAgLTU1OCw3ICs2NjcsNyBAQCBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCB1bnNp
Z25lZCBsbwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9h
ZGluZyhGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJG
b3JGcmFtZShmcmFtZSkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yRnJhbWUoZnJhbWUp
KQogICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRp
ZmllciwgZXJyb3IpOwogI2VuZGlmCiB9CkBAIC01NjYsNyArNjc1LDcgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhGcmFtZSogZnJhbWUsIHVu
c2lnbmVkIGxvbmcKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRM
aW5lTnVtYmVyKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBjb250ZXh0LT5pbnNwZWN0b3JDb250cm9s
bGVyKCkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIg
PSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKICAgICAgICAgcmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpZGVu
dGlmaWVyLCBzb3VyY2VTdHJpbmcsIHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOwogI2Vu
ZGlmCiB9CkBAIC01NzQsMTUgKzY4Myw0NyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRFeAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlU3RyaW5nKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBjb250ZXh0LT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKICAg
ICAgICAgc2NyaXB0SW1wb3J0ZWRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIs
IHNvdXJjZVN0cmluZyk7CiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjptYWluUmVzb3VyY2VGaXJlZExvYWRFdmVudChGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhG
cm9udGVuZEZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgbWFpblJlc291cmNlRmlyZWRMb2FkRXZl
bnRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGZyYW1lLCB1cmwpOworI2VuZGlmCit9CisKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFpblJlc291cmNlRmlyZWRET01D
b250ZW50RXZlbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JGcmFtZShmcmFtZSkpCisg
ICAgICAgIG1haW5SZXNvdXJjZUZpcmVkRE9NQ29udGVudEV2ZW50SW1wbChpbnNwZWN0b3JDb250
cm9sbGVyLCBmcmFtZSwgdXJsKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KEZyYW1lKiBmcmFtZSkKK3sK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckZyYW1l
KGZyYW1lKSkKKyAgICAgICAgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnRJbXBsKGluc3BlY3RvckNv
bnRyb2xsZXIsIGZyYW1lKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciog
bG9hZGVyKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUo
ZnJhbWUpKQorICAgICAgICBkaWRDb21taXRMb2FkSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBs
b2FkZXIpOworI2VuZGlmCit9CisKIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3JpdGVIVE1MKERvY3VtZW50KiBkb2N1
bWVudCwgdW5zaWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSkKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkK
KyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3Bl
Y3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAg
IHJldHVybiB3aWxsV3JpdGVIVE1MSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBsZW5ndGgsIHN0
YXJ0TGluZSk7CiAjZW5kaWYKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llKCk7CkBAIC01OTYsMTEgKzczNyw1MCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFdyaXRlSFRNTChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpbwogI2Vu
ZGlmCiB9CiAKKyNpZiBFTkFCTEUoREFUQUJBU0UpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBEYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5z
cGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIGRpZE9wZW5EYXRh
YmFzZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVy
c2lvbik7CisjZW5kaWYKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVc2VET01TdG9yYWdlKFBhZ2Uq
IHBhZ2UsIFN0b3JhZ2VBcmVhKiBzdG9yYWdlQXJlYSwgYm9vbCBpc0xvY2FsU3RvcmFnZSwgRnJh
bWUqIGZyYW1lKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFn
ZShwYWdlKSkKKyAgICAgICAgZGlkVXNlRE9NU3RvcmFnZUltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgc3RvcmFnZUFyZWEsIGlzTG9jYWxTdG9yYWdlLCBmcmFtZSk7CisjZW5kaWYKK30KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKFdPUktFUlMpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENyZWF0ZVdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBp
bnRwdHJfdCBpZCwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNTaGFyZWRXb3JrZXIpCit7Cisj
aWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JDb250ZXh0
KGNvbnRleHQpKQorICAgICAgICBkaWRDcmVhdGVXb3JrZXJJbXBsKGluc3BlY3RvckNvbnRyb2xs
ZXIsIGlkLCB1cmwsIGlzU2hhcmVkV29ya2VyKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERlc3Ryb3lXb3JrZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgaW50cHRyX3QgaWQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3Bl
Y3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBk
aWREZXN0cm95V29ya2VySW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpZCk7CisjZW5kaWYKK30K
KyNlbmRpZgorCisKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNw
ZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJv
bnRlbmRGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICBkaWRDcmVhdGVXZWJTb2NrZXRJbXBs
KGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIHJlcXVlc3RVUkwsIGRvY3VtZW50VVJM
KTsKICNlbmRpZgogfQpAQCAtNjA4LDcgKzc4OCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
CiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QmIHJlcXVl
c3QpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNv
bnRleHQpKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gaW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvckNvbnRleHQoY29udGV4dCkpCiAg
ICAgICAgIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoaW5zcGVjdG9yQ29u
dHJvbGxlciwgaWRlbnRpZmllciwgcmVxdWVzdCk7CiAjZW5kaWYKIH0KQEAgLTYxNiw3ICs3OTYs
NyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdChTY3JpcHRFeAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9
IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQorICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlcldp
dGhGcm9udGVuZEZvckNvbnRleHQoY29udGV4dCkpCiAgICAgICAgIGRpZFJlY2VpdmVXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwg
cmVzcG9uc2UpOwogI2VuZGlmCiB9CkBAIC02MjQsNTQgKzgwNCwxMzYgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UoU2NyaXAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xv
c2VXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
Q29udGV4dChjb250ZXh0KSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JDb250ZXh0KGNv
bnRleHQpKQogICAgICAgICBkaWRDbG9zZVdlYlNvY2tldEltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgaWRlbnRpZmllcik7CiAjZW5kaWYKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE9GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bmV0d29ya1N0YXRlQ2hhbmdlZChQYWdlKiBwYWdlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
ICYmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFn
ZShwYWdlKSkKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciA9IGluc3BlY3RvckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JQYWdlKHBhZ2UpKQogICAgICAg
ICBuZXR3b3JrU3RhdGVDaGFuZ2VkSW1wbChpbnNwZWN0b3JDb250cm9sbGVyKTsKICNlbmRpZgog
fQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0
aW9uQ2FjaGVTdGF0dXMoRnJhbWUqIGZyYW1lKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpICYm
IEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUo
ZnJhbWUpKQorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5k
Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1w
bChpbnNwZWN0b3JDb250cm9sbGVyLCBmcmFtZSk7CiAjZW5kaWYKIH0KKyNlbmRpZgorCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFn
ZSogcGFnZSwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTY3JpcHRBcmd1bWVudHMqIGFyZ3Vt
ZW50cywgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQorICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCBhcmd1bWVudHMsIGNhbGxTdGFjayk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBhZ2UsIE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VJRCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2Uo
cGFnZSkpCisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3BlY3RvckNvbnRyb2xs
ZXIsIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsK
KyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNv
bGVDb3VudChQYWdlKiBwYWdlLCBTY3JpcHRBcmd1bWVudHMqIGFyZ3VtZW50cywgU2NyaXB0Q2Fs
bFN0YWNrKiBzdGFjaykKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZv
clBhZ2UocGFnZSkpCisgICAgICAgIGNvbnNvbGVDb3VudEltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgYXJndW1lbnRzLCBzdGFjayk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcoUGFnZSogcGFnZSwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvclBh
Z2UocGFnZSkpCisgICAgICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoaW5zcGVjdG9yQ29udHJv
bGxlciwgdGl0bGUpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcoUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgU2NyaXB0Q2FsbFN0YWNrKiBzdGFjaykKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAg
IGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9y
Q29udHJvbGxlckZvclBhZ2UocGFnZSkpCisgICAgICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbChp
bnNwZWN0b3JDb250cm9sbGVyLCB0aXRsZSwgc3RhY2spOworI2VuZGlmCit9CisKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZU1hcmtUaW1lbGluZShQYWdlKiBw
YWdlLCBTY3JpcHRBcmd1bWVudHMqIGFyZ3VtZW50cykKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5z
cGVjdG9yQ29udHJvbGxlcldpdGhGcm9udGVuZEZvclBhZ2UocGFnZSkpCisgICAgICAgIGNvbnNv
bGVNYXJrVGltZWxpbmVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGFyZ3VtZW50cyk7CisjZW5k
aWYKK30KKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUo
UGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRy
b2xsZXJGb3JQYWdlKHBhZ2UpKQorICAgICAgICBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0Nv
bnNvbGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VV
UkwpOworI2VuZGlmCit9CisjZW5kaWYKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBpbmxpbmUg
SW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JD
b250cm9sbGVyRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewot
ICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQo
KSkKKyAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAgICAgIHJl
dHVybiBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNv
bnRleHQpLT5wYWdlKCkpOwogICAgIHJldHVybiAwOwogfQogCi1pbmxpbmUgSW5zcGVjdG9yQ29u
dHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9y
RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQoraW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIq
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKEZy
YW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoZnJhbWUpCisgICAgICAgIHJldHVybiBpbnNwZWN0b3JD
b250cm9sbGVyRm9yUGFnZShmcmFtZS0+cGFnZSgpKTsKKyAgICByZXR1cm4gMDsKK30KKworaW5s
aW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVj
dG9yQ29udHJvbGxlckZvclBhZ2UoUGFnZSogcGFnZSkKK3sKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHNfaW5zcGVjdG9yQ29udHJvbGxlcnMuZ2V0KHBh
Z2UpOworfQorCitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyV2l0aEZyb250ZW5kRm9yQ29udGV4dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBj
b250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGluc3BlY3Rv
ckNvbnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JQYWdlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29u
dGV4dCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBJbnNwZWN0b3JDb250
cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJXaXRo
RnJvbnRlbmRGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgaWYgKGhhc0Zy
b250ZW5kcygpICYmIGRvY3VtZW50KQotICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxl
ckZvclBhZ2UoZG9jdW1lbnQtPnBhZ2UoKSk7CisgICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250
cm9sbGVyV2l0aEZyb250ZW5kRm9yUGFnZShkb2N1bWVudC0+cGFnZSgpKTsKICAgICByZXR1cm4g
MDsKIH0KIAotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKEZyYW1lKiBmcmFtZSkKK2lubGluZSBJ
bnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNv
bnRyb2xsZXJXaXRoRnJvbnRlbmRGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKGhh
c0Zyb250ZW5kcygpICYmIGZyYW1lKQotICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxl
ckZvclBhZ2UoZnJhbWUtPnBhZ2UoKSk7CisgICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9s
bGVyV2l0aEZyb250ZW5kRm9yUGFnZShmcmFtZS0+cGFnZSgpKTsKICAgICByZXR1cm4gMDsKIH0K
IAotaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UoUGFnZSogcGFnZSkKK2lubGluZSBJbnNwZWN0b3JD
b250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJX
aXRoRnJvbnRlbmRGb3JQYWdlKFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKHBhZ2UpIHsKLSAgICAg
ICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkpIHsKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShwYWdlKSkg
ewogICAgICAgICAgICAgaWYgKGhhc0Zyb250ZW5kKGluc3BlY3RvckNvbnRyb2xsZXIpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAppbmRleCA3YTlhNGFkLi4x
Yjc0NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3Rh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAK
QEAgLTMyLDcgKzMyLDYgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiSW5z
cGVjdG9yQ2xpZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IDgyZmNmN2UuLjNjYWFkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtMjU4MCwxMCArMjU4MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQo
KQogICAgIC8vIGhhbmRsZXJzIG1pZ2h0IHN0YXJ0IGEgbmV3IHN1YnJlc291cmNlIGxvYWQgaW4g
dGhpcyBmcmFtZS4KICAgICBzdG9wQWxsTG9hZGVycygpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5mcmFtZURldGFjaGVkRnJvbVBhcmVudChtX2ZyYW1lKTsK
LSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEZXRhY2hlZEZyb21Q
YXJlbnQobV9mcmFtZSk7CiAKICAgICBkZXRhY2hWaWV3c0FuZERvY3VtZW50TG9hZGVyKCk7CiAK
QEAgLTMzNzEsMTUgKzMzNjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogCiAgICAgbV9jbGll
bnQtPmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKHdvcmxkKTsKIAotI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKHdvcmxkICE9IG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KSkgewotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0gcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICAgICAgaW5zcGVjdG9yLT5pbnNwZWN0ZWRX
aW5kb3dTY3JpcHRPYmplY3RDbGVhcmVkKG1fZnJhbWUpOwotICAgIH0KLSNlbmRpZgorICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKG1fZnJh
bWUsIHdvcmxkKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlU2FuZGJveEZsYWdzKCkK
QEAgLTM0MjYsMTAgKzM0MTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1p
dExvYWQoKQogCiAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogCi0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkK
LSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRDb21taXRMb2FkKG1fZG9j
dW1lbnRMb2FkZXIuZ2V0KCkpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDb21taXRMb2FkKG1fZnJhbWUsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyOjp0ZWxsQ2xpZW50QWJvdXRQYXN0TWVtb3J5Q2FjaGVMb2FkcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggYTgwMTA2NS4uMDQwNTQwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXBMb2FkRGVm
ZXJyZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTM0NCwxMCArMzQ0LDcgQEAg
dm9pZCBDaHJvbWU6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCwgdW5zaWduZWQgbW9kaWYKICAgICB9CiAgICAgbV9jbGllbnQtPm1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7CiAKLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBtX3BhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgaW5zcGVjdG9yLT5tb3VzZURpZE1vdmVPdmVy
RWxlbWVudChyZXN1bHQsIG1vZGlmaWVyRmxhZ3MpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChtX3BhZ2UsIHJlc3VsdCwgbW9k
aWZpZXJGbGFncyk7CiB9CiAKIHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCmluZGV4IGNmOTE1NTkuLmQ0YWVk
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtMTQ2LDEyICsxNDYsMTAgQEAgdm9pZCBD
b25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBl
LCBNZXNzYWdlTGV2ZWwgbGUKICAgICBpZiAoc291cmNlID09IEpTTWVzc2FnZVNvdXJjZSkKICAg
ICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJj
ZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAKLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlLCBzb3VyY2UsIHR5cGUsIGxl
dmVsLCBtZXNzYWdlLCAwLCBjYWxsU3RhY2spOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZSwgMCwgY2FsbFN0YWNrLmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlLCBzb3VyY2UsIHR5cGUsIGxl
dmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwotI2VuZGlmCiAKICAgICBpZiAo
IUNvbnNvbGU6OnNob3VsZFByaW50RXhjZXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC0x
ODksOSArMTg3LDcgQEAgdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgUGFzc1JlZlB0cjxTY3JpcHQKICAgICBpZiAoYXJndW1lbnRz
LT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSkpCiAgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3Vy
Y2VVUkwoKSk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlLCBKU01lc3NhZ2VTb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxTdGFjayk7Ci0jZW5kaWYKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSwgSlNNZXNzYWdl
U291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLmdldCgpLCBjYWxsU3RhY2su
Z2V0KCkpOwogfQogCiB2b2lkIENvbnNvbGU6OmRlYnVnKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1l
bnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCkBA
IC0yNTAsMzYgKzI0NiwxMiBAQCB2b2lkIENvbnNvbGU6OmFzc2VydENvbmRpdGlvbihib29sIGNv
bmRpdGlvbiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZQogCiB2b2lkIENvbnNv
bGU6OmNvdW50KFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0
YWNrLT5hdCgwKTsKLSAgICAvLyBGb2xsb3cgRmlyZWJ1ZydzIGJlaGF2aW9yIG9mIGNvdW50aW5n
IHdpdGggbnVsbCBhbmQgdW5kZWZpbmVkIHRpdGxlIGluCi0gICAgLy8gdGhlIHNhbWUgYnVja2V0
IGFzIG5vIGFyZ3VtZW50Ci0gICAgU3RyaW5nIHRpdGxlOwotICAgIGFyZ3VtZW50cy0+Z2V0Rmly
c3RBcmd1bWVudEFzU3RyaW5nKHRpdGxlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNvdW50KHBhZ2UsIHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5z
b3VyY2VVUkwoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjYWxsU3RhY2spOwotI2VuZGlm
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQocGFnZSgpLCBhcmd1
bWVudHMuZ2V0KCksIGNhbGxTdGFjay5nZXQoKSk7CiB9CiAKIHZvaWQgQ29uc29sZTo6bWFya1Rp
bWVsaW5lKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhZ2UqIHBh
Z2UgPSB0aGlzLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBTdHJpbmcgbWVzc2FnZTsKLSAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmlu
ZyhtZXNzYWdlKTsKLQotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+bWFya1RpbWVs
aW5lKG1lc3NhZ2UpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRzKTsKLSNlbmRp
ZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZU1hcmtUaW1lbGluZShwYWdl
KCksIGFyZ3VtZW50cy5nZXQoKSk7CiB9CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKQEAgLTMwNywxMCArMjc5LDggQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHQKIAogICAgIFNj
cmlwdFByb2ZpbGVyOjpzdGFydChzdGF0ZSwgcmVzb2x2ZWRUaXRsZSk7CiAKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxT
dGFjay0+YXQoMCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2Zp
bGluZ01lc3NhZ2VUb0NvbnNvbGUoY29udHJvbGxlciwgcmVzb2x2ZWRUaXRsZSwgbGFzdENhbGxl
ci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOwotI2VuZGlmCisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUo
cGFnZSwgcmVzb2x2ZWRUaXRsZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIu
c291cmNlVVJMKCkpOwogfQogCiB2b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5n
JiB0aXRsZSwgU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKQpAQCAtMzQxLDQ5ICszMTEsMjcgQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlRW5k
KGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3IK
IAogdm9pZCBDb25zb2xlOjp0aW1lKGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0VGltaW5nKHBh
Z2UoKSwgdGl0bGUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odGl0bGUpOwotI2VuZGlmCisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcocGFnZSgpLCB0
aXRsZSk7CiB9CiAKIHZvaWQgQ29uc29sZTo6dGltZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBQ
YXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBj
YWxsU3RhY2spCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBjb25zdCBTY3JpcHRDYWxs
RnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwotICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c3RvcFRpbWluZyhwYWdlKCksIHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1i
ZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh0
aXRsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxTdGFjayk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKHBhZ2UoKSwgdGl0bGUsIGNhbGxT
dGFjay5nZXQoKSk7CiB9CiAKIHZvaWQgQ29uc29sZTo6Z3JvdXAoUGFzc1JlZlB0cjxTY3JpcHRB
cmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
aykKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlKCksIEpTTWVzc2FnZVNvdXJjZSwgU3RhcnRHcm91
cE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIFN0cmluZygpLCBhcmd1bWVudHMsIGNhbGxT
dGFjayk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOwotICAgIFVOVVNFRF9Q
QVJBTShjYWxsU3RhY2spOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRNZXNzYWdlVG9Db25zb2xlKHBhZ2UoKSwgSlNNZXNzYWdlU291cmNlLCBTdGFydEdyb3VwTWVz
c2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5nKCksIGFyZ3VtZW50cy5nZXQoKSwgY2Fs
bFN0YWNrLmdldCgpKTsKIH0KIAogdm9pZCBDb25zb2xlOjpncm91cENvbGxhcHNlZChQYXNzUmVm
UHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKHBhZ2UoKSwgSlNNZXNzYWdlU291cmNl
LCBTdGFydEdyb3VwQ29sbGFwc2VkTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5n
KCksIGFyZ3VtZW50cywgY2FsbFN0YWNrKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGFyZ3Vt
ZW50cyk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxTdGFjayk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSgpLCBKU01lc3NhZ2VT
b3VyY2UsIFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBT
dHJpbmcoKSwgYXJndW1lbnRzLmdldCgpLCBjYWxsU3RhY2suZ2V0KCkpOwogfQogCiB2b2lkIENv
bnNvbGU6Omdyb3VwRW5kKCkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShwYWdlKCksIEpTTWVzc2FnZVNv
dXJjZSwgRW5kR3JvdXBNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBTdHJpbmcoKSwgMCwg
U3RyaW5nKCkpOwotI2VuZGlmCiB9CiAKIGJvb2wgQ29uc29sZTo6c2hvdWxkQ2FwdHVyZUZ1bGxT
dGFja1RyYWNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA5NmMzNGFk
Li43N2E3ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC02NSw3ICs2NSw2IEBA
CiAjaW5jbHVkZSAiSGlzdG9yeS5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnkuaCIKICNpbmNsdWRl
ICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKQEAgLTYyOCw5ICs2MjcsNyBAQCBTdG9y
YWdlKiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEg
PSBwYWdlLT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJpdHlP
cmlnaW4oKSk7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmRpZFVzZURPTVN0b3JhZ2Uoc3RvcmFnZUFyZWEuZ2V0KCksIGZhbHNlLCBtX2Zy
YW1lKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXNlRE9NU3Rv
cmFnZShwYWdlLCBzdG9yYWdlQXJlYS5nZXQoKSwgZmFsc2UsIG1fZnJhbWUpOwogCiAgICAgbV9z
ZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBzdG9yYWdlQXJlYS5yZWxl
YXNlKCkpOwogICAgIHJldHVybiBtX3Nlc3Npb25TdG9yYWdlLmdldCgpOwpAQCAtNjU4LDkgKzY1
NSw3IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3Rv
cmFnZUFyZWEgPSBwYWdlLT5ncm91cCgpLmxvY2FsU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1
bWVudC0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZFVzZURPTVN0b3JhZ2Uoc3RvcmFnZUFyZWEuZ2V0
KCksIHRydWUsIG1fZnJhbWUpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRVc2VET01TdG9yYWdlKHBhZ2UsIHN0b3JhZ2VBcmVhLmdldCgpLCB0cnVlLCBtX2ZyYW1l
KTsKIAogICAgIG1fbG9jYWxTdG9yYWdlID0gU3RvcmFnZTo6Y3JlYXRlKG1fZnJhbWUsIHN0b3Jh
Z2VBcmVhLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIG1fbG9jYWxTdG9yYWdlLmdldCgpOwpAQCAt
MTUyNywxMyArMTUyMiw3IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiAg
ICAgICAgIG93bmVyRWxlbWVudC0+ZGlzcGF0Y2hHZW5lcmljRXZlbnQob3duZXJFdmVudC5yZWxl
YXNlKCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKCFmcmFtZSgp
IHx8ICFmcmFtZSgpLT5wYWdlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUoKS0+cGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCkpCi0gICAgICAgIGNvbnRyb2xsZXItPm1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50
KGZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCB1cmwoKSk7Ci0jZW5kaWYKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KGZy
YW1lKCksIHVybCgpKTsKIH0KIAogYm9vbCBET01XaW5kb3c6OmRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4gcHJwRXZlbnQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHBycFRhcmdldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBmZWMxNzkzLi44YzUzMzBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBACiAjaW5j
bHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5o
IgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzLmgiCkBAIC0xMzA5LDE3ICsxMzA5LDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50
KQogCiAgICAgbV9tb3VzZVByZXNzTm9kZSA9IG1ldi50YXJnZXROb2RlKCk7CiAKLSNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0g
ICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKTsKLSAgICAgICAgaWYgKGluc3BlY3RvciAmJiBpbnNwZWN0b3ItPmVuYWJsZWQo
KSAmJiBpbnNwZWN0b3ItPnNlYXJjaGluZ0Zvck5vZGVJblBhZ2UoKSkgewotICAgICAgICAgICAg
aW5zcGVjdG9yLT5oYW5kbGVNb3VzZVByZXNzKCk7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlQ2xp
Y2soKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgaWYgKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzcyhtX2ZyYW1lLT5wYWdlKCkpKSB7
CisgICAgICAgIGludmFsaWRhdGVDbGljaygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0jZW5kaWYKLQorICAgICAgICAKICAgICBGcmFtZSogc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhp
dFRlc3RSZXN1bHQobWV2KTsKICAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01vdXNlUHJlc3NFdmVu
dFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSkpIHsKICAgICAgICAgLy8gU3RhcnQgY2FwdHVyaW5n
IGZ1dHVyZSBldmVudHMgZm9yIHRoaXMgZnJhbWUuICBXZSBvbmx5IGRvIHRoaXMgaWYgd2UgZGlk
bid0IGNsZWFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzYTI0OGExLi4wMTJhOWJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTE5OSwxMCArMTk5LDggQEAgUGFnZTo6flBhZ2UoKQogICAgICAgICBm
cmFtZS0+cGFnZURlc3Ryb3llZCgpOwogCiAgICAgbV9lZGl0b3JDbGllbnQtPnBhZ2VEZXN0cm95
ZWQoKTsKLSAgICAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpOwotI2VuZGlmCisKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQodGhpcyk7CiAKICAgICBiYWNr
Rm9yd2FyZCgpLT5jbG9zZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCmluZGV4
IDkyMGY3NWIuLjhlZjc4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCkBAIC0z
Niw3ICszNiw3IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJEYXRh
YmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCkBAIC0xMDYsMTMgKzEwNiw4IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFi
YXNlOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAg
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIAog
ICAgIGNvbnRleHQtPnNldEhhc09wZW5EYXRhYmFzZXMoKTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKLSAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5kaWRPcGVuRGF0YWJhc2UoZGF0YWJhc2UsIGNvbnRleHQtPnNlY3VyaXR5
T3JpZ2luKCktPmhvc3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uKTsKLSAgICB9Ci0jZW5kaWYK
KworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlKGNvbnRleHQs
IGRhdGFiYXNlLmdldCgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCksIG5hbWUs
IGV4cGVjdGVkVmVyc2lvbik7CiAKICAgICAvLyBJZiBpdCdzIGEgbmV3IGRhdGFiYXNlIGFuZCBh
IGNyZWF0aW9uIGNhbGxiYWNrIHdhcyBwcm92aWRlZCwgcmVzZXQgdGhlIGV4cGVjdGVkCiAgICAg
Ly8gdmVyc2lvbiB0byAiIiBhbmQgc2NoZWR1bGUgdGhlIGNyZWF0aW9uIGNhbGxiYWNrLiBCZWNh
dXNlIG9mIHNvbWUgc3VidGxlIFN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmNwcAppbmRleCAxMGJjOTVmLi4xOGE5NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkV2ZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCkBAIC01NiwxMCArNTYsNyBAQCBBYnN0cmFjdFdv
cmtlcjo6fkFic3RyYWN0V29ya2VyKCkKIAogdm9pZCBBYnN0cmFjdFdvcmtlcjo6b25EZXN0cm95
V29ya2VyKCkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPyBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSA6IDApCi0gICAgICAgIGluc3Bl
Y3Rvci0+ZGlkRGVzdHJveVdvcmtlcihhc0lEKCkpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWREZXN0cm95V29ya2VyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
YXNJRCgpKTsKIH0KIAogdm9pZCBBYnN0cmFjdFdvcmtlcjo6Y29udGV4dERlc3Ryb3llZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggOTk3ZjljZC4uODc0ZWE2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcApAQCAtMzUsNyArMzUs
NyBAQAogCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKQEAgLTY0LDEwICs2NCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiBT
aGFyZWRXb3JrZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuCiAK
ICAgICBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KHdvcmtlci5nZXQoKSwgcmVtb3Rl
UG9ydC5yZWxlYXNlKCksIHNjcmlwdFVSTCwgbmFtZSwgZWMpOwogCi0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0gY29udGV4dC0+
aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICBpbnNwZWN0b3ItPmRpZENyZWF0ZVdvcmtl
cih3b3JrZXItPmFzSUQoKSwgc2NyaXB0VVJMLnN0cmluZygpLCB0cnVlKTsKLSNlbmRpZgorICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV29ya2VyKGNvbnRleHQsIHdvcmtl
ci0+YXNJRCgpLCBzY3JpcHRVUkwuc3RyaW5nKCksIHRydWUpOwogCiAgICAgcmV0dXJuIHdvcmtl
ci5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggOGEyZjYyYS4u
OTY4MzUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNDAsNyArNDAsNiBAQAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5o
IgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgpAQCAtNzEsMTAgKzcwLDcgQEAgUGFzc1JlZlB0
cjxXb3JrZXI+IFdvcmtlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb24KICAgICAvLyBUaGUgd29ya2VyIGNvbnRleHQgZG9lcyBub3QgZXhpc3Qg
d2hpbGUgbG9hZGluZywgc28gd2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgd29ya2VyIG9iamVjdCBp
cyBub3QgY29sbGVjdGVkLCBub3IgYXJlIGl0cyBldmVudCBsaXN0ZW5lcnMuCiAgICAgd29ya2Vy
LT5zZXRQZW5kaW5nQWN0aXZpdHkod29ya2VyLmdldCgpKTsKIAotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IGNvbnRleHQtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgaW5zcGVjdG9yLT5kaWRDcmVhdGVXb3JrZXIo
d29ya2VyLT5hc0lEKCksIHNjcmlwdFVSTC5zdHJpbmcoKSwgZmFsc2UpOwotI2VuZGlmCisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXb3JrZXIoY29udGV4dCwgd29ya2Vy
LT5hc0lEKCksIHNjcmlwdFVSTC5zdHJpbmcoKSwgZmFsc2UpOwogCiAgICAgcmV0dXJuIHdvcmtl
ci5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwCmluZGV4IDEwNzAwYzYuLmU4OWNjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiV29ya2VyLmgiCg==
</data>
<flag name="review"
          id="70529"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>