<?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>56562</bug_id>
          
          <creation_ts>2011-03-17 08:33:51 -0700</creation_ts>
          <short_desc>Web Inspector: add types markup to the IDL, remove Value types from the protocol.</short_desc>
          <delta_ts>2011-03-17 11:10:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</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>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>369055</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-17 08:33:51 -0700</bug_when>
    <thetext>We should not use Value in the protocol (we know exact type - Object / Array / primitive that we use).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369063</commentid>
    <comment_count>1</comment_count>
      <attachid>86060</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-17 08:56:00 -0700</bug_when>
    <thetext>Created attachment 86060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369067</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-17 08:58:46 -0700</bug_when>
    <thetext>Attachment 86060 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/InjectedScript.cpp:207:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebCore/inspector/InspectorDebuggerAgent.h:90:  The parameter name &quot;error&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:101:  The parameter name &quot;error&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorApplicationCacheAgent.h:63:  The parameter name &quot;error&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369169</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-17 11:10:39 -0700</bug_when>
    <thetext>Committed r81368: &lt;http://trac.webkit.org/changeset/81368&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86060</attachid>
            <date>2011-03-17 08:56:00 -0700</date>
            <delta_ts>2011-03-17 10:35:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56562-20110317185557.patch</filename>
            <type>text/plain</type>
            <size>55565</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODEzNTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZjU1MjU2YmI4OTdlNWVh
MWI5MGJjOGY1MWM5MTM2YzE0MTc3MjM3Li44YzRjNDg0NzhlOWQ0ZDRkZmQ3MThlNjNiM2Y2MzQx
MjI4NDgyYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDMtMTcgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIHR5cGVzIG1hcmt1
cCB0byB0aGUgSURMLCByZW1vdmUgVmFsdWUgdHlwZXMgZnJvbSB0aGUgcHJvdG9jb2wuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjU2MgorCisgICAg
ICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkluamVjdGVkU2NyaXB0OjpzZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkluamVjdGVkU2NyaXB0OjpjYWxsRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0OjptYWtlQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6
bWFrZU9iamVjdENhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hlcyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVGb3JOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2Rl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplZGl0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZU9uKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6YnVp
bGRJbnNwZWN0b3JBcnJheSk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5o
OgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZS5fY3JlYXRlUmVzb3Vy
Y2UpOgorCiAyMDExLTAzLTE2ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IGE1ZGIzZjYwY2ZmNDdlNGRj
NWNjMzhmNzA4MDQxOTlkZmQzNzcxMzAuLmZkYmY2MWRhZjllNzYwNDEzOTcyYWM2NTZjZWJhZjk5
MWJjOWI5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNw
cApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQo
SW5zcGVjdG9yRnJvbnRlbmQ6OkNvbnNvbGUqIGZyb250ZW5kLCBJbmplY3RlCiAgICAgICAgIH0K
ICAgICB9CiAgICAgaWYgKG1fY2FsbFN0YWNrKQotICAgICAgICBqc29uT2JqLT5zZXRBcnJheSgi
c3RhY2tUcmFjZSIsIG1fY2FsbFN0YWNrLT5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKKyAgICAg
ICAganNvbk9iai0+c2V0QXJyYXkoInN0YWNrVHJhY2UiLCBtX2NhbGxTdGFjay0+YnVpbGRJbnNw
ZWN0b3JBcnJheSgpKTsKICAgICBmcm9udGVuZC0+YWRkQ29uc29sZU1lc3NhZ2UoanNvbk9iaik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4
IDVjOGQ2N2JlZWI0N2E0NTlmZjdmZjY2MjZkMDBiYmE1ZDk2OGVjYWQuLjhkZmE4YzAzNWI3YTZk
MjdhMzQ0NWVmMTk5NmYwMzRlOGE5ZTFkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmNwcApAQCAtNDgsNDEgKzQ4LDQ4IEBAIEluamVjdGVkU2NyaXB0OjpJ
bmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QpCiB7CiB9CiAK
LXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1
YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1YXRlIik7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVDb21t
YW5kTGluZUFQSSk7Ci0gICAgbWFrZUNhbGwoZnVuY3Rpb24sIHJlc3VsdCk7CisgICAgbWFrZU9i
amVjdENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQpOwogfQogCi12b2lkIEluamVj
dGVkU2NyaXB0OjpldmFsdWF0ZU9uKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJ
ZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1
bHQpCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCiB7CiAgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJldmFsdWF0
ZU9uIik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQtPnRvSlNPTlN0cmlu
ZygpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKLSAgICBtYWtl
Q2FsbChmdW5jdGlvbiwgcmVzdWx0KTsKKyAgICBtYWtlT2JqZWN0Q2FsbChlcnJvclN0cmluZywg
ZnVuY3Rpb24sIHJlc3VsdCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25D
YWxsRnJhbWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhbGxGcmFtZUlkLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit2b2lkIElu
amVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQogewogICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZXZhbHVhdGVP
bkNhbGxGcmFtZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZUlkLT50
b0pTT05TdHJpbmcoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVDb21tYW5kTGluZUFQSSk7Ci0gICAgbWFrZUNhbGwoZnVu
Y3Rpb24sIHJlc3VsdCk7CisgICAgbWFrZU9iamVjdENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9u
LCByZXN1bHQpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0
eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit2b2lk
IEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBib29sIGlnbm9yZUhhc093blBy
b3BlcnR5LCBib29sIGFiYnJldmlhdGUsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIHByb3BlcnRp
ZXMpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRP
YmplY3QsICJnZXRQcm9wZXJ0aWVzIik7CiAgICAgU3RyaW5nIG9iamVjdElkU3RyaW5nID0gb2Jq
ZWN0SWQtPnRvSlNPTlN0cmluZygpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVj
dElkU3RyaW5nKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChpZ25vcmVIYXNPd25Qcm9w
ZXJ0eSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoYWJicmV2aWF0ZSk7Ci0gICAgbWFr
ZUNhbGwoZnVuY3Rpb24sIHJlc3VsdCk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJl
c3VsdDsgCisgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOworICAgIGlmICghcmVzdWx0
IHx8IHJlc3VsdC0+dHlwZSgpICE9IEluc3BlY3RvclZhbHVlOjpUeXBlQXJyYXkpIHsKKyAgICAg
ICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yLiI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgKnByb3BlcnRpZXMgPSByZXN1bHQtPmFzQXJyYXkoKTsKIH0KIAogTm9kZSogSW5q
ZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
b2JqZWN0SWQpCkBAIC0xMDAsMTQgKzEwNyw3IEBAIE5vZGUqIEluamVjdGVkU2NyaXB0Ojpub2Rl
Rm9yT2JqZWN0SWQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkKQogICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdEhvc3Q6OnNjcmlwdFZhbHVlQXNOb2RlKHJlc3VsdFZhbHVlKTsK
IH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVzb2x2ZU5vZGUobG9uZyBub2RlSWQsIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJlc29sdmVOb2RlIik7Ci0gICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQobm9kZUlkKTsKLSAgICBtYWtlQ2FsbChmdW5jdGlvbiwgcmVzdWx0
KTsKLX0KLQotU3RyaW5nIEluamVjdGVkU2NyaXB0OjpzZXRQcm9wZXJ0eVZhbHVlKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNldFByb3Bl
cnR5VmFsdWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24pCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0
ZWRTY3JpcHRPYmplY3QsICJzZXRQcm9wZXJ0eVZhbHVlIik7CiAgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQob2JqZWN0SWQtPnRvSlNPTlN0cmluZygpKTsKQEAgLTExNSwxMCArMTE1LDcgQEAg
U3RyaW5nIEluamVjdGVkU2NyaXB0OjpzZXRQcm9wZXJ0eVZhbHVlKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBvYmplY3RJZCwgY28KICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHBy
ZXNzaW9uKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKICAgICBtYWtlQ2Fs
bChmdW5jdGlvbiwgJnJlc3VsdCk7Ci0KLSAgICBTdHJpbmcgZXJyb3I7Ci0gICAgcmVzdWx0LT5h
c1N0cmluZygmZXJyb3IpOwotICAgIHJldHVybiBlcnJvcjsKKyAgICByZXN1bHQtPmFzU3RyaW5n
KGVycm9yU3RyaW5nKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdChQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQpCkBAIC0xMzAsMTIgKzEyNywxNSBA
QCB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3RJZCkKIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQot
UGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGcmFtZXMoKQor
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGcmFtZXMoKQog
ewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImNhbGxGcmFtZXMiKTsKICAgICBTY3JpcHRW
YWx1ZSBjYWxsRnJhbWVzVmFsdWUgPSBmdW5jdGlvbi5jYWxsKCk7Ci0gICAgcmV0dXJuIGNhbGxG
cmFtZXNWYWx1ZS50b0luc3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0
U3RhdGUoKSk7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQgPSBjYWxsRnJhbWVz
VmFsdWUudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRl
KCkpOworICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5
KQorICAgICAgICByZXR1cm4gcmVzdWx0LT5hc0FycmF5KCk7CisgICAgcmV0dXJuIEluc3BlY3Rv
ckFycmF5OjpjcmVhdGUoKTsKIH0KICNlbmRpZgogCkBAIC0xOTcsNyArMTk3LDIxIEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHQ6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1CiAgICAgaWYgKCFoYWRFeGNlcHRpb24pCiAgICAgICAgICpyZXN1
bHQgPSByZXN1bHRWYWx1ZS50b0luc3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qu
c2NyaXB0U3RhdGUoKSk7CiAgICAgZWxzZQotICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yVmFs
dWU6Om51bGwoKTsKKyAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKCJF
eGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2FsbC4iKTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlw
dDo6bWFrZU9iamVjdENhbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBTY3JpcHRGdW5jdGlv
bkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb2JqZWN0UmVzdWx0KQor
eworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0OworICAgIG1ha2VDYWxsKGZ1bmN0
aW9uLCAmcmVzdWx0KTsKKyAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC0+dHlwZSgpID09IEluc3Bl
Y3RvclZhbHVlOjpUeXBlU3RyaW5nKSB7CisgICAgICAgIHJlc3VsdC0+YXNTdHJpbmcoZXJyb3JT
dHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmICghcmVzdWx0IHx8IHJlc3Vs
dC0+dHlwZSgpICE9IEluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0KSB7CisgICAgICAgICplcnJv
clN0cmluZyA9ICJJbnRlcm5hbCBlcnJvci4iOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
ICpvYmplY3RSZXN1bHQgPSByZXN1bHQtPmFzT2JqZWN0KCk7CiB9CiAKIFNjcmlwdFZhbHVlIElu
amVjdGVkU2NyaXB0Ojpub2RlQXNTY3JpcHRWYWx1ZShOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCA4NTFjMzU5YjNiOGI2ZmM5YTVhNGQ3
ZTA4ZjEwYWE2OWQ4NzlkY2VkLi4yNWRmY2Y1MGYzMmJlNzVmOTgzODA5Y2FhMjIyM2FlZjU0N2U0
MzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtNDAs
MTAgKzQwLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW5zcGVjdG9yQXJy
YXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNz
IE5vZGU7CiBjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGw7CiAKK3R5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOworCiBjbGFzcyBJbmplY3RlZFNjcmlwdCB7CiBwdWJsaWM6CiAgICAgSW5qZWN0ZWRT
Y3JpcHQoKSB7IH0KQEAgLTUxLDE3ICs1NSwxNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc05v
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUo
KTsgfQogCi0gICAgdm9pZCBldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZXZhbHVhdGVPbihQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJh
bWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0
UHJvcGVydGllcyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGJvb2wgaWdu
b3JlSGFzT3duUHJvcGVydHksIGJvb2wgYWJicmV2aWF0ZSwgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiogcmVzdWx0KTsKKyAgICB2b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21t
YW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CisgICAgdm9pZCBl
dmFsdWF0ZU9uKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVj
dElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBy
ZXN1bHQpOworICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyosIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBi
b29sIGlnbm9yZUhhc093blByb3BlcnR5LCBib29sIGFiYnJldmlhdGUsIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4qIHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElkKFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCk7Ci0gICAgdm9pZCByZXNvbHZlTm9kZShsb25nIG5v
ZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICBTdHJpbmcgc2V0UHJv
cGVydHlWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pOworICAgIHZvaWQg
c2V0UHJvcGVydHlWYWx1ZShFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbik7CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBvYmplY3RJZCk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBjYWxsRnJhbWVzKCk7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gY2FsbEZyYW1lcygpOwogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gd3JhcE9iamVjdChTY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91
cE5hbWUpOwpAQCAtNzYsNiArNzksNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBjYW5BY2Nlc3NJ
bnNwZWN0ZWRXaW5kb3coKTsKICAgICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYs
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBtYWtlT2JqZWN0Q2Fs
bChFcnJvclN0cmluZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiByZXN1bHQpOwogICAgIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqKTsK
IAogICAgIFNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4IDU0NTRiZjNl
ODhlZTY4YTI4OWViOWM1ODUxNjhlZjNiNWNhOWRlOTMuLmU0MDg5ZjNiNzc5NWI3MjBiMmZmN2Ex
ZDVlMWJmOGJhODJkNzRmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTI1MSw3ICsyNTEsNyBAQCBJbmplY3RlZFNjcmlwdC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2Jq
ZWN0SWQob2JqZWN0SWQpOwogICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQo
cGFyc2VkT2JqZWN0SWQpOwogICAgICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiAiQ291bGQgbm90IGZpbmQgb2JqZWN0IHdpdGgg
Z2l2ZW4gaWQiOwogICAgICAgICB0cnkgewogICAgICAgICAgICAgaW5zcGVjdGVkV2luZG93LmNv
bnNvbGUuX29iamVjdFRvRXZhbHVhdGVPbiA9IG9iamVjdDsKICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9ldmFsdWF0ZUFuZFdyYXAoaW5zcGVjdGVkV2luZG93LmV2YWwsIGluc3BlY3RlZFdpbmRv
dywgIihmdW5jdGlvbigpIHsiICsgZXhwcmVzc2lvbiArICJ9KS5jYWxsKHdpbmRvdy5jb25zb2xl
Ll9vYmplY3RUb0V2YWx1YXRlT24pIiwgcGFyc2VkT2JqZWN0SWQub2JqZWN0R3JvdXAsIGZhbHNl
LCBmYWxzZSk7CkBAIC0zMTQsNyArMzE0LDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0g
ewogICAgIHsKICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKGNh
bGxGcmFtZUlkKTsKICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIGNhbGwgZnJhbWUgd2l0
aCBnaXZlbiBpZCI7CiAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZUFuZFdyYXAoY2FsbEZy
YW1lLmV2YWx1YXRlLCBjYWxsRnJhbWUsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCB0cnVlLCBp
bmplY3RDb21tYW5kTGluZUFQSSk7CiAgICAgfSwKIApAQCAtMzQyLDExICszNDIsNiBAQCBJbmpl
Y3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfSwK
IAotICAgIHJlc29sdmVOb2RlOiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX3dyYXBPYmplY3Qobm9kZSk7Ci0gICAgfSwKLQogICAgIF9pc0RlZmluZWQ6IGZ1bmN0
aW9uKG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBvYmplY3QgfHwgdGhpcy5faXNIVE1M
QWxsQ29sbGVjdGlvbihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlk
bAppbmRleCBkNGZlNDFhODRiNDAxNmEwOWUyNjNlMzVkNzg0ODA4MmQzNDA5MTVmLi45OTNlYzRi
ZmNjNjk3Yzc1ODA4NTA1M2RjNzY3MmExMGRkNmYxMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbApAQCAtNTYsMjQgKzU2LDI0IEBAIG1vZHVsZSBjb3JlIHsKIAogICAg
ICAgICB2b2lkIHNldFVzZXJBZ2VudE92ZXJyaWRlKGluIFN0cmluZyB1c2VyQWdlbnQpOwogCi0g
ICAgICAgIHZvaWQgZ2V0Q29va2llcyhvdXQgQXJyYXkgY29va2llcywgb3V0IFN0cmluZyBjb29r
aWVzU3RyaW5nKTsKKyAgICAgICAgdm9pZCBnZXRDb29raWVzKG91dCBbdHlwZVJlZj1jb21tb246
OkNvb2tpZV0gQXJyYXkgY29va2llcywgb3V0IFN0cmluZyBjb29raWVzU3RyaW5nKTsKICAgICAg
ICAgdm9pZCBkZWxldGVDb29raWUoaW4gU3RyaW5nIGNvb2tpZU5hbWUsIGluIFN0cmluZyBkb21h
aW4pOwogCi0gICAgICAgIFtldmVudF0gdm9pZCBpbnNwZWN0KG91dCBPYmplY3Qgb2JqZWN0SWQs
IG91dCBPYmplY3QgaGludHMpOworICAgICAgICBbZXZlbnRdIHZvaWQgaW5zcGVjdChvdXQgW3R5
cGVSZWY9cnVudGltZTo6T2JqZWN0SWRdIE9iamVjdCBvYmplY3RJZCwgb3V0IE9iamVjdCBoaW50
cyk7CiAgICAgfTsKIAogICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSBSdW50
aW1lIHsKLSAgICAgICAgdm9pZCBldmFsdWF0ZShpbiBTdHJpbmcgZXhwcmVzc2lvbiwgaW4gU3Ry
aW5nIG9iamVjdEdyb3VwLCBpbiBib29sZWFuIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgb3V0IFZh
bHVlIHJlc3VsdCk7Ci0gICAgICAgIHZvaWQgZXZhbHVhdGVPbihpbiBPYmplY3Qgb2JqZWN0SWQs
IGluIFN0cmluZyBleHByZXNzaW9uLCBvdXQgVmFsdWUgcmVzdWx0KTsKLSAgICAgICAgdm9pZCBn
ZXRQcm9wZXJ0aWVzKGluIE9iamVjdCBvYmplY3RJZCwgaW4gYm9vbGVhbiBpZ25vcmVIYXNPd25Q
cm9wZXJ0eSwgaW4gYm9vbGVhbiBhYmJyZXZpYXRlLCBvdXQgVmFsdWUgcmVzdWx0KTsKLSAgICAg
ICAgdm9pZCBzZXRQcm9wZXJ0eVZhbHVlKGluIE9iamVjdCBvYmplY3RJZCwgaW4gU3RyaW5nIHBy
b3BlcnR5TmFtZSwgaW4gU3RyaW5nIGV4cHJlc3Npb24pOwotICAgICAgICB2b2lkIHJlbGVhc2VP
YmplY3QoaW4gT2JqZWN0IG9iamVjdElkKTsKKyAgICAgICAgdm9pZCBldmFsdWF0ZShpbiBTdHJp
bmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdyb3VwLCBpbiBib29sZWFuIGluY2x1ZGVD
b21tYW5kTGluZUFQSSwgb3V0IFt0eXBlUmVmPXJ1bnRpbWU6Ok9iamVjdF0gT2JqZWN0IHJlc3Vs
dCk7CisgICAgICAgIHZvaWQgZXZhbHVhdGVPbihpbiBbdHlwZVJlZj1ydW50aW1lOjpPYmplY3RJ
ZF0gT2JqZWN0IG9iamVjdElkLCBpbiBTdHJpbmcgZXhwcmVzc2lvbiwgb3V0IFt0eXBlUmVmPXJ1
bnRpbWU6Ok9iamVjdF0gT2JqZWN0IHJlc3VsdCk7CisgICAgICAgIHZvaWQgZ2V0UHJvcGVydGll
cyhpbiBbdHlwZVJlZj1ydW50aW1lOjpPYmplY3RJZF0gT2JqZWN0IG9iamVjdElkLCBpbiBib29s
ZWFuIGlnbm9yZUhhc093blByb3BlcnR5LCBpbiBib29sZWFuIGFiYnJldmlhdGUsIG91dCBbdHlw
ZVJlZj1ydW50aW1lOjpQcm9wZXJ0eV0gQXJyYXkgcmVzdWx0KTsKKyAgICAgICAgdm9pZCBzZXRQ
cm9wZXJ0eVZhbHVlKGluIFt0eXBlUmVmPXJ1bnRpbWU6Ok9iamVjdElkXSBPYmplY3Qgb2JqZWN0
SWQsIGluIFN0cmluZyBwcm9wZXJ0eU5hbWUsIGluIFN0cmluZyBleHByZXNzaW9uKTsKKyAgICAg
ICAgdm9pZCByZWxlYXNlT2JqZWN0KGluIFt0eXBlUmVmPXJ1bnRpbWU6Ok9iamVjdElkXSBPYmpl
Y3Qgb2JqZWN0SWQpOwogICAgICAgICB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChpbiBsb25nIGlu
amVjdGVkU2NyaXB0SWQsIGluIFN0cmluZyBvYmplY3RHcm91cCk7CiAgICAgfTsKIAogICAgIGlu
dGVyZmFjZSBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSBDb25zb2xlIHsKICAgICAgICAgdm9pZCBz
ZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCwgb3V0IGJvb2xlYW4g
bmV3U3RhdGUpOwotICAgICAgICBbZXZlbnRdIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uob3V0IE9i
amVjdCBtZXNzYWdlT2JqKTsKKyAgICAgICAgW2V2ZW50XSB2b2lkIGFkZENvbnNvbGVNZXNzYWdl
KG91dCBbdHlwZVJlZj1jb25zb2xlOjpNZXNzYWdlXSBPYmplY3QgbWVzc2FnZU9iaik7CiAgICAg
ICAgIFtldmVudF0gdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudChvdXQgdW5z
aWduZWQgbG9uZyBjb3VudCk7CiAgICAgICAgIFtldmVudF0gdm9pZCB1cGRhdGVDb25zb2xlTWVz
c2FnZVJlcGVhdENvdW50KG91dCB1bnNpZ25lZCBsb25nIGNvdW50KTsKICAgICAgICAgdm9pZCBj
bGVhckNvbnNvbGVNZXNzYWdlcygpOwpAQCAtODMsNjMgKzgzLDYzIEBAIG1vZHVsZSBjb3JlIHsK
ICAgICB9OwogCiAgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIE5ldHdvcmsg
ewotICAgICAgICB2b2lkIGVuYWJsZShvdXQgT2JqZWN0IHJlc291cmNlcyk7CisgICAgICAgIHZv
aWQgZW5hYmxlKG91dCBbdHlwZVJlZj1uZXR3b3JrOjpSZXNvdXJjZVRyZWVdIE9iamVjdCByZXNv
dXJjZXMpOwogICAgICAgICB2b2lkIGRpc2FibGUoKTsKICAgICAgICAgdm9pZCByZXNvdXJjZUNv
bnRlbnQoaW4gdW5zaWduZWQgbG9uZyBmcmFtZUlkLCBpbiBTdHJpbmcgdXJsLCBpbiBib29sZWFu
IGJhc2U2NEVuY29kZSwgb3V0IGJvb2xlYW4gc3VjY2Vzcywgb3V0IFN0cmluZyBjb250ZW50KTsK
LSAgICAgICAgdm9pZCBzZXRFeHRyYUhlYWRlcnMoaW4gT2JqZWN0IGhlYWRlcnMpOworICAgICAg
ICB2b2lkIHNldEV4dHJhSGVhZGVycyhpbiBbdHlwZVJlZj1uZXR3b3JrOjpIZWFkZXJzXSBPYmpl
Y3QgaGVhZGVycyk7CiAKICAgICAgICAgW2V2ZW50XSB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFy
ZW50KG91dCB1bnNpZ25lZCBsb25nIGZyYW1lSWQpOwotICAgICAgICBbZXZlbnRdIHZvaWQgaWRl
bnRpZmllckZvckluaXRpYWxSZXF1ZXN0KG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBTdHJpbmcg
dXJsLCBvdXQgT2JqZWN0IGxvYWRlciwgb3V0IFZhbHVlIGNhbGxTdGFjayk7Ci0gICAgICAgIFtl
dmVudF0gdm9pZCB3aWxsU2VuZFJlcXVlc3Qob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJs
ZSB0aW1lLCBvdXQgT2JqZWN0IHJlcXVlc3QsIG91dCBPYmplY3QgcmVkaXJlY3RSZXNwb25zZSk7
CisgICAgICAgIFtldmVudF0gdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Qob3V0IGxv
bmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyB1cmwsIG91dCBbdHlwZVJlZj1uZXR3b3JrOjpMb2Fk
ZXJdIE9iamVjdCBsb2FkZXIsIG91dCBbdHlwZVJlZj1jb25zb2xlOjpTdGFja0ZyYW1lXSBBcnJh
eSBjYWxsU3RhY2spOworICAgICAgICBbZXZlbnRdIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KG91dCBs
b25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IFt0eXBlUmVmPW5ldHdvcms6OlJl
cXVlc3RdIE9iamVjdCByZXF1ZXN0LCBvdXQgW3R5cGVSZWY9bmV0d29yazo6UmVzcG9uc2VdIE9i
amVjdCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgW2V2ZW50XSB2b2lkIG1hcmtSZXNvdXJj
ZUFzQ2FjaGVkKG91dCBsb25nIGlkZW50aWZpZXIpOwotICAgICAgICBbZXZlbnRdIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0
IFN0cmluZyByZXNvdXJjZVR5cGUsIG91dCBPYmplY3QgcmVzcG9uc2UpOworICAgICAgICBbZXZl
bnRdIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3Vi
bGUgdGltZSwgb3V0IFN0cmluZyByZXNvdXJjZVR5cGUsIG91dCBbdHlwZVJlZj1uZXR3b3JrOjpS
ZXNwb25zZV0gT2JqZWN0IHJlc3BvbnNlKTsKICAgICAgICAgW2V2ZW50XSB2b2lkIGRpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0
IGxvbmcgbGVuZ3RoUmVjZWl2ZWQpOwogICAgICAgICBbZXZlbnRdIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAg
ICBbZXZlbnRdIHZvaWQgZGlkRmFpbExvYWRpbmcob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRv
dWJsZSB0aW1lLCBvdXQgU3RyaW5nIGxvY2FsaXplZERlc2NyaXB0aW9uKTsKLSAgICAgICAgW2V2
ZW50XSB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShvdXQgZG91YmxlIHRpbWUs
IG91dCBPYmplY3QgcmVzb3VyY2UpOworICAgICAgICBbZXZlbnRdIHZvaWQgZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKG91dCBkb3VibGUgdGltZSwgb3V0IFt0eXBlUmVmPW5ldHdvcms6
OkNhY2hlZFJlc291cmNlXSBPYmplY3QgcmVzb3VyY2UpOwogICAgICAgICBbZXZlbnRdIHZvaWQg
c2V0SW5pdGlhbENvbnRlbnQob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyBzb3VyY2VT
dHJpbmcsIG91dCBTdHJpbmcgdHlwZSk7Ci0gICAgICAgIFtldmVudF0gdm9pZCBkaWRDb21taXRM
b2FkRm9yRnJhbWUob3V0IE9iamVjdCBmcmFtZSwgb3V0IE9iamVjdCBsb2FkZXIpOworICAgICAg
ICBbZXZlbnRdIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKG91dCBPYmplY3QgZnJhbWUsIG91
dCBbdHlwZVJlZj1uZXR3b3JrOjpMb2FkZXJdIE9iamVjdCBsb2FkZXIpOwogICAgICAgICBbZXZl
bnRdIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KG91dCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IG91dCBTdHJpbmcgcmVxdWVzdFVSTCk7Ci0gICAgICAgIFtldmVudF0gdm9pZCB3aWxsU2VuZFdl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qob3V0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgb3V0
IGRvdWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlcXVlc3QpOwotICAgICAgICBbZXZlbnRdIHZvaWQg
ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKG91dCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9iamVjdCByZXNwb25zZSk7CisgICAgICAg
IFtldmVudF0gdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qob3V0IHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgW3R5cGVSZWY9bmV0d29y
azo6V2ViU29ja2V0UmVxdWVzdF0gT2JqZWN0IHJlcXVlc3QpOworICAgICAgICBbZXZlbnRdIHZv
aWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKG91dCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IFt0eXBlUmVmPW5ldHdvcms6OldlYlNv
Y2tldFJlc3BvbnNlXSBPYmplY3QgcmVzcG9uc2UpOwogICAgICAgICBbZXZlbnRdIHZvaWQgZGlk
Q2xvc2VXZWJTb2NrZXQob3V0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0
aW1lKTsKICAgICB9OwogCiAjaWYgZGVmaW5lZChFTkFCTEVfREFUQUJBU0UpICYmIEVOQUJMRV9E
QVRBQkFTRQogICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSBEYXRhYmFzZSB7
Ci0gICAgICAgIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKGluIGxvbmcgZGF0YWJhc2VJZCwg
b3V0IEFycmF5IHRhYmxlTmFtZXMpOworICAgICAgICB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1l
cyhpbiBsb25nIGRhdGFiYXNlSWQsIG91dCBbdHlwZT1zdHJpbmddIEFycmF5IHRhYmxlTmFtZXMp
OwogICAgICAgICB2b2lkIGV4ZWN1dGVTUUwoaW4gbG9uZyBkYXRhYmFzZUlkLCBpbiBTdHJpbmcg
cXVlcnksIG91dCBib29sZWFuIHN1Y2Nlc3MsIG91dCBsb25nIHRyYW5zYWN0aW9uSWQpOwogCi0g
ICAgICAgIFtldmVudF0gdm9pZCBhZGREYXRhYmFzZShvdXQgT2JqZWN0IGRhdGFiYXNlKTsKLSAg
ICAgICAgW2V2ZW50XSB2b2lkIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKG91dCBsb25nIHRyYW5z
YWN0aW9uSWQsIG91dCBWYWx1ZSBjb2x1bW5OYW1lcywgb3V0IFZhbHVlIHZhbHVlcyk7Ci0gICAg
ICAgIFtldmVudF0gdm9pZCBzcWxUcmFuc2FjdGlvbkZhaWxlZChvdXQgbG9uZyB0cmFuc2FjdGlv
bklkLCBvdXQgVmFsdWUgc3FsRXJyb3IpOworICAgICAgICBbZXZlbnRdIHZvaWQgYWRkRGF0YWJh
c2Uob3V0IFt0eXBlUmVmPWRhdGFiYXNlOjpEYXRhYmFzZV0gT2JqZWN0IGRhdGFiYXNlKTsKKyAg
ICAgICAgW2V2ZW50XSB2b2lkIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKG91dCBsb25nIHRyYW5z
YWN0aW9uSWQsIG91dCBbdHlwZT1zdHJpbmddIEFycmF5IGNvbHVtbk5hbWVzLCBvdXQgW3R5cGU9
c3RyaW5nIG9yIG51bWJlcl0gQXJyYXkgdmFsdWVzKTsKKyAgICAgICAgW2V2ZW50XSB2b2lkIHNx
bFRyYW5zYWN0aW9uRmFpbGVkKG91dCBsb25nIHRyYW5zYWN0aW9uSWQsIG91dCBbdHlwZVJlZj1k
YXRhYmFzZTo6RXJyb3JdIE9iamVjdCBzcWxFcnJvcik7CiAgICAgfTsKICNlbmRpZgogCiAjaWYg
ZGVmaW5lZChFTkFCTEVfRE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RPUkFHRQogICAgIGlu
dGVyZmFjZSBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSBET01TdG9yYWdlIHsKLSAgICAgICAgdm9p
ZCBnZXRET01TdG9yYWdlRW50cmllcyhpbiBsb25nIHN0b3JhZ2VJZCwgb3V0IEFycmF5IGVudHJp
ZXMpOworICAgICAgICB2b2lkIGdldERPTVN0b3JhZ2VFbnRyaWVzKGluIGxvbmcgc3RvcmFnZUlk
LCBvdXQgW3R5cGVSZWY9ZG9tc3RvcmFnZTo6RW50cnldIEFycmF5IGVudHJpZXMpOwogICAgICAg
ICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGluIGxvbmcgc3RvcmFnZUlkLCBpbiBTdHJpbmcga2V5
LCBpbiBTdHJpbmcgdmFsdWUsIG91dCBib29sZWFuIHN1Y2Nlc3MpOwogICAgICAgICB2b2lkIHJl
bW92ZURPTVN0b3JhZ2VJdGVtKGluIGxvbmcgc3RvcmFnZUlkLCBpbiBTdHJpbmcga2V5LCBvdXQg
Ym9vbGVhbiBzdWNjZXNzKTsKLSAgICAgICAgW2V2ZW50XSB2b2lkIGFkZERPTVN0b3JhZ2Uob3V0
IE9iamVjdCBzdG9yYWdlKTsKKyAgICAgICAgW2V2ZW50XSB2b2lkIGFkZERPTVN0b3JhZ2Uob3V0
IFt0eXBlUmVmPWRvbXN0b3JhZ2U6OlN0b3JhZ2VdIE9iamVjdCBzdG9yYWdlKTsKICAgICAgICAg
W2V2ZW50XSB2b2lkIHVwZGF0ZURPTVN0b3JhZ2Uob3V0IGludCBzdG9yYWdlSWQpOwogICAgIH07
CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykg
JiYgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUwogICAgIGludGVyZmFjZSBbQ29uZGl0
aW9uYWw9SU5TUEVDVE9SXSBBcHBsaWNhdGlvbkNhY2hlIHsKLSAgICAgICAgdm9pZCBnZXRBcHBs
aWNhdGlvbkNhY2hlcyhvdXQgVmFsdWUgYXBwbGljYXRpb25DYWNoZXMpOworICAgICAgICB2b2lk
IGdldEFwcGxpY2F0aW9uQ2FjaGVzKG91dCBbdHlwZVJlZj1hcHBjYWNoZTo6QXBwQ2FjaGVdIE9i
amVjdCBhcHBsaWNhdGlvbkNhY2hlcyk7CiAgICAgICAgIFtldmVudF0gdm9pZCB1cGRhdGVBcHBs
aWNhdGlvbkNhY2hlU3RhdHVzKG91dCBpbnQgc3RhdHVzKTsKICAgICAgICAgW2V2ZW50XSB2b2lk
IHVwZGF0ZU5ldHdvcmtTdGF0ZShvdXQgYm9vbGVhbiBpc05vd09ubGluZSk7CiAgICAgfTsKICNl
bmRpZgogCiAgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIERPTSB7Ci0gICAg
ICAgIHZvaWQgZ2V0RG9jdW1lbnQob3V0IE9iamVjdCByb290KTsKKyAgICAgICAgdm9pZCBnZXRE
b2N1bWVudChvdXQgW3R5cGVSZWY9ZG9tOjpOb2RlXSBPYmplY3Qgcm9vdCk7CiAgICAgICAgIHZv
aWQgZ2V0Q2hpbGROb2RlcyhpbiBsb25nIG5vZGVJZCk7CiAKICAgICAgICAgdm9pZCBxdWVyeVNl
bGVjdG9yKGluIGxvbmcgbm9kZUlkLCBpbiBTdHJpbmcgc2VsZWN0b3JzLCBpbiBib29sZWFuIGRv
Y3VtZW50V2lkZSwgb3V0IGxvbmcgZWxlbWVudElkKTsKLSAgICAgICAgdm9pZCBxdWVyeVNlbGVj
dG9yQWxsKGluIGxvbmcgbm9kZUlkLCBpbiBTdHJpbmcgc2VsZWN0b3JzLCBpbiBib29sZWFuIGRv
Y3VtZW50V2lkZSwgb3V0IEFycmF5IG5vZGVJZHMpOworICAgICAgICB2b2lkIHF1ZXJ5U2VsZWN0
b3JBbGwoaW4gbG9uZyBub2RlSWQsIGluIFN0cmluZyBzZWxlY3RvcnMsIGluIGJvb2xlYW4gZG9j
dW1lbnRXaWRlLCBvdXQgW3R5cGU9bG9uZ10gQXJyYXkgbm9kZUlkcyk7CiAKICAgICAgICAgdm9p
ZCBzZXROb2RlTmFtZShpbiBsb25nIG5vZGVJZCwgaW4gU3RyaW5nIG5hbWUsIG91dCBsb25nIG91
dE5vZGVJZCk7CiAgICAgICAgIHZvaWQgc2V0Tm9kZVZhbHVlKGluIGxvbmcgbm9kZUlkLCBpbiBT
dHJpbmcgdmFsdWUsIG91dCBib29sZWFuIHN1Y2Nlc3MpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIG1v
ZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoaW4gbG9uZyBlbGVtZW50SWQs
IGluIFN0cmluZyBuYW1lLCBpbiBTdHJpbmcgdmFsdWUpOwogICAgICAgICB2b2lkIHJlbW92ZUF0
dHJpYnV0ZShpbiBsb25nIGVsZW1lbnRJZCwgaW4gU3RyaW5nIG5hbWUpOwogCi0gICAgICAgIHZv
aWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKGluIGxvbmcgbm9kZUlkLCBvdXQgQXJyYXkgbGlz
dGVuZXJzQXJyYXkpOworICAgICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShpbiBs
b25nIG5vZGVJZCwgb3V0IFt0eXBlUmVmPWRvbTo6TGlzdGVuZXJdIEFycmF5IGxpc3RlbmVyc0Fy
cmF5KTsKICAgICAgICAgdm9pZCBjb3B5Tm9kZShpbiBsb25nIG5vZGVJZCk7CiAKICAgICAgICAg
dm9pZCBnZXRPdXRlckhUTUwoaW4gbG9uZyBub2RlSWQsIG91dCBTdHJpbmcgb3V0ZXJIVE1MKTsK
QEAgLTE1NywzNCArMTU3LDM0IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBwZXJmb3Jt
U2VhcmNoKGluIFN0cmluZyBxdWVyeSwgaW4gYm9vbGVhbiBydW5TeW5jaHJvbm91c2x5KTsKICAg
ICAgICAgdm9pZCBjYW5jZWxTZWFyY2goKTsKIAotICAgICAgICB2b2lkIHB1c2hOb2RlVG9Gcm9u
dGVuZChpbiBPYmplY3Qgb2JqZWN0SWQsIG91dCBsb25nIG5vZGVJZCk7CisgICAgICAgIHZvaWQg
cHVzaE5vZGVUb0Zyb250ZW5kKGluIFt0eXBlUmVmPXJ1bnRpbWU6Ok9iamVjdElkXSBPYmplY3Qg
b2JqZWN0SWQsIG91dCBsb25nIG5vZGVJZCk7CiAgICAgICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhU
b0Zyb250ZW5kKGluIFN0cmluZyBwYXRoLCBvdXQgbG9uZyBub2RlSWQpOwotICAgICAgICB2b2lk
IHJlc29sdmVOb2RlKGluIGxvbmcgbm9kZUlkLCBpbiBTdHJpbmcgb2JqZWN0R3JvdXAsIG91dCBW
YWx1ZSByZXN1bHQpOworICAgICAgICB2b2lkIHJlc29sdmVOb2RlKGluIGxvbmcgbm9kZUlkLCBp
biBTdHJpbmcgb2JqZWN0R3JvdXAsIG91dCBbdHlwZVJlZj1ydW50aW1lOjpPYmplY3RJZF0gT2Jq
ZWN0IG9iamVjdElkKTsKIAogICAgICAgICBbZXZlbnRdIHZvaWQgZG9jdW1lbnRVcGRhdGVkKCk7
Ci0gICAgICAgIFtldmVudF0gdm9pZCBzZXRDaGlsZE5vZGVzKG91dCBsb25nIHBhcmVudElkLCBv
dXQgQXJyYXkgbm9kZXMpOwotICAgICAgICBbZXZlbnRdIHZvaWQgYXR0cmlidXRlc1VwZGF0ZWQo
b3V0IGxvbmcgaWQsIG91dCBBcnJheSBhdHRyaWJ1dGVzKTsKKyAgICAgICAgW2V2ZW50XSB2b2lk
IHNldENoaWxkTm9kZXMob3V0IGxvbmcgcGFyZW50SWQsIG91dCBbdHlwZVJlZj1kb206Ok5vZGVd
IEFycmF5IG5vZGVzKTsKKyAgICAgICAgW2V2ZW50XSB2b2lkIGF0dHJpYnV0ZXNVcGRhdGVkKG91
dCBsb25nIGlkLCBvdXRbdHlwZVJlZj1kb206OkF0dHJpYnV0ZV0gQXJyYXkgYXR0cmlidXRlcyk7
CiAgICAgICAgIFtldmVudF0gdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQob3V0IGxvbmcgaWQs
IG91dCBTdHJpbmcgbmV3VmFsdWUpOwotICAgICAgICBbZXZlbnRdIHZvaWQgc2V0RGV0YWNoZWRS
b290KG91dCBPYmplY3Qgcm9vdCk7CisgICAgICAgIFtldmVudF0gdm9pZCBzZXREZXRhY2hlZFJv
b3Qob3V0IFt0eXBlUmVmPWRvbTo6Tm9kZV0gT2JqZWN0IHJvb3QpOwogICAgICAgICBbZXZlbnRd
IHZvaWQgY2hpbGROb2RlQ291bnRVcGRhdGVkKG91dCBsb25nIGlkLCBvdXQgaW50IG5ld1ZhbHVl
KTsKLSAgICAgICAgW2V2ZW50XSB2b2lkIGNoaWxkTm9kZUluc2VydGVkKG91dCBsb25nIHBhcmVu
dElkLCBvdXQgbG9uZyBwcmV2SWQsIG91dCBPYmplY3Qgbm9kZSk7CisgICAgICAgIFtldmVudF0g
dm9pZCBjaGlsZE5vZGVJbnNlcnRlZChvdXQgbG9uZyBwYXJlbnRJZCwgb3V0IGxvbmcgcHJldklk
LCBvdXQgW3R5cGVSZWY9ZG9tOjpOb2RlXSBPYmplY3Qgbm9kZSk7CiAgICAgICAgIFtldmVudF0g
dm9pZCBjaGlsZE5vZGVSZW1vdmVkKG91dCBsb25nIHBhcmVudElkLCBvdXQgbG9uZyBpZCk7Ci0g
ICAgICAgIFtldmVudF0gdm9pZCBzZWFyY2hSZXN1bHRzKG91dCBBcnJheSBub2RlSWRzKTsKKyAg
ICAgICAgW2V2ZW50XSB2b2lkIHNlYXJjaFJlc3VsdHMob3V0IFt0eXBlPWxvbmddIEFycmF5IG5v
ZGVJZHMpOwogICAgIH07CiAKICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0g
Q1NTIHsKLSAgICAgICAgdm9pZCBnZXRTdHlsZXNGb3JOb2RlKGluIGxvbmcgbm9kZUlkLCBvdXQg
VmFsdWUgc3R5bGVzKTsKLSAgICAgICAgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShpbiBs
b25nIG5vZGVJZCwgb3V0IFZhbHVlIHN0eWxlKTsKLSAgICAgICAgdm9pZCBnZXRJbmxpbmVTdHls
ZUZvck5vZGUoaW4gbG9uZyBub2RlSWQsIG91dCBWYWx1ZSBzdHlsZSk7Ci0gICAgICAgIHZvaWQg
Z2V0QWxsU3R5bGVzKG91dCBBcnJheSBzdHlsZVNoZWV0SWRzKTsKLSAgICAgICAgdm9pZCBnZXRT
dHlsZVNoZWV0KGluIFN0cmluZyBzdHlsZVNoZWV0SWQsIG91dCBWYWx1ZSBzdHlsZVNoZWV0KTsK
KyAgICAgICAgdm9pZCBnZXRTdHlsZXNGb3JOb2RlKGluIGxvbmcgbm9kZUlkLCBvdXQgW3R5cGVS
ZWY9Y3NzOjpOb2RlU3R5bGVzXSBPYmplY3Qgc3R5bGVzKTsKKyAgICAgICAgdm9pZCBnZXRDb21w
dXRlZFN0eWxlRm9yTm9kZShpbiBsb25nIG5vZGVJZCwgb3V0IFt0eXBlUmVmPWNzczo6Q29tcHV0
ZWRTdHlsZV0gT2JqZWN0IHN0eWxlKTsKKyAgICAgICAgdm9pZCBnZXRJbmxpbmVTdHlsZUZvck5v
ZGUoaW4gbG9uZyBub2RlSWQsIG91dCBbdHlwZVJlZj1jc3M6OlN0eWxlXSBPYmplY3Qgc3R5bGUp
OworICAgICAgICB2b2lkIGdldEFsbFN0eWxlcyhvdXQgW3R5cGU9c3RyaW5nXSBBcnJheSBzdHls
ZVNoZWV0SWRzKTsKKyAgICAgICAgdm9pZCBnZXRTdHlsZVNoZWV0KGluIFN0cmluZyBzdHlsZVNo
ZWV0SWQsIG91dCBbdHlwZVJlZj1jc3M6OlN0eWxlU2hlZXRdIE9iamVjdCBzdHlsZVNoZWV0KTsK
ICAgICAgICAgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChpbiBTdHJpbmcgc3R5bGVTaGVldElkLCBv
dXQgU3RyaW5nIHVybCwgb3V0IFN0cmluZyB0ZXh0KTsKICAgICAgICAgdm9pZCBzZXRTdHlsZVNo
ZWV0VGV4dChpbiBTdHJpbmcgc3R5bGVTaGVldElkLCBpbiBTdHJpbmcgdGV4dCwgb3V0IGJvb2xl
YW4gc3VjY2Vzcyk7Ci0gICAgICAgIHZvaWQgc2V0UHJvcGVydHlUZXh0KGluIE9iamVjdCBzdHls
ZUlkLCBpbiBsb25nIHByb3BlcnR5SW5kZXgsIGluIFN0cmluZyB0ZXh0LCBpbiBib29sZWFuIG92
ZXJ3cml0ZSwgb3V0IFZhbHVlIHN0eWxlKTsKLSAgICAgICAgdm9pZCB0b2dnbGVQcm9wZXJ0eShp
biBPYmplY3Qgc3R5bGVJZCwgaW4gbG9uZyBwcm9wZXJ0eUluZGV4LCBpbiBib29sZWFuIGRpc2Fi
bGUsIG91dCBWYWx1ZSBzdHlsZSk7Ci0gICAgICAgIHZvaWQgc2V0UnVsZVNlbGVjdG9yKGluIE9i
amVjdCBydWxlSWQsIGluIFN0cmluZyBzZWxlY3Rvciwgb3V0IFZhbHVlIHJ1bGUpOwotICAgICAg
ICB2b2lkIGFkZFJ1bGUoaW4gbG9uZyBjb250ZXh0Tm9kZUlkLCBpbiBTdHJpbmcgc2VsZWN0b3Is
IG91dCBWYWx1ZSBydWxlKTsKLSAgICAgICAgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVz
KG91dCBBcnJheSBjc3NQcm9wZXJ0aWVzKTsKKyAgICAgICAgdm9pZCBzZXRQcm9wZXJ0eVRleHQo
aW4gW3R5cGVSZWY9c3R5bGU6OlN0eWxlSWRdIE9iamVjdCBzdHlsZUlkLCBpbiBsb25nIHByb3Bl
cnR5SW5kZXgsIGluIFN0cmluZyB0ZXh0LCBpbiBib29sZWFuIG92ZXJ3cml0ZSwgb3V0IFt0eXBl
UmVmPWNzczo6U3R5bGVdIE9iamVjdCBzdHlsZSk7CisgICAgICAgIHZvaWQgdG9nZ2xlUHJvcGVy
dHkoaW4gIFt0eXBlUmVmPXN0eWxlOjpTdHlsZUlkXSBPYmplY3Qgc3R5bGVJZCwgaW4gbG9uZyBw
cm9wZXJ0eUluZGV4LCBpbiBib29sZWFuIGRpc2FibGUsIG91dCBbdHlwZVJlZj1jc3M6OlN0eWxl
XSBPYmplY3Qgc3R5bGUpOworICAgICAgICB2b2lkIHNldFJ1bGVTZWxlY3RvcihpbiBbdHlwZVJl
Zj1zdHlsZTo6UnVsZUlkXSBPYmplY3QgcnVsZUlkLCBpbiBTdHJpbmcgc2VsZWN0b3IsIG91dCBb
dHlwZVJlZj1jc3M6OlJ1bGVdIE9iamVjdCBydWxlKTsKKyAgICAgICAgdm9pZCBhZGRSdWxlKGlu
IGxvbmcgY29udGV4dE5vZGVJZCwgaW4gU3RyaW5nIHNlbGVjdG9yLCBvdXQgW3R5cGVSZWY9Y3Nz
OjpSdWxlXSBPYmplY3QgcnVsZSk7CisgICAgICAgIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVy
dGllcyhvdXQgW3R5cGU9c3RyaW5nXSBBcnJheSBjc3NQcm9wZXJ0aWVzKTsKICAgICB9OwogCiAg
ICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIFRpbWVsaW5lIHsKQEAgLTE5Miw3
ICsxOTIsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgc3RvcCgpOwogICAgICAgICBb
ZXZlbnRdIHZvaWQgdGltZWxpbmVQcm9maWxlcldhc1N0YXJ0ZWQoKTsKICAgICAgICAgW2V2ZW50
XSB2b2lkIHRpbWVsaW5lUHJvZmlsZXJXYXNTdG9wcGVkKCk7Ci0gICAgICAgIFtldmVudF0gdm9p
ZCBhZGRSZWNvcmRUb1RpbWVsaW5lKG91dCBPYmplY3QgcmVjb3JkKTsKKyAgICAgICAgW2V2ZW50
XSB2b2lkIGFkZFJlY29yZFRvVGltZWxpbmUob3V0IFt0eXBlUmVmPXRpbWVsaW5lOjpSZWNvcmRd
IE9iamVjdCByZWNvcmQpOwogICAgIH07CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUgpAQCAtMjA4LDcgKzIwOCw3
IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAg
ICAgICAgIHZvaWQgZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAKLSAgICAgICAgdm9pZCBzZXRK
YXZhU2NyaXB0QnJlYWtwb2ludChpbiBTdHJpbmcgdXJsLCBpbiBpbnQgbGluZU51bWJlciwgaW4g
aW50IGNvbHVtbk51bWJlciwgaW4gU3RyaW5nIGNvbmRpdGlvbiwgaW4gYm9vbGVhbiBlbmFibGVk
LCBvdXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IEFycmF5IGxvY2F0aW9ucyk7CisgICAgICAg
IHZvaWQgc2V0SmF2YVNjcmlwdEJyZWFrcG9pbnQoaW4gU3RyaW5nIHVybCwgaW4gaW50IGxpbmVO
dW1iZXIsIGluIGludCBjb2x1bW5OdW1iZXIsIGluIFN0cmluZyBjb25kaXRpb24sIGluIGJvb2xl
YW4gZW5hYmxlZCwgb3V0IFN0cmluZyBicmVha3BvaW50SWQsIG91dCBbdHlwZVJlZj1kZWJ1Z2dl
cjo6TG9jYXRpb25dIEFycmF5IGxvY2F0aW9ucyk7CiAgICAgICAgIHZvaWQgc2V0SmF2YVNjcmlw
dEJyZWFrcG9pbnRCeVNvdXJjZUlkKGluIFN0cmluZyBzb3VyY2VJZCwgaW4gaW50IGxpbmVOdW1i
ZXIsIGluIGludCBjb2x1bW5OdW1iZXIsIGluIFN0cmluZyBjb25kaXRpb24sIGluIGJvb2xlYW4g
ZW5hYmxlZCwgb3V0IFN0cmluZyBicmVha3BvaW50SWQsIG91dCBpbnQgYWN0dWFsTGluZU51bWJl
ciwgb3V0IGludCBhY3R1YWxDb2x1bW5OdW1iZXIpOwogICAgICAgICB2b2lkIHJlbW92ZUphdmFT
Y3JpcHRCcmVha3BvaW50KGluIFN0cmluZyBicmVha3BvaW50SWQpOwogICAgICAgICBbZXZlbnRd
IHZvaWQgYnJlYWtwb2ludFJlc29sdmVkKG91dCBTdHJpbmcgYnJlYWtwb2ludElkLCBvdXQgU3Ry
aW5nIHNvdXJjZUlkLCBvdXQgaW50IGxpbmVOdW1iZXIsIG91dCBpbnQgY29sdW1uTnVtYmVyKTsK
QEAgLTIxOCwxNiArMjE4LDE2IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBzdGVwSW50
bygpOwogICAgICAgICB2b2lkIHN0ZXBPdXQoKTsKICAgICAgICAgdm9pZCBwYXVzZSgpOwotICAg
ICAgICBbZXZlbnRdIHZvaWQgcGF1c2VkU2NyaXB0KG91dCBPYmplY3QgZGV0YWlscyk7CisgICAg
ICAgIFtldmVudF0gdm9pZCBwYXVzZWRTY3JpcHQob3V0IFt0eXBlUmVmPWRlYnVnZ2VyOjpCYWNr
dHJhY2VdIE9iamVjdCBkZXRhaWxzKTsKICAgICAgICAgdm9pZCByZXN1bWUoKTsKICAgICAgICAg
W2V2ZW50XSB2b2lkIHJlc3VtZWRTY3JpcHQoKTsgLy8gRklYTUU6IE1ha2UgdGhpcyBvdXQgcGFy
YW1ldGVyIG9mIHJlc3VtZSBpZiBwb3NzaWJsZS4KIAotICAgICAgICB2b2lkIGVkaXRTY3JpcHRT
b3VyY2UoaW4gU3RyaW5nIHNvdXJjZUlELCBpbiBTdHJpbmcgbmV3Q29udGVudCwgb3V0IGJvb2xl
YW4gc3VjY2Vzcywgb3V0IFN0cmluZyByZXN1bHQsIG91dCBWYWx1ZSBuZXdDYWxsRnJhbWVzKTsK
KyAgICAgICAgdm9pZCBlZGl0U2NyaXB0U291cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgaW4gU3Ry
aW5nIG5ld0NvbnRlbnQsIG91dCBib29sZWFuIHN1Y2Nlc3MsIG91dCBTdHJpbmcgcmVzdWx0LCBv
dXQgW3R5cGVSZWY9ZGVidWdnZXI6OlN0YWNrRnJhbWUsIG9wdGlvbmFsXSBBcnJheSBzdGFja0Zy
YW1lcyk7CiAgICAgICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKGluIFN0cmluZyBzb3VyY2VJRCwg
b3V0IFN0cmluZyBzY3JpcHRTb3VyY2UpOwogCiAgICAgICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZShpbiBsb25nIHBhdXNlT25FeGNlcHRpb25zU3RhdGUsIG91dCBsb25nIG5ld1N0
YXRlKTsKIAotICAgICAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoaW4gT2JqZWN0IGNhbGxG
cmFtZUlkLCBpbiBTdHJpbmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdyb3VwLCBpbiBi
b29sZWFuIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgb3V0IFZhbHVlIHJlc3VsdCk7CisgICAgICAg
IHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShpbiBbdHlwZVJlZj1kZWJ1Z2dlcjo6Q2FsbEZyYW1l
SWRdIE9iamVjdCBjYWxsRnJhbWVJZCwgaW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIFN0cmluZyBv
YmplY3RHcm91cCwgaW4gYm9vbGVhbiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIG91dCBbdHlwZVJl
Zj1ydW50aW1lOjpPYmplY3RJZF0gT2JqZWN0IHJlc3VsdCk7CiAKICNpZiBkZWZpbmVkKEVOQUJM
RV9XT1JLRVJTKSAmJiBFTkFCTEVfV09SS0VSUwogICAgICAgICBbZXZlbnRdIHZvaWQgZGlkQ3Jl
YXRlV29ya2VyKG91dCBsb25nIGlkLCBvdXQgU3RyaW5nIHVybCwgb3V0IGJvb2xlYW4gaXNTaGFy
ZWQpOwpAQCAtMjU5LDggKzI1OSw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2V2ZW50XSB2
b2lkIHByb2ZpbGVyV2FzRW5hYmxlZCgpOwogICAgICAgICBbZXZlbnRdIHZvaWQgcHJvZmlsZXJX
YXNEaXNhYmxlZCgpOwogCi0gICAgICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMob3V0IEFycmF5
IGhlYWRlcnMpOwotICAgICAgICB2b2lkIGdldFByb2ZpbGUoaW4gU3RyaW5nIHR5cGUsIGluIHVu
c2lnbmVkIGxvbmcgdWlkLCBvdXQgT2JqZWN0IHByb2ZpbGUpOworICAgICAgICB2b2lkIGdldFBy
b2ZpbGVIZWFkZXJzKG91dCBbdHlwZVJlZj1wcm9maWxlcjo6SGVhZGVyXSBBcnJheSBoZWFkZXJz
KTsKKyAgICAgICAgdm9pZCBnZXRQcm9maWxlKGluIFN0cmluZyB0eXBlLCBpbiB1bnNpZ25lZCBs
b25nIHVpZCwgb3V0IFt0eXBlUmVmPXByb2ZpbGVyOjpQcm9maWxlXSBPYmplY3QgcHJvZmlsZSk7
CiAgICAgICAgIHZvaWQgcmVtb3ZlUHJvZmlsZShpbiBTdHJpbmcgdHlwZSwgaW4gdW5zaWduZWQg
bG9uZyB1aWQpOwogICAgICAgICB2b2lkIGNsZWFyUHJvZmlsZXMoKTsKIApAQCAtMjY4LDcgKzI2
OCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KGluIGJv
b2xlYW4gZGV0YWlsZWQpOwogICAgICAgICB2b2lkIGdldEV4YWN0SGVhcFNuYXBzaG90Tm9kZVJl
dGFpbmVkU2l6ZShpbiB1bnNpZ25lZCBsb25nIHVpZCwgaW4gdW5zaWduZWQgbG9uZyBub2RlSWQs
IG91dCBsb25nIHNpemUpOwogICAgICAgICB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7Ci0gICAgICAg
IFtldmVudF0gdm9pZCBhZGRQcm9maWxlSGVhZGVyKG91dCBPYmplY3QgaGVhZGVyKTsKKyAgICAg
ICAgW2V2ZW50XSB2b2lkIGFkZFByb2ZpbGVIZWFkZXIob3V0IFt0eXBlUmVmPXByb2ZpbGVyOjpI
ZWFkZXJdIE9iamVjdCBoZWFkZXIpOwogICAgICAgICBbZXZlbnRdIHZvaWQgYWRkSGVhcFNuYXBz
aG90Q2h1bmsob3V0IHVuc2lnbmVkIGxvbmcgdWlkLCBvdXQgU3RyaW5nIGNodW5rKTsKICAgICAg
ICAgW2V2ZW50XSB2b2lkIGZpbmlzaEhlYXBTbmFwc2hvdChvdXQgdW5zaWduZWQgbG9uZyB1aWQp
OwogICAgICAgICBbZXZlbnRdIHZvaWQgc2V0UmVjb3JkaW5nUHJvZmlsZShvdXQgYm9vbGVhbiBp
c1Byb2ZpbGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDYyNWY1M2RjMDA0Y2MyZGQz
MWM2NDkyZjFiOGZiYmI4OTcxNmRkNzEuLjcwNWE2NDA4ZDNjYTY0OTcxZDdlZjcxMzMyZjZlZmQ2
ODQ1OWFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKICAg
ICBtX2Zyb250ZW5kLT51cGRhdGVOZXR3b3JrU3RhdGUoaXNOb3dPbmxpbmUpOwogfQogCi12b2lk
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZXMoRXJy
b3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBhcHBsaWNhdGlvbkNhY2hlcykKK3Zv
aWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hlcyhF
cnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBhcHBsaWNhdGlvbkNhY2hlcykK
IHsKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2luc3BlY3RlZFBhZ2Ut
Pm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IDM0YWJmODEwNGM5NDAwMWVjMDRkMjBi
ZjdiNGNlZTgxNzgwNWE0ZTcuLmFkMWE5YzJlNTA4ZDkxYjE3MzA5MWIxY2E2NjU1ZGNjYjRhZWVh
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgLy8gRnJvbSBGcm9udGVuZAotICAgIHZv
aWQgZ2V0QXBwbGljYXRpb25DYWNoZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiBhcHBsaWNhdGlvbkNhY2hlcyk7CisgICAgdm9pZCBnZXRBcHBsaWNhdGlvbkNh
Y2hlcyhFcnJvclN0cmluZyogZXJyb3IsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBhcHBsaWNh
dGlvbkNhY2hlcyk7CiAKIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6UmVzb3VyY2VJbmZvTGlzdCYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUlu
Zm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CmluZGV4IGI5NjA3MWRhNmU0NmMxYmYwYjVhMTI1Nzg1MDhiNzYwMDcyOTFlOTAuLjlhZmYyMjNi
YmYzODg1OGE1YWM3MGM5MGYxZmNjMTQ5NWJiMzMzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KCkKICAgICBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlc0Zv
ck5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVzRm9yTm9kZShFcnJvclN0
cmluZyosIGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQogewog
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQobm9kZUlkKTsKICAgICBpZiAoIWVs
ZW1lbnQpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5
bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGUKICAgICAq
cmVzdWx0ID0gcmVzdWx0T2JqZWN0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0SW5saW5lU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQsIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHN0eWxlKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
SW5saW5lU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBzdHlsZSkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZv
cklkKG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGxv
bmcgbm9kZUlkLCBSZWZQdHI8CiAgICAgKnN0eWxlID0gc3R5bGVTaGVldC0+YnVpbGRPYmplY3RG
b3JTdHlsZShlbGVtZW50LT5zdHlsZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiogc3R5bGUpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21w
dXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Piogc3R5bGUpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJ
ZChub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+KiBzdHlsZQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+KiBzdHlsZVNoZWV0T2JqZWN0KQordm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVl
dElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3R5bGVTaGVldE9iamVjdCkKIHsKICAgICBJ
bnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gc3R5bGVTaGVldEZvcklk
KHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KQpAQCAtMjk2LDcg
KzI5Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0CiAgICAgICAgIGluc3BlY3RvclN0eWxl
U2hlZXQtPnJlcGFyc2VTdHlsZVNoZWV0KHRleHQpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgZnVsbFN0eWxlSWQsIGxvbmcgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQordm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxTdHlsZUlkLCBsb25nIHByb3BlcnR5SW5kZXgs
IGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsU3R5bGVJ
ZCk7CiAgICAgQVNTRVJUKCFjb21wb3VuZElkLmlzRW1wdHkoKSk7CkBAIC0zMTAsNyArMzEwLDcg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamUKICAgICAgICAgKnJlc3VsdCA9IGluc3BlY3RvclN0
eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+c3R5bGVG
b3JJZChjb21wb3VuZElkKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVBy
b3BlcnR5KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxT
dHlsZUlkLCBsb25nIHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiogcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHko
RXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQs
IGxvbmcgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogcmVzdWx0KQogewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQp
OwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtMzI0LDcgKzMyNCw3IEBA
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjCiAgICAgICAgICpyZXN1bHQgPSBpbnNwZWN0b3JTdHls
ZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGluc3BlY3RvclN0eWxlU2hlZXQtPnN0eWxlRm9y
SWQoY29tcG91bmRJZCkpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2Vs
ZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFJ1
bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVz
dWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5n
KiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxSdWxlSWQsIGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpCiB7CiAgICAgSW5z
cGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsUnVsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5k
SWQuaXNFbXB0eSgpKTsKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZQogICAgICpyZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUo
aW5zcGVjdG9yU3R5bGVTaGVldC0+cnVsZUZvcklkKGNvbXBvdW5kSWQpKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyosIGNvbnN0IGxvbmcgY29udGV4
dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyosIGNv
bnN0IGxvbmcgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKIHsKICAgICBOb2RlKiBub2RlID0gbV9kb21BZ2VudC0+
bm9kZUZvcklkKGNvbnRleHROb2RlSWQpOwogICAgIGlmICghbm9kZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNGUzZjU3YTY1NjRjODM4Y2E5
Y2IxYTI1NjM5YjQxNzJmNWM4M2JiZS4uMzA4NjJlZThkNTJhY2I4MDkwNzZkZmY3OWUwZTMzZTc4
ZjNjZmNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmgKQEAgLTYxLDE4ICs2MSwxOCBAQCBwdWJsaWM6CiAgICAgfkluc3BlY3RvckNTU0FnZW50KCk7
CiAKICAgICB2b2lkIHJlc2V0KCk7Ci0gICAgdm9pZCBnZXRTdHlsZXNGb3JOb2RlKEVycm9yU3Ry
aW5nKiBlcnJvciwgbG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7
Ci0gICAgdm9pZCBnZXRJbmxpbmVTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBsb25n
IG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogc3R5bGUpOwotICAgIHZvaWQgZ2V0Q29t
cHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBsb25nIG5vZGVJZCwgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiogc3R5bGUpOwotICAgIHZvaWQgZ2V0QWxsU3R5bGVzKEVycm9yU3Ry
aW5nKiBlcnJvciwgUmVmUHRyPEluc3BlY3RvckFycmF5Piogc3R5bGVzKTsKLSAgICB2b2lkIGdl
dFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJ
ZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIGdldFN0eWxlU2hl
ZXRUZXh0KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0
cmluZyogdXJsLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAgdm9pZCBzZXRTdHlsZVNoZWV0VGV4dChF
cnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBjb25zdCBTdHJp
bmcmIHRleHQsIGJvb2wqIHN1Y2Nlc3MpOwotICAgIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9y
U3RyaW5nKiBlcnJvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGxv
bmcgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIHRvZ2dsZVByb3BlcnR5KEVy
cm9yU3RyaW5nKiBlcnJvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQs
IGxvbmcgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpOwotICAgIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvciwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RvciwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIGFkZFJ1bGUo
RXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBsb25nIGNvbnRleHROb2RlSWQsIGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBn
ZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvciwgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiogcmVzdWx0KTsKKyAgICB2b2lkIGdldFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJp
bmcqLCBsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CisgICAg
dm9pZCBnZXRJbmxpbmVTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIHN0eWxlKTsKKyAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVG
b3JOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiBzdHlsZSk7CisgICAgdm9pZCBnZXRBbGxTdHlsZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+KiBzdHlsZXMpOworICAgIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cmVzdWx0KTsKKyAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogdXJsLCBTdHJpbmcqIHJlc3VsdCk7CisgICAg
dm9pZCBzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wqIHN1Y2Nlc3MpOworICAgIHZvaWQgc2V0
UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IHN0eWxlSWQsIGxvbmcgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92
ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CisgICAgdm9pZCB0b2dn
bGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBz
dHlsZUlkLCBsb25nIHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIHJlc3VsdCk7CisgICAgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNl
bGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKKyAgICB2b2lkIGFkZFJ1
bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBsb25nIGNvbnRleHROb2RlSWQsIGNvbnN0IFN0cmluZyYg
c2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0
U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4qIHJlc3VsdCk7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVm
UHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+ID4gSWRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBhNGVj
MjdiYzQ4NzkzMjlkMGIzMjQ5MzNhMGEzMmMwNDU2MWU5ZWI3Li5jNTE2M2IxYzNkMGQ3NThjZDNi
ZGEzY2ExYjljNzY1MWZlMzBjOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTg2OCw3ICs4NjgsNyBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpjYW5jZWxTZWFyY2goRXJyb3JTdHJpbmcqKQogICAgIG1fc2VhcmNoUmVzdWx0cy5j
bGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0
cmluZyogZXJyb3IsIGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNv
bHZlTm9kZShFcnJvclN0cmluZyogZXJyb3IsIGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQogewogICAgIE5vZGUq
IG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5vZGUpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggMzYzZjE5YzQ1ZWU0NjRh
OGFkYmUxNTFhMGE0ZmEzODQwNTY0ZGFlZi4uZWEwZDA3NTEzNzIxMTYyNmY3MDczNTUwNGZiNDk5
ZTEwZjRmZjBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRFdmVudExpc3Rl
bmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiogbGlzdGVuZXJzQXJyYXkpOwogICAgIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgYm9vbCBydW5TeW5jaHJv
bm91c2x5KTsKICAgICB2b2lkIGNhbmNlbFNlYXJjaChFcnJvclN0cmluZyopOwotICAgIHZvaWQg
cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIHJlc29s
dmVOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXAsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwogICAgIHZvaWQgcHVzaE5vZGVU
b0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVj
dElkLCBsb25nKiBub2RlSWQpOwogICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nKiBub2RlSWQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggMjM0Yjg3YjBiOGVkMWRjNzI5MzRmOGIxNWY2YjljYzZhMzY1ZDMwNi4uODk4NzA2NzNlMGYx
MjhiOWVhMTAzNTdmNTFmYWZlMTkzYTU5MmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBA
IGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3Ry
aW5nJiBicmVha3BvaW50SWQsIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZWRpdFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCogc3VjY2Vz
cywgU3RyaW5nKiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIG5ld0NhbGxGcmFtZXMp
Cit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVkaXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGJv
b2wqIHN1Y2Nlc3MsIFN0cmluZyogcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBuZXdD
YWxsRnJhbWVzKQogewogICAgIGlmICgoKnN1Y2Nlc3MgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hh
cmVkKCkuZWRpdFNjcmlwdFNvdXJjZShzb3VyY2VJRCwgbmV3Q29udGVudCwgKnJlc3VsdCkpKQog
ICAgICAgICAqbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRDYWxsRnJhbWVzKCk7CkBAIC0zMjIsMjEg
KzMyMiwyMSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRp
b25zU3RhdGUoRXJyb3JTdHJpbmcqLCBsb25nIHBhdXNlUwogICAgICpuZXdTdGF0ZSA9IFNjcmlw
dERlYnVnU2VydmVyOjpzaGFyZWQoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmlu
ZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21t
YW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQogewogICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmlu
amVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1lSWQuZ2V0KCkpOwogICAgIGlmICghaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0
ZU9uQ2FsbEZyYW1lKGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCByZXN1bHQpOworICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0
ZU9uQ2FsbEZyYW1lKGVycm9yU3RyaW5nLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0
R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmVzdWx0KTsKIH0KIAotUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMo
KQorUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3Vy
cmVudENhbGxGcmFtZXMoKQogewogICAgIGlmICghbV9wYXVzZWRTY3JpcHRTdGF0ZSkKLSAgICAg
ICAgcmV0dXJuIEluc3BlY3RvclZhbHVlOjpudWxsKCk7CisgICAgICAgIHJldHVybiBJbnNwZWN0
b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3IobV9wYXVzZWRTY3JpcHRT
dGF0ZSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclZhbHVlOjpudWxs
KCk7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgfQogICAg
IHJldHVybiBpbmplY3RlZFNjcmlwdC5jYWxsRnJhbWVzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA5ZjIyMGRlNjgx
MmRkM2RmNmI3NjNjZjc0MTZlMzljMjVhODQ2OTU2Li4xYjA4NzA5NmQ2NDQxNGQ3YWU2MzQyYTJi
YWY4MDc5OWQ3YTJlNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZDsKK2NsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3Mg
SW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKQEAgLTg2LDcgKzg3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlSmF2YVNjcmlwdEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcq
IGVycm9yLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7CiAgICAgdm9pZCBjb250aW51ZVRv
TG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlkLCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAKLSAgICB2b2lkIGVkaXRTY3JpcHRTb3Vy
Y2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJp
bmcmIG5ld0NvbnRlbnQsIGJvb2wqIHN1Y2Nlc3MsIFN0cmluZyogcmVzdWx0LCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiBuZXdDYWxsRnJhbWVzKTsKKyAgICB2b2lkIGVkaXRTY3JpcHRTb3VyY2Uo
RXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcm
IG5ld0NvbnRlbnQsIGJvb2wqIHN1Y2Nlc3MsIFN0cmluZyogcmVzdWx0LCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+KiBuZXdDYWxsRnJhbWVzKTsKICAgICB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJv
clN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc291cmNlSUQsIFN0cmluZyogc2NyaXB0U291
cmNlKTsKICAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJFdmVu
dFR5cGUgdHlwZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZGF0YSk7CiAgICAgdm9pZCBj
YW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpOwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdGVwSW50byhFcnJvclN0cmluZyogZXJyb3IpOwogICAgIHZvaWQgc3RlcE91dChF
cnJvclN0cmluZyogZXJyb3IpOwogICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShF
cnJvclN0cmluZyogZXJyb3IsIGxvbmcgcGF1c2VTdGF0ZSwgbG9uZyogbmV3U3RhdGUpOwotICAg
IHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3IsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJh
bWUoRXJyb3JTdHJpbmcqIGVycm9yLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBy
ZXN1bHQpOwogCiAgICAgY2xhc3MgTGlzdGVuZXIgewogICAgIHB1YmxpYzoKQEAgLTExMiw3ICsx
MTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbmFibGUoYm9vbCByZXN0b3JpbmdGcm9tU3Rh
dGUpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gY3VycmVudENhbGxGcmFtZXMo
KTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjdXJyZW50Q2FsbEZyYW1lcygpOwog
CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBsaW5lT2Zmc2V0LCBp
bnQgY29sdW1uT2Zmc2V0LCBTY3JpcHRXb3JsZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBmYWls
ZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGlu
dCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAppbmRleCBkYjQxNjQwZjIyYmMyYTMzMjYzMWQ4MDk3YjliZTNiOTVjZDE3NDc2Li42YTE1
ZjIwOTYzYmY1Mzc4ZTVlZDJjMDhjMjhlMjhjZGNhYzg4MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0zMTQsMTEg
KzMxNCwxMSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZQogewogICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGxvYWRlck9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yRG9jdW1lbnRMb2FkZXIobG9h
ZGVyKTsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2sgPSBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCB0
cnVlKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGNhbGxTdGFja1ZhbHVlOworICAgIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gY2FsbFN0YWNrVmFsdWU7CiAgICAgaWYgKGNhbGxTdGFjaykK
LSAgICAgICAgY2FsbFN0YWNrVmFsdWUgPSBjYWxsU3RhY2stPmJ1aWxkSW5zcGVjdG9yT2JqZWN0
KCk7CisgICAgICAgIGNhbGxTdGFja1ZhbHVlID0gY2FsbFN0YWNrLT5idWlsZEluc3BlY3RvckFy
cmF5KCk7CiAgICAgZWxzZQotICAgICAgICBjYWxsU3RhY2tWYWx1ZSA9IEluc3BlY3RvclZhbHVl
OjpudWxsKCk7CisgICAgICAgIGNhbGxTdGFja1ZhbHVlID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0
ZSgpOwogICAgIG1fZnJvbnRlbmQtPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlm
aWVyLCB1cmwuc3RyaW5nKCksIGxvYWRlck9iamVjdCwgY2FsbFN0YWNrVmFsdWUpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
CmluZGV4IGU3YTMyNWIwNDI5ZjJmZjYxNGE0MTFlMzJhMmM5MzRjMDdkNzRiMDYuLjI3MjU1MWFh
OGI1MTdiYWI2ZTM5NGQ3MDNkYTBmNGVhNmNmMWFkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC01NywzMyArNTcsMzMg
QEAgSW5zcGVjdG9yUnVudGltZUFnZW50Ojp+SW5zcGVjdG9yUnVudGltZUFnZW50KCkKIHsKIH0K
IAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQordm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBi
b29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3Vs
dCkKIHsKICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0
ZShtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKTsKICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihz
Y3JpcHRTdGF0ZSk7CiAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAg
ICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNs
dWRlQ29tbWFuZExpbmVBUEksIHJlc3VsdCk7CisgICAgICAgIGluamVjdGVkU2NyaXB0LmV2YWx1
YXRlKGVycm9yU3RyaW5nLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLCByZXN1bHQpOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVh
dGVPbihFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
Cit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGVPbihFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQogewogICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIt
PmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOwogICAgIGlmICghaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0
ZU9uKG9iamVjdElkLCBleHByZXNzaW9uLCByZXN1bHQpOworICAgICAgICBpbmplY3RlZFNjcmlw
dC5ldmFsdWF0ZU9uKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgZXhwcmVzc2lvbiwgcmVzdWx0KTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJp
bmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGJvb2wgaWdub3JlSGFz
T3duUHJvcGVydHksIGJvb2wgYWJicmV2aWF0ZSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVz
dWx0KQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGJv
b2wgaWdub3JlSGFzT3duUHJvcGVydHksIGJvb2wgYWJicmV2aWF0ZSwgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiogcmVzdWx0KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0
SWQuZ2V0KCkpOwogICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAg
ICBpbmplY3RlZFNjcmlwdC5nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBpZ25vcmVIYXNPd25Qcm9w
ZXJ0eSwgYWJicmV2aWF0ZSwgcmVzdWx0KTsKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0UHJv
cGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJy
ZXZpYXRlLCByZXN1bHQpOwogfQogCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0UHJv
cGVydHlWYWx1ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElk
LmdldCgpKTsKICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAg
KmVycm9yU3RyaW5nID0gaW5qZWN0ZWRTY3JpcHQuc2V0UHJvcGVydHlWYWx1ZShvYmplY3RJZCwg
cHJvcGVydHlOYW1lLCBleHByZXNzaW9uKTsKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuc2V0UHJv
cGVydHlWYWx1ZShlcnJvclN0cmluZywgb2JqZWN0SWQsIHByb3BlcnR5TmFtZSwgZXhwcmVzc2lv
bik7CiAgICAgZWxzZQogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gaW5qZWN0ZWQgc2NyaXB0
IGZvdW5kLiI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmgKaW5kZXggYWQzY2U1YjNjYzJiYzZmZWNkM2EwYWY4NmJmY2NhMzU2ZTNmZmZl
NS4uYjYyZjU4OThjMDdjNjI5MmU5MzBhMTEzYTBlMTlhYjQ0NzNhNDRlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtMzksNiAr
MzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNz
IEluc3BlY3RvclZhbHVlOwogY2xhc3MgUGFnZTsKQEAgLTUyLDEwICs1MywxMCBAQCBwdWJsaWM6
CiAgICAgfkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpOwogCiAgICAgLy8gUGFydCBvZiB0aGUgcHJv
dG9jb2wuCi0gICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBldmFsdWF0
ZU9uKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7
CisgICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEks
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOworICAgIHZvaWQgZXZhbHVhdGVPbihF
cnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAg
ICB2b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gb2JqZWN0SWQpOwotICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9w
ZXJ0eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwor
ICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYm9vbCBhYmJyZXZp
YXRlLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpOwogICAgIHZvaWQgc2V0UHJvcGVy
dHlWYWx1ZShFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJ
ZCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbik7
CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcqLCBsb25nIGluamVjdGVk
U2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCmluZGV4IDcwMjI5ZTU1OTgzMmVmNGMzYmQ2
NWY3NjE5NTVlY2ExYmFkZTJkODUuLjA2YjVlMzBlN2JhYjgwNzdlYWI0ZGRmNGJhOGViOTcyNTAy
ZGI1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3Bw
CkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgU2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNjcmlwdENh
bGxTdGFjayogbykgY29uc3QKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1QYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5PiBTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkg
Y29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJ
bnNwZWN0b3JBcnJheSgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBmcmFt
ZXMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2ZyYW1lcy5zaXplKCk7IGkrKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suaAppbmRleCA0Y2IxNTJmZDM3MWVjMjFmNzEwYzRkOGU3OWZiMDgwY2ZhOWYxNmU3
Li5kZjY3MDA2NDZkYjQ5MDNjODZkZGNiMjdkYjExOGFjODY2MmI2NDg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0VxdWFsKFNjcmlwdENh
bGxTdGFjayopIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkSW5z
cGVjdG9yT2JqZWN0KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYnVp
bGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNjcmlwdENhbGxTdGFj
ayhWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAppbmRleCBkZDdmMmJlNTExZWI5MjRiM2Fk
NWMzMDg5ZDJjNTdjMDFjMjcxYWE5Li42ZjYxZmRiMWI4M2JlODExNzkzOTRkNTdkMTU1NzBhZTIz
NWUyNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKGRvdWJsZSBzdAog
CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9IGNyZWF0ZVNjcmlwdENh
bGxTdGFjayg1LCB0cnVlKTsKICAgICBpZiAoc3RhY2tUcmFjZSAmJiBzdGFja1RyYWNlLT5zaXpl
KCkpCi0gICAgICAgIHJlY29yZC0+c2V0QXJyYXkoInN0YWNrVHJhY2UiLCBzdGFja1RyYWNlLT5i
dWlsZEluc3BlY3Rvck9iamVjdCgpKTsKKyAgICAgICAgcmVjb3JkLT5zZXRBcnJheSgic3RhY2tU
cmFjZSIsIHN0YWNrVHJhY2UtPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7CiAgICAgcmV0dXJuIHJl
Y29yZC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDg0OTJiOWUzN2JhYzVkODgwOTk1YmNk
ZWQxMGUwMGJiMWE3NDVmZTIuLjJlZmQ1YzAzZjQ1NjJiMDNkMjUxM2E2MDJhOGY4ODdlYWYwYTY2
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29y
a01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3
b3JrTWFuYWdlci5qcwpAQCAtMzc0LDcgKzM3NCw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrRGlz
cGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJlc291cmNlLmxvYWRlciA9IGxvYWRlcjsK
ICAgICAgICAgaWYgKGxvYWRlcikKICAgICAgICAgICAgIHJlc291cmNlLmRvY3VtZW50VVJMID0g
bG9hZGVyLnVybDsKLSAgICAgICAgcmVzb3VyY2Uuc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2U7Cisg
ICAgICAgIHJlc291cmNlLnN0YWNrVHJhY2UgPSBzdGFja1RyYWNlLmxlbmd0aCA/IHN0YWNrVHJh
Y2UgOiBudWxsOwogICAgICAgICByZXR1cm4gcmVzb3VyY2U7CiAgICAgfQogfQo=
</data>
<flag name="review"
          id="78279"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>