<?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>34848</bug_id>
          
          <creation_ts>2010-02-11 08:44:22 -0800</creation_ts>
          <short_desc>Web Inspector: Move JSC-specific Profile and ProfileNode wrappers to bindings/js</short_desc>
          <delta_ts>2010-02-16 05:21:50 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Mikhail Naganov">mnaganov</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>189704</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-11 08:44:22 -0800</bug_when>
    <thetext>Currently to make profiles accessible from Inspector and Console hand-written wrappers are used (WebCore/inspector/JavaScriptProfile*). I think it makes more sense to use generated bindings instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189706</commentid>
    <comment_count>1</comment_count>
      <attachid>48569</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-11 08:48:07 -0800</bug_when>
    <thetext>Created attachment 48569
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190013</commentid>
    <comment_count>2</comment_count>
      <attachid>48636</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-12 04:35:49 -0800</bug_when>
    <thetext>Created attachment 48636
updated patch with a small fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190044</commentid>
    <comment_count>3</comment_count>
      <attachid>48644</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-12 07:17:57 -0800</bug_when>
    <thetext>Created attachment 48644
instead of replacing, just move those wrappers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190045</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-12 07:21:42 -0800</bug_when>
    <thetext>Attachment 48644 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Skipping input &apos;WebCore/inspector/JavaScriptProfileNode.h&apos;: Can&apos;t open for reading
WebCore/bindings/js/JavaScriptProfileNode.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/js/JavaScriptProfileNode.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/bindings/js/JavaScriptProfile.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Skipping input &apos;WebCore/inspector/JavaScriptProfileNode.cpp&apos;: Can&apos;t open for reading
Skipping input &apos;WebCore/inspector/JavaScriptProfile.h&apos;: Can&apos;t open for reading
Skipping input &apos;WebCore/inspector/JavaScriptProfile.cpp&apos;: Can&apos;t open for reading
WebCore/bindings/js/JavaScriptProfile.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/bindings/js/JavaScriptProfileNode.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/js/JavaScriptProfileNode.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 6


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190061</commentid>
    <comment_count>5</comment_count>
      <attachid>48644</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-12 08:26:03 -0800</bug_when>
    <thetext>Comment on attachment 48644
instead of replacing, just move those wrappers

I think you should merge JavaScriptProfile into ScriptProfile. JavaScriptNode also should be simply ScriptNode, both encapsulating JSC specifics. There is no more need in typedefs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190415</commentid>
    <comment_count>6</comment_count>
      <attachid>48745</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-15 03:31:04 -0800</bug_when>
    <thetext>Created attachment 48745
fixed style issues in the last patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190465</commentid>
    <comment_count>7</comment_count>
      <attachid>48745</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-15 08:21:50 -0800</bug_when>
    <thetext>Comment on attachment 48745
fixed style issues in the last patch

Please make sure you land it as svn move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190674</commentid>
    <comment_count>8</comment_count>
      <attachid>48808</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-16 05:20:34 -0800</bug_when>
    <thetext>Created attachment 48808
committed revision -- no changes to JSBindingsAllInOne.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190676</commentid>
    <comment_count>9</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-16 05:21:50 -0800</bug_when>
    <thetext>Manually committed r54820: http://trac.webkit.org/changeset/54820</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48569</attachid>
            <date>2010-02-11 08:48:07 -0800</date>
            <delta_ts>2010-02-12 04:35:49 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>idl-for-profile-patch</filename>
            <type>text/plain</type>
            <size>56872</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGIxMDMwOS4uMzFiMGIyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wMi0xMSAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgaGFuZC13cml0dGVuIFByb2ZpbGUgYW5kIFBy
b2ZpbGVOb2RlIHdyYXBwZXJzIHdpdGggYmluZGluZ3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0ODQ4CisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5w
cm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDb25zb2xl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ29uc29sZTo6cHJvZmlsZXMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkpTU2NyaXB0UHJvZmlsZU5vZGU6OmNhbGxVSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNTY3JpcHRQcm9maWxlTm9kZTo6Y2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmdldFByb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmg6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vYW5kcm9pZC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwOgorCiAyMDEwLTAyLTExICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggMTdkOGFkOS4uYTlkNTEzMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5j
cHAKQEAgLTE5NCw2ICsxOTQsOCBAQAogI2luY2x1ZGUgIkpTUmVjdC5jcHAiCiAjaW5jbHVkZSAi
SlNSR0JDb2xvci5jcHAiCiAjaW5jbHVkZSAiSlNTY3JlZW4uY3BwIgorI2luY2x1ZGUgIkpTU2Ny
aXB0UHJvZmlsZS5jcHAiCisjaW5jbHVkZSAiSlNTY3JpcHRQcm9maWxlTm9kZS5jcHAiCiAjaW5j
bHVkZSAiSlNTaGFyZWRXb3JrZXIuY3BwIgogI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29udGV4
dC5jcHAiCiAjaW5jbHVkZSAiSlNTUUxFcnJvci5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNmQ4
YTZkNS4uYzFiOGJiNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjM4LDYgKzIzOCw4IEBAIERPTV9D
TEFTU0VTID0gXAogICAgIFJhbmdlIFwKICAgICBSYW5nZUV4Y2VwdGlvbiBcCiAgICAgUmVjdCBc
CisgICAgU2NyaXB0UHJvZmlsZSBcCisgICAgU2NyaXB0UHJvZmlsZU5vZGUgXAogICAgIFNoYXJl
ZFdvcmtlciBcCiAgICAgU2hhcmVkV29ya2VyQ29udGV4dCBcCiAgICAgU1FMRXJyb3IgXApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
aW5kZXggZDY0N2FiYS4uMzBmNTgyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNjIsNiArMjYyLDggQEAgSURMX0JJ
TkRJTkdTICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIFwK
IAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbCBcCiAJV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0UHJvZmlsZS5pZGwgXAorCVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlk
bCBcCiAJV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAogCVdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIFwKIAlXZWJDb3JlL3BhZ2UvQmFy
SW5mby5pZGwgXApAQCAtNDQ5LDYgKzQ1MSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNT
dG9yYWdlQ3VzdG9tLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9t
LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBc
CkBAIC00ODcsNiArNDkwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2Jq
ZWN0LmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oIFwKKwlXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVOb2RlLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0UHJvZmlsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVy
LmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oIFwKQEAgLTEyMjQs
MTAgKzEyMjgsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaW5zcGVjdG9yL0ph
dmFTY3JpcHREZWJ1Z0xpc3RlbmVyLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZl
ci5oIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAgXAotCVdlYkNv
cmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmggXAotCVdlYkNvcmUvaW5zcGVjdG9yL0ph
dmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgXAotCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQ
cm9maWxlTm9kZS5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rvcnku
Y3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCBcCiAJV2Vi
Q29yZS9sb2FkZXIvQ2FjaGUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzk0MjNhNy4uMDRjOTM0NyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE4
Nyw2ICsxODcsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlk
bCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCcsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRsJywKICAgICAgICAgICAgICdsb2FkZXIvYXBwY2FjaGUv
RE9NQXBwbGljYXRpb25DYWNoZS5pZGwnLAogICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmlkbCcsCiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuaWRsJywKQEAgLTU4MSw2ICs1ODMsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNT
Y3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1N0b3JhZ2VDdXN0b20uY3BwJywKQEAgLTE2MTAsMTAgKzE2MTMsNiBAQAogICAgICAgICAgICAg
J2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0phdmFTY3JpcHREZWJ1Z1NlcnZlci5oJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNj
cmlwdFByb2ZpbGUuY3BwJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2Zp
bGUuaCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAn
LAotICAgICAgICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCcsCiAgICAgICAgICAgICAnbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGM0OTIzNmYuLjQ1NmY0MWQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwpAQCAtMzE2LDYgKzMxNiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGJpbmRpbmdzL2pzL0pTTm9k
ZUl0ZXJhdG9yQ3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5j
cHAgXAogICAgIGJpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwIFwKKyAgICBiaW5k
aW5ncy9qcy9KU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMv
SlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlz
dEN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAgXApAQCAtMTAz
Myw2ICsxMDM0LDkgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RXZlbnRM
aXN0ZW5lci5oIFwKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBcCiAgICAg
YmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggXAorICAgIGJpbmRpbmdzL2pzL1NjcmlwdFByb2Zp
bGUuaCBcCisgICAgYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZU5vZGUuaCBcCisgICAgYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZXIuaCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29k
ZS5oIFwKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VQcm92aWRlci5oIFwKICAgICBiaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oIFwKQEAgLTEzNjksOCArMTM3Myw2IEBAIEhFQURFUlMgKz0g
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggXAogICAgIGluc3BlY3Rv
ci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggXAogICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdT
ZXJ2ZXIuaCBcCi0gICAgaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmggXAotICAgIGluc3Bl
Y3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBcCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oIFwKICAgICBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmggXAogICAgIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIFwKQEAgLTI2
MjQsMTAgKzI2MjYsOSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSPTEpIHsKICAgICBTT1VSQ0VT
ICs9IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNw
cCBcCisgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcCBcCiAgICAgICAgIGlu
c3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCiAgICAgICAgIGluc3BlY3Rvci9KYXZh
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKLSAgICAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9m
aWxlLmNwcCBcCi0gICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCiB9
CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM9MSkg
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggODg1MzA0YS4uYzc1OWIx
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zODc1Miw2ICszODc1
Miw1OCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTU2NyaXB0UHJvZmlsZU5v
ZGVDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJ
CQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19D
YWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQor
CQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KQEAgLTQyNjY5LDIyICs0MjcyMSw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJv
ZmlsZS5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcSmF2YVNjcmlwdFByb2ZpbGUuaCINCi0JCQkJPg0KLQkJCTwvRmls
ZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0
UHJvZmlsZU5vZGUuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEphdmFTY3JpcHRQcm9maWxlTm9kZS5oIg0KLQkJCQk+
DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9y
XFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmY2IxNGU3Li45MTllNjk5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTI4LDEw
ICs1MjgsNiBAQAogCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4
MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QjBFOTczMzA4
MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1NzBFOTczMzA4MDAyNjZFMDcgLyogSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgKi87IH07CiAJCTFDODFCOTVDMEU5NzMzMDgwMDI2NkUwNyAv
KiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQzgxQjlG
RjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjlGQjBFOTczM0NCMDAyNjZF
MDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggKi87IH07Ci0JCTFDODFCQTAwMEU5NzMzQ0Iw
MDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5RkMwRTk3MzNDQjAwMjY2RTA3IC8qIEph
dmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgKi87IH07Ci0JCTFDODFCQTAxMEU5NzMzQ0IwMDI2NkUw
NyAvKiBKYXZhU2NyaXB0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUM4MUI5RkQwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9m
aWxlLmggKi87IH07Ci0JCTFDODFCQTAyMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJv
ZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzgxQjlGRTBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwICovOyB9Owog
CQkxQzgxQkEwOTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQkEwMzBFOTcz
NDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJCTFDODFCQTBB
MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQkEwNDBFOTczNDgzMDAyNjZFMDcg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQkxQzgxQkEwQzBFOTczNDgzMDAyNjZF
MDcgLyogSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCQTA2MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2Ny
aXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0yNDU2LDggKzI0NTIsMTQgQEAKIAkJOTdERDREODYwRkRGNEQ2RTAwRUNG
OUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICov
OyB9OwogCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODUwRkRGNEQ2RTAw
RUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsKIAkJOTdFRjdERkUxMDdFNTVCNzAwRDdDNDlD
IC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3RUY3REZEMTA3RTU1QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250
cm9sbGVyQmFzZS5jcHAgKi87IH07CisJCTlGMkNDNzE1MTEyNDRBNjgwMEJBQUM5QyAvKiBKU1Nj
cmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUYyQ0M3MTExMTI0NEE2ODAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmlsZS5jcHAgKi87
IH07CisJCTlGMkNDNzE2MTEyNDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGMkNDNzEyMTEyNDRB
NjgwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2ZpbGUuaCAqLzsgfTsKKwkJOUYyQ0M3MTcxMTI0NEE2
ODAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUYyQ0M3MTMxMTI0NEE2ODAwQkFBQzlDIC8qIEpT
U2NyaXB0UHJvZmlsZU5vZGUuY3BwICovOyB9OworCQk5RjJDQzcxODExMjQ0QTY4MDBCQUFDOUMg
LyogSlNTY3JpcHRQcm9maWxlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUYyQ0M3MTQxMTI0NEE2ODAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmls
ZU5vZGUuaCAqLzsgfTsKKwkJOUYyQ0M3MkMxMTI0NTI1MzAwQkFBQzlDIC8qIEpTU2NyaXB0UHJv
ZmlsZU5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUYyQ0M3MkIxMTI0NTI1MzAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmlsZU5vZGVD
dXN0b20uY3BwICovOyB9OwogCQk5RjZGQzE5NjExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUY2RkMxOTQxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLzsg
fTsKIAkJOUY2RkMxOTcxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjZGQzE5NTExMjJF
ODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5RjZGQzFEMDExMjMxQ0ZBMDBFODAxOTYgLyog
U2NyaXB0UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlGNkZDMUNGMTEyMzFDRkEwMEU4MDE5NiAvKiBTY3JpcHRQcm9maWxlTm9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlGNzIz
MDRGMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjcyMzA0QzExMTg0QjQxMDBBRDAxMjYgLyog
U2NyaXB0UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTlGNzIzMDUwMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjcyMzA0RDEx
MTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuY3BwICovOyB9OwogCQk5RjcyMzA1MTEx
MTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNzIzMDRFMTExODRCNDEwMEFEMDEyNiAvKiBTY3Jp
cHRQcm9maWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC01ODQyLDEwICs1ODQ0LDYgQEAKIAkJMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8q
IEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU5MEU5NzMzMDgwMDI2NkUwNyAvKiBmcm9udC1lbmQg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7
IHBhdGggPSAiZnJvbnQtZW5kIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4MUI5
RkIwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4MUI5RkMwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3Jp
cHRQcm9maWxlTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
YXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
QzgxQjlGRDBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFByb2ZpbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUM4MUI5RkUwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQ
cm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFTY3Jp
cHRQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUJBMDMwRTk3
MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDODFCQTA0MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRD
YWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUJBMDUwRTk3MzQ4
MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzc5OCw4ICs3Nzk2LDE2IEBACiAJCTk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTU0F1ZGl0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RENEQ4NTBGREY0RDZFMDBF
Q0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
U1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RUY3REZEMTA3RTU1
QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTlGMkNDNzExMTEyNDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFBy
b2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTY3JpcHRQ
cm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUYyQ0M3MTIxMTI0NEE2
ODAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1NjcmlwdFByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OUYyQ0M3MTMxMTI0NEE2ODAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTY3JpcHRQcm9maWxlTm9kZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGMkNDNzE0MTEyNDRBNjgwMEJBQUM5QyAv
KiBKU1NjcmlwdFByb2ZpbGVOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU2NyaXB0UHJvZmlsZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUYy
Q0M3MkIxMTI0NTI1MzAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTY3JpcHRQcm9maWxlTm9kZUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNkZDMTk0MTEyMkU4MkEw
MEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlGNkZDMTk1MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjZGQzFBNzExMjMwRjg2MDBFODAxOTYgLyog
U2NyaXB0UHJvZmlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2NyaXB0UHJvZmlsZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGNkZDMUE4MTEyMzBGODYwMEU4MDE5
NiAvKiBTY3JpcHRQcm9maWxlTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2NyaXB0
UHJvZmlsZU5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjZGQzFDRjEx
MjMxQ0ZBMDBFODAxOTYgLyogU2NyaXB0UHJvZmlsZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0UHJvZmlsZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUY3MjMwNEMxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0UHJvZmlsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5RjcyMzA0RDExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJv
ZmlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0UHJv
ZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjcyMzA0RTExMTg0QjQx
MDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0UHJvZmlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
NjM0LDEwICsxMDY0MCw4IEBACiAJCQkJMUM4MUJBMDYwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8sCiAJCQkJMUM4MUJBMDcwRTk3MzQ4MzAwMjY2RTA3IC8q
IEphdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8sCiAJCQkJMUM4MUJBMDgwRTk3MzQ4MzAwMjY2
RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5oICovLAotCQkJCTFDODFCOUZFMEU5NzMzQ0Iw
MDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgKi8sCi0JCQkJMUM4MUI5RkQwRTk3MzND
QjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmggKi8sCi0JCQkJMUM4MUI5RkMwRTk3MzND
QjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgKi8sCi0JCQkJMUM4MUI5RkIw
RTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oICovLAorCQkJCTlGNkZD
MUE3MTEyMzBGODYwMEU4MDE5NiAvKiBTY3JpcHRQcm9maWxlLmlkbCAqLywKKwkJCQk5RjZGQzFB
ODExMjMwRjg2MDBFODAxOTYgLyogU2NyaXB0UHJvZmlsZU5vZGUuaWRsICovLAogCQkJCUJDQzY0
RjVGMERDRkI4NEUwMDgxRUYzQiAvKiBsb2NhbGl6ZWRTdHJpbmdzLmpzICovLAogCQkJCTc1NTND
RkU3MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwICovLAogCQkJ
CTc1NTNDRkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCAqLywK
QEAgLTEzNjkwLDYgKzEzNjk0LDEwIEBACiAJCQkJNjVERjMxRUMwOUQxQ0M2MDAwMEJFMzI1IC8q
IEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCiAJCQkJRTRCNDIzODUwQ0JGQjczQzAwQUYy
RUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5jcHAgKi8sCiAJCQkJRTRCNDIzODYwQ0JGQjczQzAwQUYy
RUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5oICovLAorCQkJCTlGMkNDNzExMTEyNDRBNjgwMEJBQUM5
QyAvKiBKU1NjcmlwdFByb2ZpbGUuY3BwICovLAorCQkJCTlGMkNDNzEyMTEyNDRBNjgwMEJBQUM5
QyAvKiBKU1NjcmlwdFByb2ZpbGUuaCAqLywKKwkJCQk5RjJDQzcxMzExMjQ0QTY4MDBCQUFDOUMg
LyogSlNTY3JpcHRQcm9maWxlTm9kZS5jcHAgKi8sCisJCQkJOUYyQ0M3MTQxMTI0NEE2ODAwQkFB
QzlDIC8qIEpTU2NyaXB0UHJvZmlsZU5vZGUuaCAqLywKIAkJCQk2NURGMzFFRjA5RDFDQzYwMDAw
QkUzMjUgLyogSlNUZXh0LmNwcCAqLywKIAkJCQk2NURGMzFGMDA5RDFDQzYwMDAwQkUzMjUgLyog
SlNUZXh0LmggKi8sCiAJCQkpOwpAQCAtMTQ2NDMsNiArMTQ2NTEsNyBAQAogCQkJCTQxRjA2NkUz
MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuY3BwICovLAogCQkJCTQxRjA2NkUyMEY2
NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuaCAqLywKIAkJCQk5RjcyMzA0QzExMTg0QjQx
MDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oICovLAorCQkJCTlGNkZDMUNGMTEyMzFDRkEwMEU4
MDE5NiAvKiBTY3JpcHRQcm9maWxlTm9kZS5oICovLAogCQkJCTlGNzIzMDREMTExODRCNDEwMEFE
MDEyNiAvKiBTY3JpcHRQcm9maWxlci5jcHAgKi8sCiAJCQkJOUY3MjMwNEUxMTE4NEI0MTAwQUQw
MTI2IC8qIFNjcmlwdFByb2ZpbGVyLmggKi8sCiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYy
IC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLywKQEAgLTE0Nzk3LDYgKzE0ODA2LDcgQEAKIAkJCQk1
MTg5RjAxNzEwQjM3ODEzMDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywK
IAkJCQk1MURDRTgwMTBDQUM5RjFDMDA0ODgzNTggLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcCAqLywKIAkJCQkxQUQyMzE2RDBDRDI2OUU3MDBDMUYxOTQgLyogSlNTUUxUcmFuc2Fj
dGlvbkN1c3RvbS5jcHAgKi8sCisJCQkJOUYyQ0M3MkIxMTI0NTI1MzAwQkFBQzlDIC8qIEpTU2Ny
aXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwICovLAogCQkJCTUxRDBDNTE1MERBQTkwQjcwMDNCMzgz
MSAvKiBKU1N0b3JhZ2VDdXN0b20uY3BwICovLAogCQkJCUJDOThBMjdDMEMwQzk5NTAwMDRCRUJG
NyAvKiBKU1N0eWxlU2hlZXRDdXN0b20uY3BwICovLAogCQkJCUE4NEVCRDc3MENCOEM4OTIwMDA3
OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCAqLywKQEAgLTE3MjkxLDggKzE3MzAx
LDYgQEAKIAkJCQkxQzgxQkEwQTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUJBMEMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQkEwRTBFOTczNDgz
MDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkx
QzgxQkEwMTBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTFDODFCOUZGMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5QkMzOTNGMTEwNTRBMTMwMEZEODVEQiAvKiBKYXZh
U3RyaW5nSlNDLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQwNDBEN0UyQjgyMDA3QzM5ODMg
Lyogam5pX2pzb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTEzOTUzQjExMDc1ODQ1MDA4
M0VDNTUgLyogSk5JQnJpZGdlLmggaW4gSGVhZGVycyAqLywKQEAgLTE4NTE1LDYgKzE4NTIzLDkg
QEAKIAkJCQk5RjcyMzA0RjExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOUY3MjMwNTExMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjZGQzE5NzExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0
RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTlGNkZDMUQwMTEyMzFDRkEwMEU4MDE5
NiAvKiBTY3JpcHRQcm9maWxlTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUYyQ0M3MTYxMTI0
NEE2ODAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUYy
Q0M3MTgxMTI0NEE2ODAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMTk0ODAsOCArMTk0OTEsNiBAQAogCQkJCTU5QTlFN0IwMTEwNDc1ODgwMERGQjRD
MSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMDkwRTk3
MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUM4MUJBMEQwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkxQzgxQkEwMjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlw
dFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM4MUJBMDAwRTk3MzNDQjAwMjY2RTA3
IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQw
MzBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2pzb2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE1NjlEMDUwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9vYmpjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTkxMzk1M0QxMTA3NTg0RTAwODNFQzU1IC8qIEpOSUJyaWRnZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTIwNjk1LDYgKzIwNzA0LDkgQEAKIAkJCQk5RjcyMzA1MDExMTg0QjQxMDBBRDAxMjYg
LyogU2NyaXB0UHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUY2RkMxOTYxMTIyRTgy
QTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2
RkYxN0UzMTEyMzU2NzMwMDFENjFCNSAvKiBQbHVnaW5WaWV3Tm9uZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk5RjJDQzcxNTExMjQ0QTY4MDBCQUFDOUMgLyogSlNTY3JpcHRQcm9maWxlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTlGMkNDNzE3MTEyNDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFBy
b2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlGMkNDNzJDMTEyNDUyNTMwMEJBQUM5
QyAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDVhMDgyMGIuLjNjNDUz
MDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTEx
Myw2ICsxMTMsNyBAQAogI2luY2x1ZGUgIkpTU1ZHTWF0cml4Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1NWR1BhdGhTZWdDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTU1ZHUGF0aFNlZ0xpc3RDdXN0
b20uY3BwIgorI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIgogI2luY2x1ZGUgIkpTU2hhcmVkV29y
a2VyQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1N0b3JhZ2VDdXN0b20uY3BwIgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCmluZGV4IGI2MzFjZGQuLmEwODc2NWIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKQEAgLTI4LDggKzI4LDkgQEAKICNp
bmNsdWRlICJKU0NvbnNvbGUuaCIKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKLSNpbmNsdWRlICJK
YXZhU2NyaXB0UHJvZmlsZS5oIgorI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1
ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNs
dWRlIDxydW50aW1lL0pTQXJyYXkuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTM4LDE2
ICszOSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEpTQzo6UHJvZmlsZT4gPiBQcm9maWxl
c0FycmF5OwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFNjcmlwdFByb2ZpbGU+ID4gUHJvZmlsZXNB
cnJheTsKIAogSlNWYWx1ZSBKU0NvbnNvbGU6OnByb2ZpbGVzKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKIHsKICAgICBjb25zdCBQcm9maWxlc0FycmF5JiBwcm9maWxlcyA9IGltcGwoKS0+cHJvZmls
ZXMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwogCisgICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBQcm9maWxlc0FycmF5Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBwcm9maWxlcy5lbmQoKTsKICAgICBmb3IgKFByb2ZpbGVzQXJyYXk6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBwcm9maWxlcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQot
ICAgICAgICBsaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGl0ZXItPmdldCgpKSk7CisgICAgICAgIGxp
c3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpdGVyLT5nZXQoKSkpOwogCiAgICAg
cmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIGxpc3QpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uODVlYjk3NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGVO
b2RlLmgiCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNpbmNsdWRlIDxwcm9m
aWxlci9Qcm9maWxlTm9kZS5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXku
aD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKK0pTVmFsdWUgSlNTY3JpcHRQcm9maWxlTm9k
ZTo6Y2FsbFVJRChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihleGVjLCBpbXBsKCktPmNhbGxJZGVudGlmaWVyKCkuaGFzaCgpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+ID4g
UHJvZmlsZU5vZGVzTGlzdDsKKworSlNWYWx1ZSBKU1NjcmlwdFByb2ZpbGVOb2RlOjpjaGlsZHJl
bihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgY29uc3QgUHJvZmlsZU5vZGVzTGlzdCYg
Y2hpbGRyZW4gPSBpbXBsKCktPmNoaWxkcmVuKCk7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
bGlzdDsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAg
UHJvZmlsZU5vZGVzTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hpbGRyZW4uZW5kKCk7Cisg
ICAgZm9yIChQcm9maWxlTm9kZXNMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gY2hpbGRyZW4u
YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgbGlzdC5hcHBlbmQodG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIGl0ZXItPmdldCgpKSk7CisKKyAgICByZXR1cm4gY29uc3RydWN0
QXJyYXkoZXhlYywgbGlzdCk7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVOb2RlLmggYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYjJlZGNiZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0UHJvZmlsZU5vZGUuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgU2NyaXB0UHJvZmlsZU5vZGVfaAorI2RlZmluZSBTY3JpcHRQcm9maWxlTm9kZV9oCisK
KyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNpbmNsdWRlIDxwcm9maWxlci9Qcm9m
aWxlTm9kZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgSlNDOjpQcm9maWxl
Tm9kZSBTY3JpcHRQcm9maWxlTm9kZTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNlbmRpZiAvLyBTY3JpcHRQcm9m
aWxlTm9kZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCA5NGZjMmI4Li40NmViMzM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTIxMiwxMiArMjEyLDMyIEBAIHN1YiBBZGRJbmNsdWRlc0ZvclNW
R0FuaW1hdGVkVHlwZQogICAgIH0KIH0KIAorc3ViIElzU2NyaXB0UHJvZmlsZVR5cGUKK3sKKyAg
ICBteSAkdHlwZSA9IHNoaWZ0OworICAgIHJldHVybiAxIGlmICgkdHlwZSBlcSAiU2NyaXB0UHJv
ZmlsZSIgb3IgJHR5cGUgZXEgIlNjcmlwdFByb2ZpbGVOb2RlIik7CisgICAgcmV0dXJuIDA7Cit9
CisKK3N1YiBBZGRUeXBlZGVmRm9yU2NyaXB0UHJvZmlsZVR5cGUKK3sKKyAgICBteSAkdHlwZSA9
IHNoaWZ0OworICAgIChteSAkanNjVHlwZSA9ICR0eXBlKSA9fiBzL1NjcmlwdC8vOworCisgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgInR5cGVkZWYgSlNDOjokanNjVHlwZSAkdHlwZTtcblxuIik7
Cit9CisKIHN1YiBBZGRDbGFzc0ZvcndhcmRJZk5lZWRlZAogewogICAgIG15ICRpbXBsQ2xhc3NO
YW1lID0gc2hpZnQ7CiAKICAgICAjIFNWR0FuaW1hdGVkTGVuZ3RoL051bWJlci9ldGMuIGFyZSB0
eXBlZGVmcyB0byBTVkdBbmltYXRlZFRlbXBsYXRlLCBzbyBkb24ndCB1c2UgY2xhc3MgZm9yd2Fy
ZHMgZm9yIHRoZW0hCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRpbXBsQ2xhc3NO
YW1lO1xuXG4iKSB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRpbXBs
Q2xhc3NOYW1lKTsKKyAgICB1bmxlc3MgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlw
ZSgkaW1wbENsYXNzTmFtZSkgb3IgSXNTY3JpcHRQcm9maWxlVHlwZSgkaW1wbENsYXNzTmFtZSkp
IHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRpbXBsQ2xhc3NOYW1lO1xu
XG4iKTsKKyAgICAjIFNjcmlwdFByb2ZpbGUgYW5kIFNjcmlwdFByb2ZpbGVOb2RlIGFyZSB0eXBl
ZGVmcyB0byBKU0M6OlByb2ZpbGUgYW5kIEpTQzo6UHJvZmlsZU5vZGUuCisgICAgfSBlbHNpZiAo
SXNTY3JpcHRQcm9maWxlVHlwZSgkaW1wbENsYXNzTmFtZSkpIHsKKyAgICAgICAgQWRkVHlwZWRl
ZkZvclNjcmlwdFByb2ZpbGVUeXBlKCRpbXBsQ2xhc3NOYW1lKTsKKyAgICB9CiB9CiAKIHN1YiBJ
c1NWR1R5cGVOZWVkaW5nQ29udGV4dFBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCAzZDBiYTllLi44NmM1ZDNmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNjQsNyArNjQsNiBAQAogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kSG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgotI2luY2x1ZGUgIkphdmFTY3Jp
cHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tl
ci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC05OSw2ICs5OCw3IEBACiAKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikgJiYgVVNFKEpTQykKICNpbmNsdWRlICJKU0phdmFTY3JpcHRD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJKYXZh
U2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdERlYnVnU2VydmVyLmgiCiAK
QEAgLTEzOTYsOCArMTM5NiwxMSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2Zp
bGUobG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVpZCkKICAgICAgICAgcmV0dXJuOwogICAgIFByb2Zp
bGVzTWFwOjppdGVyYXRvciBpdCA9IG1fcHJvZmlsZXMuZmluZCh1aWQpOwogI2lmIFVTRShKU0Mp
Ci0gICAgaWYgKGl0ICE9IG1fcHJvZmlsZXMuZW5kKCkpCi0gICAgICAgIG1fZnJvbnRlbmQtPmRp
ZEdldFByb2ZpbGUoY2FsbElkLCB0b0pTKG1fZnJvbnRlbmRTY3JpcHRTdGF0ZSwgaXQtPnNlY29u
ZC5nZXQoKSkpOworICAgIGlmIChpdCAhPSBtX3Byb2ZpbGVzLmVuZCgpKSB7CisgICAgICAgIEph
dmFTY3JpcHRDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5jdXJy
ZW50Q2FsbEZyYW1lKCk7CisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNhbGxGcmFtZS0+c2NvcGVDaGFpbigp
LT5nbG9iYWxPYmplY3QpOworICAgICAgICBtX2Zyb250ZW5kLT5kaWRHZXRQcm9maWxlKGNhbGxJ
ZCwgdG9KUyhtX2Zyb250ZW5kU2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgaXQtPnNlY29uZC5n
ZXQoKSkpOworICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJv
ZmlsZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMDNmMGIuLjAwMDAwMDAK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSmF2YVNjcmlwdFByb2Zp
bGUuaCIKLQotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBVU0UoSlNDKQotCi0j
aW5jbHVkZSAiSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmgiCi0jaW5jbHVkZSA8cHJvZmlsZXIvUHJv
ZmlsZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
U3RyaW5nUmVmLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4K
LSNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotCi11c2luZyBuYW1lc3BhY2UgSlND
OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIENhY2hlCi0KLXR5cGVkZWYgSGFzaE1hcDxQ
cm9maWxlKiwgSlNPYmplY3QqPiBQcm9maWxlTWFwOwotCi1zdGF0aWMgUHJvZmlsZU1hcCYgcHJv
ZmlsZUNhY2hlKCkKLXsgCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChQcm9maWxlTWFwLCBzdGF0
aWNQcm9maWxlcywgKCkpOwotICAgIHJldHVybiBzdGF0aWNQcm9maWxlczsKLX0KLQotLy8gU3Rh
dGljIFZhbHVlcwotCi1zdGF0aWMgSlNDbGFzc1JlZiBQcm9maWxlQ2xhc3MoKTsKLQotc3RhdGlj
IEpTVmFsdWVSZWYgZ2V0VGl0bGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgaWYgKCFKU1Zh
bHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUqIHBy
b2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmpl
Y3QpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBPcGFxdWVKU1N0cmluZzo6
Y3JlYXRlKHByb2ZpbGUtPnRpdGxlKCkpLmdldCgpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYg
Z2V0SGVhZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9m
Q2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOwotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gdG9SZWYoZXhlYywgdG9KUyhl
eGVjLCBwcm9maWxlLT5oZWFkKCkpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0VW5pcXVl
SWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0
cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNz
KGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2Fz
dDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlLT51aWQoKSk7Ci19Ci0KLS8vIFN0YXRpYyBG
dW5jdGlvbnMKLQotc3RhdGljIEpTVmFsdWVSZWYgZm9jdXMoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogLypl
eGNlcHRpb24qLykKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlz
T2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjdHgpOwotCi0gICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZD
bGFzcyhjdHgsIGFyZ3VtZW50c1swXSwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlKiBwcm9maWxlID0g
c3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0g
ICAgcHJvZmlsZS0+Zm9jdXMoc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFBy
aXZhdGUoY29uc3RfY2FzdDxKU09iamVjdFJlZj4oYXJndW1lbnRzWzBdKSkpKTsKLQotICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBl
eGNsdWRlKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIC8qZnVuY3Rpb24qLywgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIC8qZXhjZXB0aW9uKi8pCi17Ci0gICAgaWYgKCFKU1Zh
bHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIGlmIChhcmd1bWVu
dENvdW50IDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0K
LSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCBhcmd1bWVudHNbMF0sIFByb2Zp
bGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgp
OwotCi0gICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHByb2ZpbGUtPmV4Y2x1ZGUoc3RhdGljX2Nh
c3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUoY29uc3RfY2FzdDxKU09iamVjdFJl
Zj4oYXJndW1lbnRzWzBdKSkpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
dHgpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiByZXN0b3JlQWxsKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIC8qZnVuY3Rpb24qLywgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IC8qYXJndW1lbnRDb3VudCovLCBjb25zdCBKU1ZhbHVlUmVmW10gLyphcmd1bWVudHMqLywgSlNW
YWx1ZVJlZiogLypleGNlcHRpb24qLykKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xh
c3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19j
YXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHByb2Zp
bGUtPnJlc3RvcmVBbGwoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgp
OwotfQotCi1zdGF0aWMgdm9pZCBmaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCi17Ci0gICAg
UHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZh
dGUob2JqZWN0KSk7Ci0gICAgcHJvZmlsZUNhY2hlKCkucmVtb3ZlKHByb2ZpbGUpOwotICAgIHBy
b2ZpbGUtPmRlcmVmKCk7Ci19Ci0KLUpTQ2xhc3NSZWYgUHJvZmlsZUNsYXNzKCkKLXsKLSAgICBz
dGF0aWMgSlNTdGF0aWNWYWx1ZSBzdGF0aWNWYWx1ZXNbXSA9IHsKLSAgICAgICAgeyAidGl0bGUi
LCBnZXRUaXRsZUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAg
ICAgeyAiaGVhZCIsIGdldEhlYWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25l
IH0sCi0gICAgICAgIHsgInVpZCIsIGdldFVuaXF1ZUlkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5
QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7IDAsIDAsIDAsIDAgfQotICAgIH07Ci0KLSAgICBz
dGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKLSAgICAgICAgeyAi
Zm9jdXMiLCBmb2N1cywga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgImV4
Y2x1ZGUiLCBleGNsdWRlLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAi
cmVzdG9yZUFsbCIsIHJlc3RvcmVBbGwsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAg
ICAgICB7IDAsIDAsIDAgfQotICAgIH07Ci0KLSAgICBzdGF0aWMgSlNDbGFzc0RlZmluaXRpb24g
Y2xhc3NEZWZpbml0aW9uID0gewotICAgICAgICAwLCBrSlNDbGFzc0F0dHJpYnV0ZU5vbmUsICJQ
cm9maWxlIiwgMCwgc3RhdGljVmFsdWVzLCBzdGF0aWNGdW5jdGlvbnMsCi0gICAgICAgIDAsIGZp
bmFsaXplLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCi0gICAgfTsKLQotICAgIHN0YXRpYyBK
U0NsYXNzUmVmIHByb2ZpbGVDbGFzcyA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNzRGVmaW5pdGlvbik7
Ci0gICAgcmV0dXJuIHByb2ZpbGVDbGFzczsKLX0KLQotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvZmlsZSogcHJvZmlsZSkKLXsKLSAgICBpZiAoIXByb2ZpbGUpCi0gICAgICAgIHJl
dHVybiBqc051bGwoKTsKLQotICAgIEpTT2JqZWN0KiBwcm9maWxlV3JhcHBlciA9IHByb2ZpbGVD
YWNoZSgpLmdldChwcm9maWxlKTsKLSAgICBpZiAocHJvZmlsZVdyYXBwZXIpCi0gICAgICAgIHJl
dHVybiBwcm9maWxlV3JhcHBlcjsKLQotICAgIHByb2ZpbGUtPnJlZigpOwotICAgIHByb2ZpbGVX
cmFwcGVyID0gdG9KUyhKU09iamVjdE1ha2UodG9SZWYoZXhlYyksIFByb2ZpbGVDbGFzcygpLCBz
dGF0aWNfY2FzdDx2b2lkKj4ocHJvZmlsZSkpKTsKLSAgICBwcm9maWxlQ2FjaGUoKS5zZXQocHJv
ZmlsZSwgcHJvZmlsZVdyYXBwZXIpOwotICAgIHJldHVybiBwcm9maWxlV3JhcHBlcjsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjUwMDg4MS4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9K
YXZhU2NyaXB0UHJvZmlsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSmF2YVNjcmlw
dFByb2ZpbGVfaAotI2RlZmluZSBKYXZhU2NyaXB0UHJvZmlsZV9oCi0KLSNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikgJiYgVVNFKEpTQykKLQotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1
ZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBFeGVjU3RhdGU7Ci0gICAgY2xhc3Mg
UHJvZmlsZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb2ZpbGUqKTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDYzODdjODUuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkphdmFTY3JpcHRQcm9maWxlTm9kZS5oIgotCi0jaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIFVTRShKU0MpCi0KLSNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKLSNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlTm9kZS5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09i
amVjdFJlZi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNTdHJpbmdSZWYuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBDYWNoZQot
Ci10eXBlZGVmIEhhc2hNYXA8UHJvZmlsZU5vZGUqLCBKU09iamVjdCo+IFByb2ZpbGVOb2RlTWFw
OwotCi1zdGF0aWMgUHJvZmlsZU5vZGVNYXAmIHByb2ZpbGVOb2RlQ2FjaGUoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUHJvZmlsZU5vZGVNYXAsIHN0YXRpY1Byb2ZpbGVOb2RlcywgKCkp
OwotICAgIHJldHVybiBzdGF0aWNQcm9maWxlTm9kZXM7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVm
IGdldEZ1bmN0aW9uTmFtZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RP
ZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmls
ZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7Ci0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGZ1bmN0aW9uTmFtZVN0cmlu
ZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhwcm9maWxlTm9kZS0+ZnVuY3Rp
b25OYW1lKCkuZGF0YSgpLCBwcm9maWxlTm9kZS0+ZnVuY3Rpb25OYW1lKCkuc2l6ZSgpKSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGN0eCwgZnVuY3Rpb25OYW1lU3RyaW5nLmdldCgp
KTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0VVJMKEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBpZiAo
IUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNz
KCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFBy
b2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
dXJsU3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKHByb2ZpbGVOb2Rl
LT51cmwoKS5kYXRhKCksIHByb2ZpbGVOb2RlLT51cmwoKS5zaXplKCkpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCB1cmxTdHJpbmcuZ2V0KCkpOwotfQotCi1zdGF0aWMgSlNW
YWx1ZVJlZiBnZXRMaW5lTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09i
amVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBw
cm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxl
Tm9kZS0+bGluZU51bWJlcigpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0VG90YWxUaW1l
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBK
U1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQ
cm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2Zp
bGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+dG90YWxUaW1lKCkpOwotfQotCi1zdGF0
aWMgSlNWYWx1ZVJlZiBnZXRTZWxmVGltZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgSlNDOjpKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RP
ZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmls
ZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmlsZU5vZGUt
PnNlbGZUaW1lKCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXROdW1iZXJPZkNhbGxzKEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1Zh
bHVlUmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9m
aWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVO
b2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+bnVtYmVyT2ZDYWxscygpKTsKLX0KLQotc3Rh
dGljIEpTVmFsdWVSZWYgZ2V0Q2hpbGRyZW4oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBK
U0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBpZiAoIUpTVmFs
dWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVO
b2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2Rl
PiA+JiBjaGlsZHJlbiA9IHByb2ZpbGVOb2RlLT5jaGlsZHJlbigpOwotCi0gICAgSlNPYmplY3RS
ZWYgZ2xvYmFsID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGN0eCk7Ci0KLSAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gYXJyYXlTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJBcnJheSIpKTsKLQotICAgIEpTVmFsdWVSZWYgYXJyYXlQcm9wZXJ0eSA9IEpT
T2JqZWN0R2V0UHJvcGVydHkoY3R4LCBnbG9iYWwsIGFycmF5U3RyaW5nLmdldCgpLCBleGNlcHRp
b24pOwotICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBKU09iamVjdFJlZiBhcnJheUNvbnN0cnVj
dG9yID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgYXJyYXlQcm9wZXJ0eSwgZXhjZXB0aW9uKTsKLSAg
ICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjdHgpOwotCi0gICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxs
QXNDb25zdHJ1Y3RvcihjdHgsIGFycmF5Q29uc3RydWN0b3IsIDAsIDAsIGV4Y2VwdGlvbik7Ci0g
ICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY3R4KTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwdXNoU3Ry
aW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicHVzaCIpKTsKLQotICAg
IEpTVmFsdWVSZWYgcHVzaFByb3BlcnR5ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjdHgsIHJlc3Vs
dCwgcHVzaFN0cmluZy5nZXQoKSwgZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uICYmICpl
eGNlcHRpb24pCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0g
ICAgSlNPYmplY3RSZWYgcHVzaEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgcHVzaFBy
b3BlcnR5LCBleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2RlPiA+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLmVu
ZCgpOyArK2l0KSB7Ci0gICAgICAgIEpTVmFsdWVSZWYgYXJnMCA9IHRvUmVmKGV4ZWMsIHRvSlMo
ZXhlYywgKCppdCkuZ2V0KCkgKSk7Ci0gICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY3R4
LCBwdXNoRnVuY3Rpb24sIHJlc3VsdCwgMSwgJmFyZzAsIGV4Y2VwdGlvbik7Ci0gICAgICAgIGlm
IChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjdHgpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRp
YyBKU1ZhbHVlUmVmIGdldFZpc2libGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQotewotICAgIEpTQzo6SlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZD
bGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVO
b2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY3R4LCBwcm9maWxlTm9kZS0+
dmlzaWJsZSgpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0Q2FsbFVJRChKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiop
Ci17Ci0gICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAg
aWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVD
bGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAg
ICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVt
YmVyKGN0eCwgcHJvZmlsZU5vZGUtPmNhbGxJZGVudGlmaWVyKCkuaGFzaCgpKTsKLX0KLQotc3Rh
dGljIHZvaWQgZmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQotewotICAgIFByb2ZpbGVOb2Rl
KiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2
YXRlKG9iamVjdCkpOwotICAgIHByb2ZpbGVOb2RlQ2FjaGUoKS5yZW1vdmUocHJvZmlsZU5vZGUp
OwotICAgIHByb2ZpbGVOb2RlLT5kZXJlZigpOwotfQotCi1KU0NsYXNzUmVmIFByb2ZpbGVOb2Rl
Q2xhc3MoKQotewotICAgIHN0YXRpYyBKU1N0YXRpY1ZhbHVlIHN0YXRpY1ZhbHVlc1tdID0gewot
ICAgICAgICB7ICJmdW5jdGlvbk5hbWUiLCBnZXRGdW5jdGlvbk5hbWUsIDAsIGtKU1Byb3BlcnR5
QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJ1cmwiLCBnZXRVUkwsIDAsIGtKU1Byb3BlcnR5
QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJsaW5lTnVtYmVyIiwgZ2V0TGluZU51bWJlciwg
MCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInRvdGFsVGltZSIsIGdl
dFRvdGFsVGltZSwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInNl
bGZUaW1lIiwgZ2V0U2VsZlRpbWUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAg
ICAgICB7ICJudW1iZXJPZkNhbGxzIiwgZ2V0TnVtYmVyT2ZDYWxscywgMCwga0pTUHJvcGVydHlB
dHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgImNoaWxkcmVuIiwgZ2V0Q2hpbGRyZW4sIDAsIGtK
U1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJ2aXNpYmxlIiwgZ2V0VmlzaWJs
ZSwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgImNhbGxVSUQiLCBn
ZXRDYWxsVUlELCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAwLCAw
LCAwLCAwIH0KLSAgICB9OwotCi0gICAgc3RhdGljIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVm
aW5pdGlvbiA9IHsKLSAgICAgICAgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiUHJvZmlsZU5v
ZGUiLCAwLCBzdGF0aWNWYWx1ZXMsIDAsCi0gICAgICAgIDAsIGZpbmFsaXplLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwCi0gICAgfTsKLQotICAgIHN0YXRpYyBKU0NsYXNzUmVmIHByb2ZpbGVO
b2RlQ2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc0RlZmluaXRpb24pOwotICAgIHJldHVybiBw
cm9maWxlTm9kZUNsYXNzOwotfQotCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBQcm9m
aWxlTm9kZSogcHJvZmlsZU5vZGUpCi17Ci0gICAgaWYgKCFwcm9maWxlTm9kZSkKLSAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwotCi0gICAgSlNPYmplY3QqIHByb2ZpbGVOb2RlV3JhcHBlciA9IHBy
b2ZpbGVOb2RlQ2FjaGUoKS5nZXQocHJvZmlsZU5vZGUpOwotICAgIGlmIChwcm9maWxlTm9kZVdy
YXBwZXIpCi0gICAgICAgIHJldHVybiBwcm9maWxlTm9kZVdyYXBwZXI7Ci0KLSAgICBwcm9maWxl
Tm9kZS0+cmVmKCk7Ci0KLSAgICBwcm9maWxlTm9kZVdyYXBwZXIgPSB0b0pTKEpTT2JqZWN0TWFr
ZSh0b1JlZihleGVjKSwgUHJvZmlsZU5vZGVDbGFzcygpLCBzdGF0aWNfY2FzdDx2b2lkKj4ocHJv
ZmlsZU5vZGUpKSk7Ci0gICAgcHJvZmlsZU5vZGVDYWNoZSgpLnNldChwcm9maWxlTm9kZSwgcHJv
ZmlsZU5vZGVXcmFwcGVyKTsKLSAgICByZXR1cm4gcHJvZmlsZU5vZGVXcmFwcGVyOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9k
ZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ODVhYzYuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBKYXZhU2NyaXB0UHJvZmlsZU5vZGVfaAotI2RlZmluZSBKYXZhU2NyaXB0UHJvZmlsZU5vZGVf
aAotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIFVTRShKU0MpCi0KLSNpbmNs
dWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2Uu
aD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOwotICAgIGNsYXNzIFBy
b2ZpbGVOb2RlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBKU0NsYXNzUmVmIFBy
b2ZpbGVOb2RlQ2xhc3MoKTsKLSAgICBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvZmlsZU5vZGUqKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHRQcm9maWxlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDRiMDRh
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGwK
QEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2Ug
W0NvbmRpdGlvbmFsPUpBVkFTQ1JJUFRfREVCVUdHRVIsIE9taXRDb25zdHJ1Y3Rvcl0gU2NyaXB0
UHJvZmlsZSB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdGl0bGU7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHVpZDsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFNjcmlwdFByb2ZpbGVOb2RlIGhlYWQ7CisgICAgfTsKKworfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRsIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmVmZjE3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9TY3JpcHRQcm9maWxlTm9kZS5pZGwKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
Y29yZSB7CisKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUpBVkFTQ1JJUFRfREVCVUdHRVIs
IE9taXRDb25zdHJ1Y3Rvcl0gU2NyaXB0UHJvZmlsZU5vZGUgeworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGZ1bmN0aW9uTmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyB1cmw7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGxpbmVOdW1iZXI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgdG90YWxU
aW1lOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIHNlbGZUaW1lOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkNhbGxzOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlcl0gQXJyYXkgY2hpbGRyZW47CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHZpc2libGU7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSB1bnNpZ25lZCBsb25nIGNhbGxVSUQ7CisgICAgfTsK
KworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1RlbXBvcmFyeUxpbmtT
dHVicy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvVGVtcG9yYXJ5TGlua1N0dWJzLmNw
cAppbmRleCA5Njk4ZWFkLi4yNGRmYzM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Fu
ZHJvaWQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJv
aWQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcApAQCAtODUsNyArODUsNiBAQAogI2luY2x1ZGUgIkpO
SVV0aWxpdHlQcml2YXRlLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkphdmFTY3JpcHREZWJ1Z1NlcnZlci5oIgotI2luY2x1ZGUgIkphdmFTY3JpcHRQcm9m
aWxlLmgiCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48636</attachid>
            <date>2010-02-12 04:35:49 -0800</date>
            <delta_ts>2010-02-12 07:17:57 -0800</delta_ts>
            <desc>updated patch with a small fix</desc>
            <filename>idl-for-profile-patch</filename>
            <type>text/plain</type>
            <size>56849</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGI5MDFmYS4uNjJhNmRmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wMi0xMiAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgaGFuZC13cml0dGVuIFByb2ZpbGUgYW5kIFBy
b2ZpbGVOb2RlIHdyYXBwZXJzIHdpdGggYmluZGluZ3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0ODQ4CisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5w
cm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDb25zb2xl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ29uc29sZTo6cHJvZmlsZXMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkpTU2NyaXB0UHJvZmlsZU5vZGU6OmNhbGxVSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNTY3JpcHRQcm9maWxlTm9kZTo6Y2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmdldFByb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmg6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vYW5kcm9pZC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwOgorCiAyMDEwLTAyLTExICBGdW1p
dG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNw
cCBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDE3ZDhhZDkuLmE5ZDUxMzIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMuY3BwCkBAIC0xOTQsNiArMTk0LDggQEAKICNpbmNsdWRlICJKU1JlY3QuY3BwIgog
I2luY2x1ZGUgIkpTUkdCQ29sb3IuY3BwIgogI2luY2x1ZGUgIkpTU2NyZWVuLmNwcCIKKyNpbmNs
dWRlICJKU1NjcmlwdFByb2ZpbGUuY3BwIgorI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZU5vZGUu
Y3BwIgogI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyLmNwcCIKICNpbmNsdWRlICJKU1NoYXJlZFdv
cmtlckNvbnRleHQuY3BwIgogI2luY2x1ZGUgIkpTU1FMRXJyb3IuY3BwIgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IGQ1ZmQyYzEuLmJjZDM4ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIzOCw2ICsyMzgs
OCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBSYW5nZSBcCiAgICAgUmFuZ2VFeGNlcHRpb24gXAog
ICAgIFJlY3QgXAorICAgIFNjcmlwdFByb2ZpbGUgXAorICAgIFNjcmlwdFByb2ZpbGVOb2RlIFwK
ICAgICBTaGFyZWRXb3JrZXIgXAogICAgIFNoYXJlZFdvcmtlckNvbnRleHQgXAogICAgIFNRTEVy
cm9yIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGUwYzlkYzYuLjA0NTYzNmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjYyLDYgKzI2Miw4
IEBAIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmlkbCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgXAogCVdl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgXAorCVdlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsIFwKKwlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRQcm9m
aWxlTm9kZS5pZGwgXAogCVdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwK
IAlXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCiAJV2ViQ29y
ZS9wYWdlL0JhckluZm8uaWRsIFwKQEAgLTQ0OSw2ICs0NTEsNyBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVT
aGVldEN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1
c3RvbS5jcHAgXApAQCAtNDg3LDYgKzQ5MCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdE9iamVjdC5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaCBc
CisJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlTm9kZS5oIFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRQcm9maWxlci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBc
CkBAIC0xMjI0LDEwICsxMjI4LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2lu
c3BlY3Rvci9KYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9K
YXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0
RGVidWdTZXJ2ZXIuaCBcCi0JV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3Bw
IFwKLQlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5oIFwKLQlXZWJDb3JlL2lu
c3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9K
YXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmggXAogCVdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDIyYjYxMTcuLmVjYzhhMWUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC0xODcsNiArMTg3LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZC5pZGwnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwn
LAorICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCcsCisgICAgICAgICAg
ICAnaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbCcsCiAgICAgICAgICAgICAnbG9hZGVy
L2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsJywKICAgICAgICAgICAgICdub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5pZGwnLAogICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmlkbCcsCkBAIC01ODEsNiArNTgzLDcgQEAKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCcsCkBAIC0xNjEwLDEwICsxNjEzLDYgQEAKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaCcsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaCcsCi0gICAgICAgICAgICAnaW5zcGVj
dG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFT
Y3JpcHRQcm9maWxlLmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmls
ZU5vZGUuY3BwJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2Rl
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgnLAogICAgICAg
ICAgICAgJ2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcCcsCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA5NzZmNzk1
Li4xZWNkMTQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTMxNiw2ICszMTYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBiaW5kaW5n
cy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUxp
c3RDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcCBc
CisgICAgYmluZGluZ3MvanMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgXAogICAgIGJp
bmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTU3R5
bGVTaGVldExpc3RDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU1RleHRDdXN0b20uY3Bw
IFwKQEAgLTEwMzQsNiArMTAzNSw5IEBAIEhFQURFUlMgKz0gXAogICAgIGJpbmRpbmdzL2pzL1Nj
cmlwdEV2ZW50TGlzdGVuZXIuaCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxs
LmggXAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oIFwKKyAgICBiaW5kaW5ncy9qcy9T
Y3JpcHRQcm9maWxlLmggXAorICAgIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVOb2RlLmggXAor
ICAgIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmggXAogICAgIGJpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZUNvZGUuaCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0U291cmNlUHJvdmlkZXIuaCBc
CiAgICAgYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBcCkBAIC0xMzcwLDggKzEzNzQsNiBAQCBI
RUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIFwKICAg
ICBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oIFwKICAgICBpbnNwZWN0b3IvSmF2YVNj
cmlwdERlYnVnU2VydmVyLmggXAotICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5oIFwK
LSAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggXAogICAgIGluc3BlY3Rvci9U
aW1lbGluZVJlY29yZEZhY3RvcnkuaCBcCiAgICAgbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5oIFwKICAgICBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aCBcCkBAIC0yNjI1LDEwICsyNjI3LDkgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0x
KSB7CiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUj0xKSB7CiAg
ICAgU09VUkNFUyArPSBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFt
ZUN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAgXAog
ICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgXAogICAgICAgICBpbnNw
ZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCBcCi0gICAgICAgIGluc3BlY3Rvci9KYXZh
U2NyaXB0UHJvZmlsZS5jcHAgXAotICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVO
b2RlLmNwcAogfQogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TPTEpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZmNzk2
M2IuLjNjZGJiM2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzg3
NjEsOSArMzg3NjEsNjEgQEAKIAkJCQkJCTxUb29sDQogCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQogCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTwvRmls
ZT4NCi0JCQkJPEZpbGUNCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNTY3JpcHRQcm9m
aWxlTm9kZUN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIgorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIi
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxs
fFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8
VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTU3R5bGVTaGVldEN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC00MjY4MSwyMiArNDI3MzMsNiBAQAogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSmF2
YVNjcmlwdFByb2ZpbGUuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEphdmFTY3JpcHRQcm9maWxlLmgiDQotCQkJCT4N
Ci0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
SmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8Rmls
ZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJvZmlsZU5vZGUu
aCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3RvclxUaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxl
Pg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTg3MjA2
ZC4uNGM3NzRiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTUyOCwxMCArNTI4LDYgQEAKIAkJMUM4MUI5NUEwRTk3MzMwODAwMjY2RTA3IC8qIEluc3Bl
Y3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM4MUI5
NUIwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTcwRTk3MzMwODAwMjY2
RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovOyB9OwogCQkxQzgxQjk1QzBFOTczMzA4
MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9y
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJMUM4MUI5RkYwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5RkIwRTk3
MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oICovOyB9OwotCQkxQzgxQkEw
MDBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOUZDMEU5NzMzQ0IwMDI2
NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovOyB9OwotCQkxQzgxQkEwMTBFOTcz
M0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOUZEMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZh
U2NyaXB0UHJvZmlsZS5oICovOyB9OwotCQkxQzgxQkEwMjBFOTczM0NCMDAyNjZFMDcgLyogSmF2
YVNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM4MUI5RkUwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmNw
cCAqLzsgfTsKIAkJMUM4MUJBMDkwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4
MUJBMDMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9Owog
CQkxQzgxQkEwQTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUJBMDQwRTk3MzQ4
MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJMUM4MUJBMEMwRTk3
MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQkEwNjBFOTczNDgzMDAyNjZFMDcg
LyogSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjQ1Niw4ICsyNDUyLDE0IEBACiAJCTk3REQ0RDg2MEZE
RjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NBdWRp
dG9yLmNwcCAqLzsgfTsKIAkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg1
MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi87IH07CiAJCTk3RUY3REZFMTA3RTU1
QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0VGN0RGRDEwN0U1NUI3MDBEN0M0OUMgLyog
U2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovOyB9OworCQk5RjJDQzcxNTExMjQ0QTY4MDBCQUFD
OUMgLyogSlNTY3JpcHRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlGMkNDNzExMTEyNDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2Zp
bGUuY3BwICovOyB9OworCQk5RjJDQzcxNjExMjQ0QTY4MDBCQUFDOUMgLyogSlNTY3JpcHRQcm9m
aWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjJD
QzcxMjExMjQ0QTY4MDBCQUFDOUMgLyogSlNTY3JpcHRQcm9maWxlLmggKi87IH07CisJCTlGMkND
NzE3MTEyNDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGMkNDNzEzMTEyNDRBNjgwMEJB
QUM5QyAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlLmNwcCAqLzsgfTsKKwkJOUYyQ0M3MTgxMTI0NEE2
ODAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGMkNDNzE0MTEyNDRBNjgwMEJBQUM5QyAvKiBKU1Nj
cmlwdFByb2ZpbGVOb2RlLmggKi87IH07CisJCTlGMkNDNzJDMTEyNDUyNTMwMEJBQUM5QyAvKiBK
U1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlGMkNDNzJCMTEyNDUyNTMwMEJBQUM5QyAvKiBKU1NjcmlwdFBy
b2ZpbGVOb2RlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJOUY2RkMxOTYxMTIyRTgyQTAwRTgwMTk2IC8q
IFNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlGNkZDMTk0MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAgKi87IH07CiAJCTlGNkZDMTk3MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1Nl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY2
RkMxOTUxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOUY2RkMxRDAxMTIzMUNGQTAw
RTgwMTk2IC8qIFNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5RjZGQzFDRjExMjMxQ0ZBMDBFODAxOTYgLyogU2NyaXB0UHJv
ZmlsZU5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5RjcyMzA0RjExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY3MjMwNEMxMTE4NEI0MTAw
QUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5RjcyMzA1MDExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJv
ZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUY3MjMwNEQxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGVyLmNwcCAqLzsgfTsKIAkJ
OUY3MjMwNTExMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjcyMzA0RTExMTg0QjQxMDBBRDAx
MjYgLyogU2NyaXB0UHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNTg0NSwxMCArNTg0Nyw2IEBACiAJCTFDODFCOTU3MEU5NzMzMDgw
MDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzgxQjk1OTBFOTczMzA4MDAyNjZFMDcgLyog
ZnJvbnQtZW5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gZm9sZGVyOyBwYXRoID0gImZyb250LWVuZCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDODFCOUZCMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODFCOUZDMEU5NzMzQ0IwMDI2NkUwNyAv
KiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMUM4MUI5RkQwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRQcm9maWxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODFCOUZFMEU5NzMzQ0IwMDI2NkUwNyAvKiBK
YXZhU2NyaXB0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKYXZhU2NyaXB0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
ODFCQTAzMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzgxQkEwNDBFOTczNDgzMDAyNjZFMDcgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
YXZhU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFC
QTA1MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc4MDEsOCArNzc5OSwxNiBAQAogCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5
QTQgLyogWFNTQXVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBYU1NBdWRpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdERDREODUw
RkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gWFNTQXVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0VG
N0RGRDEwN0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjJDQzcxMTExMjQ0QTY4MDBCQUFDOUMgLyog
SlNTY3JpcHRQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2NyaXB0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGMkND
NzEyMTEyNDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTY3JpcHRQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlGMkNDNzEzMTEyNDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2ZpbGVOb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2NyaXB0UHJvZmls
ZU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjJDQzcxNDExMjQ0QTY4
MDBCQUFDOUMgLyogSlNTY3JpcHRQcm9maWxlTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1NjcmlwdFByb2ZpbGVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTlGMkNDNzJCMTEyNDUyNTMwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2NyaXB0UHJv
ZmlsZU5vZGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjZGQzE5
NDExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5RjZGQzE5NTExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVi
dWdTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdT
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUY2RkMxQTcxMTIzMEY4NjAw
RTgwMTk2IC8qIFNjcmlwdFByb2ZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNjcmlw
dFByb2ZpbGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjZGQzFBODExMjMw
Rjg2MDBFODAxOTYgLyogU2NyaXB0UHJvZmlsZU5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFNjcmlwdFByb2ZpbGVOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OUY2RkMxQ0YxMTIzMUNGQTAwRTgwMTk2IC8qIFNjcmlwdFByb2ZpbGVOb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFByb2ZpbGVOb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlGNzIzMDRDMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9m
aWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFByb2ZpbGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY3MjMwNEQxMTE4NEI0MTAwQUQwMTI2IC8q
IFNjcmlwdFByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjcmlwdFByb2ZpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY3MjMw
NEUxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcmlwdFByb2ZpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDY0MCwxMCArMTA2NDYsOCBAQAogCQkJCTFDODFCQTA2MEU5NzM0ODMwMDI2NkUw
NyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oICovLAogCQkJCTFDODFCQTA3MEU5NzM0ODMw
MDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovLAogCQkJCTFDODFCQTA4MEU5
NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLywKLQkJCQkxQzgxQjlG
RTBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwICovLAotCQkJCTFDODFC
OUZEMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZS5oICovLAotCQkJCTFDODFC
OUZDMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovLAotCQkJ
CTFDODFCOUZCMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCAqLywK
KwkJCQk5RjZGQzFBNzExMjMwRjg2MDBFODAxOTYgLyogU2NyaXB0UHJvZmlsZS5pZGwgKi8sCisJ
CQkJOUY2RkMxQTgxMTIzMEY4NjAwRTgwMTk2IC8qIFNjcmlwdFByb2ZpbGVOb2RlLmlkbCAqLywK
IAkJCQlCQ0M2NEY1RjBEQ0ZCODRFMDA4MUVGM0IgLyogbG9jYWxpemVkU3RyaW5ncy5qcyAqLywK
IAkJCQk3NTUzQ0ZFNzEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNw
cCAqLywKIAkJCQk3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmggKi8sCkBAIC0xMzY5Niw2ICsxMzcwMCwxMCBAQAogCQkJCTY1REYzMUVDMDlEMUNDNjAw
MDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovLAogCQkJCUU0QjQyMzg1MENC
RkI3M0MwMEFGMkVDRSAvKiBKU1Byb2dyZXNzRXZlbnQuY3BwICovLAogCQkJCUU0QjQyMzg2MENC
RkI3M0MwMEFGMkVDRSAvKiBKU1Byb2dyZXNzRXZlbnQuaCAqLywKKwkJCQk5RjJDQzcxMTExMjQ0
QTY4MDBCQUFDOUMgLyogSlNTY3JpcHRQcm9maWxlLmNwcCAqLywKKwkJCQk5RjJDQzcxMjExMjQ0
QTY4MDBCQUFDOUMgLyogSlNTY3JpcHRQcm9maWxlLmggKi8sCisJCQkJOUYyQ0M3MTMxMTI0NEE2
ODAwQkFBQzlDIC8qIEpTU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovLAorCQkJCTlGMkNDNzE0MTEy
NDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlLmggKi8sCiAJCQkJNjVERjMxRUYw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTVGV4dC5jcHAgKi8sCiAJCQkJNjVERjMxRjAwOUQxQ0M2MDAw
MEJFMzI1IC8qIEpTVGV4dC5oICovLAogCQkJKTsKQEAgLTE0NjQ5LDYgKzE0NjU3LDcgQEAKIAkJ
CQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCAqLywKIAkJCQk0
MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi8sCiAJCQkJOUY3MjMw
NEMxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLywKKwkJCQk5RjZGQzFDRjEx
MjMxQ0ZBMDBFODAxOTYgLyogU2NyaXB0UHJvZmlsZU5vZGUuaCAqLywKIAkJCQk5RjcyMzA0RDEx
MTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuY3BwICovLAogCQkJCTlGNzIzMDRFMTEx
ODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5oICovLAogCQkJCTkzNENDMTA5MEVEQjIy
MzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi8sCkBAIC0xNDgwMyw2ICsxNDgxMiw3
IEBACiAJCQkJNTE4OUYwMTcxMEIzNzgxMzAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudEN1c3Rv
bS5jcHAgKi8sCiAJCQkJNTFEQ0U4MDEwQ0FDOUYxQzAwNDg4MzU4IC8qIEpTU1FMUmVzdWx0U2V0
Um93TGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFEMjMxNkQwQ0QyNjlFNzAwQzFGMTk0IC8qIEpT
U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwICovLAorCQkJCTlGMkNDNzJCMTEyNDUyNTMwMEJBQUM5
QyAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQk1MUQwQzUxNTBEQUE5
MEI3MDAzQjM4MzEgLyogSlNTdG9yYWdlQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzk4QTI3QzBDMEM5
OTUwMDA0QkVCRjcgLyogSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCAqLywKIAkJCQlBODRFQkQ3NzBD
QjhDODkyMDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgKi8sCkBAIC0xNzMw
MCw4ICsxNzMxMCw2IEBACiAJCQkJMUM4MUJBMEEwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3Jp
cHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDODFCQTBDMEU5NzM0ODMwMDI2NkUw
NyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUJB
MEUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMUM4MUJBMDEwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkxQzgxQjlGRjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUJDMzkzRjExMDU0QTEzMDBGRDg1
REIgLyogSmF2YVN0cmluZ0pTQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMDQwRDdFMkI4
MjAwN0MzOTgzIC8qIGpuaV9qc29iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkxMzk1M0Ix
MTA3NTg0NTAwODNFQzU1IC8qIEpOSUJyaWRnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODUyNiw2
ICsxODUzNCw5IEBACiAJCQkJQkNFNzg5MTYxMTIwRDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U3ODk4NjExMjBFN0E2MDA2MEVDRTUgLyogQmlk
aVJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUY2RkMxOTcxMTIyRTgyQTAwRTgwMTk2IC8qIFNj
cmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5RjZGQzFEMDExMjMxQ0ZBMDBF
ODAxOTYgLyogU2NyaXB0UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTlGMkNDNzE2
MTEyNDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTlGMkNDNzE4MTEyNDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTE5NDkxLDggKzE5NTAyLDYgQEAKIAkJCQk1OUE5RTdCMDExMDQ3NTg4MDBE
RkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDODFCQTA5
MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFDODFCQTBEMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM4MUJBMDIwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFT
Y3JpcHRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDODFCQTAwMEU5NzMzQ0IwMDI2
NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1
NjlEMDMwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9qc29iamVjdC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBNTY5RDA1MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfb2JqYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTU5MTM5NTNEMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yMDcwNyw2ICsyMDcxNiw5IEBACiAJCQkJQkNFNzg5OEIxMTIwRTgwMjAwNjBF
Q0U1IC8qIEJpZGlSdW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUY2RkMxOTYxMTIyRTgyQTAw
RTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RkYx
N0UzMTEyMzU2NzMwMDFENjFCNSAvKiBQbHVnaW5WaWV3Tm9uZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5RjJDQzcxNTExMjQ0QTY4MDBCQUFDOUMgLyogSlNTY3JpcHRQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTlGMkNDNzE3MTEyNDRBNjgwMEJBQUM5QyAvKiBKU1NjcmlwdFByb2Zp
bGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlGMkNDNzJDMTEyNDUyNTMwMEJBQUM5QyAv
KiBKU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDVhMDgyMGIuLjNjNDUzMDAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTExMyw2
ICsxMTMsNyBAQAogI2luY2x1ZGUgIkpTU1ZHTWF0cml4Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U1NWR1BhdGhTZWdDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTU1ZHUGF0aFNlZ0xpc3RDdXN0b20u
Y3BwIgorI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIgogI2luY2x1ZGUgIkpTU2hhcmVkV29ya2Vy
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1N0b3JhZ2VDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCmluZGV4IGI2MzFjZGQuLmEwODc2NWIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKQEAgLTI4LDggKzI4LDkgQEAKICNpbmNs
dWRlICJKU0NvbnNvbGUuaCIKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKLSNpbmNsdWRlICJKYXZh
U2NyaXB0UHJvZmlsZS5oIgorI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRl
IDxydW50aW1lL0pTQXJyYXkuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTM4LDE2ICsz
OSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEpTQzo6UHJvZmlsZT4gPiBQcm9maWxlc0Fy
cmF5OwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFNjcmlwdFByb2ZpbGU+ID4gUHJvZmlsZXNBcnJh
eTsKIAogSlNWYWx1ZSBKU0NvbnNvbGU6OnByb2ZpbGVzKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
IHsKICAgICBjb25zdCBQcm9maWxlc0FycmF5JiBwcm9maWxlcyA9IGltcGwoKS0+cHJvZmlsZXMo
KTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwogCisgICAgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBQcm9maWxlc0FycmF5Ojpjb25zdF9pdGVyYXRv
ciBlbmQgPSBwcm9maWxlcy5lbmQoKTsKICAgICBmb3IgKFByb2ZpbGVzQXJyYXk6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBwcm9maWxlcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAg
ICAgICBsaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGl0ZXItPmdldCgpKSk7CisgICAgICAgIGxpc3Qu
YXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpdGVyLT5nZXQoKSkpOwogCiAgICAgcmV0
dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIGxpc3QpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODVlYjk3NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGVOb2Rl
LmgiCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNpbmNsdWRlIDxwcm9maWxl
ci9Qcm9maWxlTm9kZS5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXkuaD4K
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKK0pTVmFsdWUgSlNTY3JpcHRQcm9maWxlTm9kZTo6
Y2FsbFVJRChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihleGVjLCBpbXBsKCktPmNhbGxJZGVudGlmaWVyKCkuaGFzaCgpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+ID4gUHJv
ZmlsZU5vZGVzTGlzdDsKKworSlNWYWx1ZSBKU1NjcmlwdFByb2ZpbGVOb2RlOjpjaGlsZHJlbihF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgY29uc3QgUHJvZmlsZU5vZGVzTGlzdCYgY2hp
bGRyZW4gPSBpbXBsKCktPmNoaWxkcmVuKCk7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlz
dDsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgUHJv
ZmlsZU5vZGVzTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hpbGRyZW4uZW5kKCk7CisgICAg
Zm9yIChQcm9maWxlTm9kZXNMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gY2hpbGRyZW4uYmVn
aW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgbGlzdC5hcHBlbmQodG9KUyhleGVj
LCBnbG9iYWxPYmplY3QsIGl0ZXItPmdldCgpKSk7CisKKyAgICByZXR1cm4gY29uc3RydWN0QXJy
YXkoZXhlYywgbGlzdCk7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVOb2RlLmggYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYjJlZGNiZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZU5vZGUuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU2NyaXB0UHJvZmlsZU5vZGVfaAorI2RlZmluZSBTY3JpcHRQcm9maWxlTm9kZV9oCisKKyNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxl
Tm9kZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgSlNDOjpQcm9maWxlTm9k
ZSBTY3JpcHRQcm9maWxlTm9kZTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNlbmRpZiAvLyBTY3JpcHRQcm9maWxl
Tm9kZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRl
eCA5NGZjMmI4Li40NmViMzM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KQEAgLTIxMiwxMiArMjEyLDMyIEBAIHN1YiBBZGRJbmNsdWRlc0ZvclNWR0Fu
aW1hdGVkVHlwZQogICAgIH0KIH0KIAorc3ViIElzU2NyaXB0UHJvZmlsZVR5cGUKK3sKKyAgICBt
eSAkdHlwZSA9IHNoaWZ0OworICAgIHJldHVybiAxIGlmICgkdHlwZSBlcSAiU2NyaXB0UHJvZmls
ZSIgb3IgJHR5cGUgZXEgIlNjcmlwdFByb2ZpbGVOb2RlIik7CisgICAgcmV0dXJuIDA7Cit9CisK
K3N1YiBBZGRUeXBlZGVmRm9yU2NyaXB0UHJvZmlsZVR5cGUKK3sKKyAgICBteSAkdHlwZSA9IHNo
aWZ0OworICAgIChteSAkanNjVHlwZSA9ICR0eXBlKSA9fiBzL1NjcmlwdC8vOworCisgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgInR5cGVkZWYgSlNDOjokanNjVHlwZSAkdHlwZTtcblxuIik7Cit9
CisKIHN1YiBBZGRDbGFzc0ZvcndhcmRJZk5lZWRlZAogewogICAgIG15ICRpbXBsQ2xhc3NOYW1l
ID0gc2hpZnQ7CiAKICAgICAjIFNWR0FuaW1hdGVkTGVuZ3RoL051bWJlci9ldGMuIGFyZSB0eXBl
ZGVmcyB0byBTVkdBbmltYXRlZFRlbXBsYXRlLCBzbyBkb24ndCB1c2UgY2xhc3MgZm9yd2FyZHMg
Zm9yIHRoZW0hCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRpbXBsQ2xhc3NOYW1l
O1xuXG4iKSB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRpbXBsQ2xh
c3NOYW1lKTsKKyAgICB1bmxlc3MgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgk
aW1wbENsYXNzTmFtZSkgb3IgSXNTY3JpcHRQcm9maWxlVHlwZSgkaW1wbENsYXNzTmFtZSkpIHsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRpbXBsQ2xhc3NOYW1lO1xuXG4i
KTsKKyAgICAjIFNjcmlwdFByb2ZpbGUgYW5kIFNjcmlwdFByb2ZpbGVOb2RlIGFyZSB0eXBlZGVm
cyB0byBKU0M6OlByb2ZpbGUgYW5kIEpTQzo6UHJvZmlsZU5vZGUuCisgICAgfSBlbHNpZiAoSXNT
Y3JpcHRQcm9maWxlVHlwZSgkaW1wbENsYXNzTmFtZSkpIHsKKyAgICAgICAgQWRkVHlwZWRlZkZv
clNjcmlwdFByb2ZpbGVUeXBlKCRpbXBsQ2xhc3NOYW1lKTsKKyAgICB9CiB9CiAKIHN1YiBJc1NW
R1R5cGVOZWVkaW5nQ29udGV4dFBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAppbmRleCAzZDBiYTllLi5iMWRiYzBlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNjQsNyArNjQsNiBAQAogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kSG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgotI2luY2x1ZGUgIkphdmFTY3JpcHRQ
cm9maWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5o
IgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC05OSw2ICs5OCw3IEBACiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikgJiYgVVNFKEpTQykKICNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxs
RnJhbWUuaCIKKyNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdERlYnVnU2VydmVyLmgiCiAKQEAg
LTEzOTYsOCArMTM5NiwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGUo
bG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVpZCkKICAgICAgICAgcmV0dXJuOwogICAgIFByb2ZpbGVz
TWFwOjppdGVyYXRvciBpdCA9IG1fcHJvZmlsZXMuZmluZCh1aWQpOwogI2lmIFVTRShKU0MpCi0g
ICAgaWYgKGl0ICE9IG1fcHJvZmlsZXMuZW5kKCkpCi0gICAgICAgIG1fZnJvbnRlbmQtPmRpZEdl
dFByb2ZpbGUoY2FsbElkLCB0b0pTKG1fZnJvbnRlbmRTY3JpcHRTdGF0ZSwgaXQtPnNlY29uZC5n
ZXQoKSkpOworICAgIGlmIChpdCAhPSBtX3Byb2ZpbGVzLmVuZCgpKSB7CisgICAgICAgIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KG1fZnJvbnRlbmRTY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICAg
ICAgbV9mcm9udGVuZC0+ZGlkR2V0UHJvZmlsZShjYWxsSWQsIHRvSlMobV9mcm9udGVuZFNjcmlw
dFN0YXRlLCBnbG9iYWxPYmplY3QsIGl0LT5zZWNvbmQuZ2V0KCkpKTsKKyAgICB9CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyMjAzZjBiLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0phdmFTY3JpcHRQcm9maWxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkphdmFTY3JpcHRQcm9maWxlLmgiCi0KLSNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikgJiYgVVNFKEpTQykKLQotI2luY2x1ZGUgIkphdmFTY3JpcHRQcm9m
aWxlTm9kZS5oIgotI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9BUElDYXN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RS
ZWYuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU09i
amVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0vLyBDYWNoZQotCi10eXBlZGVmIEhhc2hNYXA8UHJvZmlsZSosIEpTT2JqZWN0Kj4gUHJv
ZmlsZU1hcDsKLQotc3RhdGljIFByb2ZpbGVNYXAmIHByb2ZpbGVDYWNoZSgpCi17IAotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUHJvZmlsZU1hcCwgc3RhdGljUHJvZmlsZXMsICgpKTsKLSAgICBy
ZXR1cm4gc3RhdGljUHJvZmlsZXM7Ci19Ci0KLS8vIFN0YXRpYyBWYWx1ZXMKLQotc3RhdGljIEpT
Q2xhc3NSZWYgUHJvZmlsZUNsYXNzKCk7Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldFRpdGxlQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdS
ZWYsIEpTVmFsdWVSZWYqKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgs
IHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJv
ZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWVNYWtlU3RyaW5nKGN0eCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShwcm9maWxlLT50aXRsZSgp
KS5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldEhlYWRDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJl
ZiopCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwg
UHJvZmlsZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKLQotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBQcm9maWxlKiBwcm9m
aWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7Ci0gICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHRvSlMoZXhlYywgcHJvZmlsZS0+aGVhZCgpKSk7
Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldFVuaXF1ZUlkQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQot
ewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2Zp
bGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0K
LSAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwg
cHJvZmlsZS0+dWlkKCkpOwotfQotCi0vLyBTdGF0aWMgRnVuY3Rpb25zCi0KLXN0YXRpYyBKU1Zh
bHVlUmVmIGZvY3VzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIC8qZnVuY3Rpb24qLywg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIC8qZXhjZXB0aW9uKi8pCi17Ci0gICAgaWYg
KCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNzKCkp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIGlmIChh
cmd1bWVudENvdW50IDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0
eCk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCBhcmd1bWVudHNbMF0s
IFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOwotCi0gICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHByb2ZpbGUtPmZvY3VzKHN0YXRp
Y19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKGNvbnN0X2Nhc3Q8SlNPYmpl
Y3RSZWY+KGFyZ3VtZW50c1swXSkpKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY3R4KTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZXhjbHVkZShKU0NvbnRleHRSZWYgY3R4
LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiAvKmV4Y2VwdGlvbiovKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgs
IHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmpl
Y3RPZkNsYXNzKGN0eCwgYXJndW1lbnRzWzBdLCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUqIHByb2Zp
bGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKLSAgICBwcm9maWxlLT5leGNsdWRlKHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGFyZ3VtZW50c1swXSkpKSk7Ci0K
LSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLX0KLQotc3RhdGljIEpTVmFs
dWVSZWYgcmVzdG9yZUFsbChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9u
Ki8sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCAvKmFyZ3VtZW50Q291bnQqLywgY29u
c3QgSlNWYWx1ZVJlZltdIC8qYXJndW1lbnRzKi8sIEpTVmFsdWVSZWYqIC8qZXhjZXB0aW9uKi8p
Ci17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJv
ZmlsZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsK
LQotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBwcm9maWxlLT5yZXN0b3JlQWxsKCk7Ci0KLSAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLX0KLQotc3RhdGljIHZvaWQgZmlu
YWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQotewotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0
aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOwotICAgIHByb2Zp
bGVDYWNoZSgpLnJlbW92ZShwcm9maWxlKTsKLSAgICBwcm9maWxlLT5kZXJlZigpOwotfQotCi1K
U0NsYXNzUmVmIFByb2ZpbGVDbGFzcygpCi17Ci0gICAgc3RhdGljIEpTU3RhdGljVmFsdWUgc3Rh
dGljVmFsdWVzW10gPSB7Ci0gICAgICAgIHsgInRpdGxlIiwgZ2V0VGl0bGVDYWxsYmFjaywgMCwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgImhlYWQiLCBnZXRIZWFkQ2Fs
bGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJ1aWQiLCBn
ZXRVbmlxdWVJZENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAg
ICAgeyAwLCAwLCAwLCAwIH0KLSAgICB9OwotCi0gICAgc3RhdGljIEpTU3RhdGljRnVuY3Rpb24g
c3RhdGljRnVuY3Rpb25zW10gPSB7Ci0gICAgICAgIHsgImZvY3VzIiwgZm9jdXMsIGtKU1Byb3Bl
cnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJleGNsdWRlIiwgZXhjbHVkZSwga0pTUHJv
cGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInJlc3RvcmVBbGwiLCByZXN0b3JlQWxs
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAwLCAwLCAwIH0KLSAgICB9
OwotCi0gICAgc3RhdGljIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVmaW5pdGlvbiA9IHsKLSAg
ICAgICAgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiUHJvZmlsZSIsIDAsIHN0YXRpY1ZhbHVl
cywgc3RhdGljRnVuY3Rpb25zLAotICAgICAgICAwLCBmaW5hbGl6ZSwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMAotICAgIH07Ci0KLSAgICBzdGF0aWMgSlNDbGFzc1JlZiBwcm9maWxlQ2xhc3Mg
PSBKU0NsYXNzQ3JlYXRlKCZjbGFzc0RlZmluaXRpb24pOwotICAgIHJldHVybiBwcm9maWxlQ2xh
c3M7Ci19Ci0KLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIFByb2ZpbGUqIHByb2ZpbGUp
Ci17Ci0gICAgaWYgKCFwcm9maWxlKQotICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0KLSAgICBK
U09iamVjdCogcHJvZmlsZVdyYXBwZXIgPSBwcm9maWxlQ2FjaGUoKS5nZXQocHJvZmlsZSk7Ci0g
ICAgaWYgKHByb2ZpbGVXcmFwcGVyKQotICAgICAgICByZXR1cm4gcHJvZmlsZVdyYXBwZXI7Ci0K
LSAgICBwcm9maWxlLT5yZWYoKTsKLSAgICBwcm9maWxlV3JhcHBlciA9IHRvSlMoSlNPYmplY3RN
YWtlKHRvUmVmKGV4ZWMpLCBQcm9maWxlQ2xhc3MoKSwgc3RhdGljX2Nhc3Q8dm9pZCo+KHByb2Zp
bGUpKSk7Ci0gICAgcHJvZmlsZUNhY2hlKCkuc2V0KHByb2ZpbGUsIHByb2ZpbGVXcmFwcGVyKTsK
LSAgICByZXR1cm4gcHJvZmlsZVdyYXBwZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0ph
dmFTY3JpcHRQcm9maWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MDA4ODEu
LjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEphdmFTY3JpcHRQcm9maWxlX2gKLSNkZWZpbmUgSmF2
YVNjcmlwdFByb2ZpbGVfaAotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIFVT
RShKU0MpCi0KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLQotbmFtZXNwYWNlIEpTQyB7
Ci0gICAgY2xhc3MgRXhlY1N0YXRlOwotICAgIGNsYXNzIFByb2ZpbGU7Ci19Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotICAgIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9maWxlKik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9KYXZh
U2NyaXB0UHJvZmlsZU5vZGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mzg3
Yzg1Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9k
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJKYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCIKLQotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKSAmJiBVU0UoSlNDKQotCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSA8
cHJvZmlsZXIvUHJvZmlsZU5vZGUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0
Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1JldGFpblB0ci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4K
LSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQ2FjaGUKLQotdHlwZWRlZiBIYXNoTWFwPFByb2Zp
bGVOb2RlKiwgSlNPYmplY3QqPiBQcm9maWxlTm9kZU1hcDsKLQotc3RhdGljIFByb2ZpbGVOb2Rl
TWFwJiBwcm9maWxlTm9kZUNhY2hlKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFByb2Zp
bGVOb2RlTWFwLCBzdGF0aWNQcm9maWxlTm9kZXMsICgpKTsKLSAgICByZXR1cm4gc3RhdGljUHJv
ZmlsZU5vZGVzOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRGdW5jdGlvbk5hbWUoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVS
ZWYqKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3Qs
IFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJv
ZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBmdW5jdGlvbk5hbWVTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnMocHJvZmlsZU5vZGUtPmZ1bmN0aW9uTmFtZSgpLmRhdGEoKSwgcHJvZmls
ZU5vZGUtPmZ1bmN0aW9uTmFtZSgpLnNpemUoKSkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0
cmluZyhjdHgsIGZ1bmN0aW9uTmFtZVN0cmluZy5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVl
UmVmIGdldFVSTChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0
cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNz
KGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUg
PSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7Ci0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHVybFN0cmluZyhBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhwcm9maWxlTm9kZS0+dXJsKCkuZGF0YSgpLCBwcm9maWxl
Tm9kZS0+dXJsKCkuc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGN0eCwg
dXJsU3RyaW5nLmdldCgpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0TGluZU51bWJlcihK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNW
YWx1ZVJlZiopCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09i
amVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2Fz
dDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmlsZU5vZGUtPmxpbmVOdW1iZXIoKSk7Ci19
Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldFRvdGFsVGltZShKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgSlND
OjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVl
SXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9k
ZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJp
dmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJv
ZmlsZU5vZGUtPnRvdGFsVGltZSgpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0U2VsZlRp
bWUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYs
IEpTVmFsdWVSZWYqKQotewotICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNP
bmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3Qs
IFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJv
ZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBK
U1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2ZpbGVOb2RlLT5zZWxmVGltZSgpKTsKLX0KLQotc3Rh
dGljIEpTVmFsdWVSZWYgZ2V0TnVtYmVyT2ZDYWxscyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgSlNDOjpK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNP
YmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSog
cHJvZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0
ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmls
ZU5vZGUtPm51bWJlck9mQ2FsbHMoKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldENoaWxk
cmVuKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVm
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwg
dGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0
aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0g
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQcm9maWxlTm9kZT4gPiYgY2hpbGRyZW4gPSBwcm9maWxl
Tm9kZS0+Y2hpbGRyZW4oKTsKLQotICAgIEpTT2JqZWN0UmVmIGdsb2JhbCA9IEpTQ29udGV4dEdl
dEdsb2JhbE9iamVjdChjdHgpOwotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFycmF5
U3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXJyYXkiKSk7Ci0K
LSAgICBKU1ZhbHVlUmVmIGFycmF5UHJvcGVydHkgPSBKU09iamVjdEdldFByb3BlcnR5KGN0eCwg
Z2xvYmFsLCBhcnJheVN0cmluZy5nZXQoKSwgZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9u
ICYmICpleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgp
OwotCi0gICAgSlNPYmplY3RSZWYgYXJyYXlDb25zdHJ1Y3RvciA9IEpTVmFsdWVUb09iamVjdChj
dHgsIGFycmF5UHJvcGVydHksIGV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhj
ZXB0aW9uKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAg
IEpTT2JqZWN0UmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3IoY3R4LCBhcnJh
eUNvbnN0cnVjdG9yLCAwLCAwLCBleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24gJiYgKmV4
Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHVzaFN0cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoInB1c2giKSk7Ci0KLSAgICBKU1ZhbHVlUmVmIHB1c2hQcm9wZXJ0
eSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY3R4LCByZXN1bHQsIHB1c2hTdHJpbmcuZ2V0KCksIGV4
Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIEpTT2JqZWN0UmVmIHB1c2hGdW5j
dGlvbiA9IEpTVmFsdWVUb09iamVjdChjdHgsIHB1c2hQcm9wZXJ0eSwgZXhjZXB0aW9uKTsKLSAg
ICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjdHgpOwotCi0gICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAg
IGZvciAoVmVjdG9yPFJlZlB0cjxQcm9maWxlTm9kZT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBj
aGlsZHJlbi5iZWdpbigpOyBpdCAhPSBjaGlsZHJlbi5lbmQoKTsgKytpdCkgewotICAgICAgICBK
U1ZhbHVlUmVmIGFyZzAgPSB0b1JlZihleGVjLCB0b0pTKGV4ZWMsICgqaXQpLmdldCgpICkpOwot
ICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGN0eCwgcHVzaEZ1bmN0aW9uLCByZXN1bHQs
IDEsICZhcmcwLCBleGNlcHRpb24pOwotICAgICAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRp
b24pCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRWaXNpYmxl
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBK
U1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQ
cm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2Zp
bGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZU1ha2VCb29sZWFuKGN0eCwgcHJvZmlsZU5vZGUtPnZpc2libGUoKSk7Ci19Ci0KLXN0YXRp
YyBKU1ZhbHVlUmVmIGdldENhbGxVSUQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQotewotICAgIEpTQzo6SlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZD
bGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVO
b2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2ZpbGVOb2RlLT5j
YWxsSWRlbnRpZmllcigpLmhhc2goKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGZpbmFsaXplKEpTT2Jq
ZWN0UmVmIG9iamVjdCkKLXsKLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNf
Y2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKLSAgICBwcm9m
aWxlTm9kZUNhY2hlKCkucmVtb3ZlKHByb2ZpbGVOb2RlKTsKLSAgICBwcm9maWxlTm9kZS0+ZGVy
ZWYoKTsKLX0KLQotSlNDbGFzc1JlZiBQcm9maWxlTm9kZUNsYXNzKCkKLXsKLSAgICBzdGF0aWMg
SlNTdGF0aWNWYWx1ZSBzdGF0aWNWYWx1ZXNbXSA9IHsKLSAgICAgICAgeyAiZnVuY3Rpb25OYW1l
IiwgZ2V0RnVuY3Rpb25OYW1lLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAg
ICAgeyAidXJsIiwgZ2V0VVJMLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAg
ICAgeyAibGluZU51bWJlciIsIGdldExpbmVOdW1iZXIsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRl
Tm9uZSB9LAotICAgICAgICB7ICJ0b3RhbFRpbWUiLCBnZXRUb3RhbFRpbWUsIDAsIGtKU1Byb3Bl
cnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJzZWxmVGltZSIsIGdldFNlbGZUaW1lLCAw
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAibnVtYmVyT2ZDYWxscyIs
IGdldE51bWJlck9mQ2FsbHMsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAg
ICB7ICJjaGlsZHJlbiIsIGdldENoaWxkcmVuLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUg
fSwKLSAgICAgICAgeyAidmlzaWJsZSIsIGdldFZpc2libGUsIDAsIGtKU1Byb3BlcnR5QXR0cmli
dXRlTm9uZSB9LAotICAgICAgICB7ICJjYWxsVUlEIiwgZ2V0Q2FsbFVJRCwgMCwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgMCwgMCwgMCwgMCB9Ci0gICAgfTsKLQotICAg
IHN0YXRpYyBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZmluaXRpb24gPSB7Ci0gICAgICAgIDAs
IGtKU0NsYXNzQXR0cmlidXRlTm9uZSwgIlByb2ZpbGVOb2RlIiwgMCwgc3RhdGljVmFsdWVzLCAw
LAotICAgICAgICAwLCBmaW5hbGl6ZSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMAotICAgIH07
Ci0KLSAgICBzdGF0aWMgSlNDbGFzc1JlZiBwcm9maWxlTm9kZUNsYXNzID0gSlNDbGFzc0NyZWF0
ZSgmY2xhc3NEZWZpbml0aW9uKTsKLSAgICByZXR1cm4gcHJvZmlsZU5vZGVDbGFzczsKLX0KLQot
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlKQot
ewotICAgIGlmICghcHJvZmlsZU5vZGUpCi0gICAgICAgIHJldHVybiBqc051bGwoKTsKLQotICAg
IEpTT2JqZWN0KiBwcm9maWxlTm9kZVdyYXBwZXIgPSBwcm9maWxlTm9kZUNhY2hlKCkuZ2V0KHBy
b2ZpbGVOb2RlKTsKLSAgICBpZiAocHJvZmlsZU5vZGVXcmFwcGVyKQotICAgICAgICByZXR1cm4g
cHJvZmlsZU5vZGVXcmFwcGVyOwotCi0gICAgcHJvZmlsZU5vZGUtPnJlZigpOwotCi0gICAgcHJv
ZmlsZU5vZGVXcmFwcGVyID0gdG9KUyhKU09iamVjdE1ha2UodG9SZWYoZXhlYyksIFByb2ZpbGVO
b2RlQ2xhc3MoKSwgc3RhdGljX2Nhc3Q8dm9pZCo+KHByb2ZpbGVOb2RlKSkpOwotICAgIHByb2Zp
bGVOb2RlQ2FjaGUoKS5zZXQocHJvZmlsZU5vZGUsIHByb2ZpbGVOb2RlV3JhcHBlcik7Ci0gICAg
cmV0dXJuIHByb2ZpbGVOb2RlV3JhcHBlcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0phdmFTY3JpcHRQcm9maWxlTm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
Njg1YWM2Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxl
Tm9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSmF2YVNjcmlwdFByb2ZpbGVOb2Rl
X2gKLSNkZWZpbmUgSmF2YVNjcmlwdFByb2ZpbGVOb2RlX2gKLQotI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKSAmJiBVU0UoSlNDKQotCi0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+Ci0KLW5hbWVzcGFjZSBKU0Mgewot
ICAgIGNsYXNzIEV4ZWNTdGF0ZTsKLSAgICBjbGFzcyBQcm9maWxlTm9kZTsKLX0KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0gICAgSlNDbGFzc1JlZiBQcm9maWxlTm9kZUNsYXNzKCk7Ci0gICAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb2ZpbGVOb2RlKik7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFBy
b2ZpbGUuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ0YjA0YQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1KQVZBU0NSSVBU
X0RFQlVHR0VSLCBPbWl0Q29uc3RydWN0b3JdIFNjcmlwdFByb2ZpbGUgeworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRpdGxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyB1aWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTY3JpcHRQ
cm9maWxlTm9kZSBoZWFkOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2Zp
bGVOb2RlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmYxN2JkCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRs
CkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNl
IFtDb25kaXRpb25hbD1KQVZBU0NSSVBUX0RFQlVHR0VSLCBPbWl0Q29uc3RydWN0b3JdIFNjcmlw
dFByb2ZpbGVOb2RlIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBmdW5j
dGlvbk5hbWU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJsOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsaW5lTnVtYmVyOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIHRvdGFsVGltZTsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGRvdWJsZSBzZWxmVGltZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZDYWxsczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtD
dXN0b21HZXR0ZXJdIEFycmF5IGNoaWxkcmVuOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiB2aXNpYmxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRl
cl0gdW5zaWduZWQgbG9uZyBjYWxsVUlEOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vYW5kcm9pZC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9hbmRyb2lkL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKaW5kZXggOTY5OGVhZC4uMjRkZmMz
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1RlbXBvcmFyeUxpbmtTdHVi
cy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1RlbXBvcmFyeUxpbmtTdHVicy5j
cHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJKTklVdGlsaXR5UHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXIuaCIKLSNpbmNsdWRlICJKYXZhU2NyaXB0UHJvZmlsZS5oIgogI2VuZGlmCiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48644</attachid>
            <date>2010-02-12 07:17:57 -0800</date>
            <delta_ts>2010-02-15 03:31:04 -0800</delta_ts>
            <desc>instead of replacing, just move those wrappers</desc>
            <filename>move-profiles-to-bindings-patch</filename>
            <type>text/plain</type>
            <size>59534</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTdiODA1OS4uYjQ1OGJlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0wMi0xMiAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgSlNDLXNwZWNpZmljIHdyYXBwZXJzIGZvciBQcm9m
aWxlIGFuZCBQcm9maWxlTm9kZSB0byBiaW5kaW5ncy9qcy4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ4NDgKKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcm9maWxlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0VGl0bGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpnZXRIZWFkQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0VW5pcXVlSWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
Ojpmb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpleGNsdWRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlc3RvcmVBbGwpOgorICAgICAgICAoV2ViQ29yZTo6ZmluYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvZmlsZUNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6cHJvZmlsZU5vZGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGdW5jdGlvbk5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmdldExpbmVO
dW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VG90YWxUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFNlbGZUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE51bWJlck9mQ2FsbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Vmlz
aWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDYWxsVUlEKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2ZpbGVOb2RlQ2xhc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2Zp
bGVOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmg6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oOiBSZW1v
dmVkLgorCiAyMDEwLTAyLTEyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGUwYzlk
YzYuLmI1Njg4NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNDY1LDYgKzQ2NSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuY3Bw
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yLmggXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCBcCisJV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3Mv
anMvSmF2YVNjcmlwdFByb2ZpbGUuaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0
UHJvZmlsZU5vZGUuY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxl
Tm9kZS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgXAogCVdl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmggXAogCVdlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QXJyYXkuY3BwIFwKQEAgLTEyMjQsMTAgKzEyMjgsNiBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z0xpc3RlbmVyLmggXAog
CVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgXAogCVdlYkNvcmUv
aW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5oIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9K
YXZhU2NyaXB0UHJvZmlsZS5jcHAgXAotCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9m
aWxlLmggXAotCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgXAot
CVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oIFwKIAlXZWJDb3JlL2lu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9U
aW1lbGluZVJlY29yZEZhY3RvcnkuaCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwIFwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggMjJiNjExNy4uNjllMjA2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYxNyw2ICs2MTcsMTAgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yLmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmNwcCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSmF2YVNjcmlwdFByb2ZpbGUuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSmF2
YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSmF2YVNj
cmlwdFByb2ZpbGVOb2RlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5jcHAnLApAQCAtMTYxMCwxMCAr
MTYxNCw2IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z0xpc3RlbmVy
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmgnLAotICAgICAg
ICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAnLAotICAgICAgICAgICAgJ2lu
c3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5oJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2
YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3Jp
cHRQcm9maWxlTm9kZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRG
YWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oJywKICAgICAgICAgICAgICdsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAn
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
aW5kZXggMTNkNjMxNC4uMzI5NmVmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybwor
KysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zMzksNiArMzM5LDEwIEBAIFNPVVJDRVMgKz0g
XAogICAgIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIFwKICAgICBiaW5kaW5n
cy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU1Bv
cFN0YXRlRXZlbnRDdXN0b20uY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmls
ZS5oIFwKKyAgICBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBcCisgICAgYmlu
ZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGUuY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9KYXZhU2Ny
aXB0UHJvZmlsZU5vZGUuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0QXJyYXkuY3BwIFwKICAg
ICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIFwKICAgICBiaW5kaW5ncy9q
cy9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKQEAgLTEzNzEsOCArMTM3NSw2IEBAIEhFQURFUlMgKz0g
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggXAogICAgIGluc3BlY3Rv
ci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggXAogICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdT
ZXJ2ZXIuaCBcCi0gICAgaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmggXAotICAgIGluc3Bl
Y3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBcCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oIFwKICAgICBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmggXAogICAgIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIFwKQEAgLTI2
MjgsOCArMjYzMCw2IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSPTEpIHsKICAgICAgICAgYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9t
LmNwcCBcCiAgICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCiAgICAg
ICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKLSAgICAgICAgaW5zcGVj
dG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcCBcCi0gICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0
UHJvZmlsZU5vZGUuY3BwCiB9CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9PRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlM9MSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggZmY3OTYzYi4uYTBmNzI0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0zOTg5Niw2ICszOTg5NiwyMiBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEphdmFTY3JpcHRQcm9maWxlLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8Rmls
ZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKYXZhU2NyaXB0UHJvZmlsZS5o
Ig0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAiDQorCQkJCQk+DQorCQkJ
CTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNc
SmF2YVNjcmlwdFByb2ZpbGVOb2RlLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZp
bGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NoZWR1bGVkQWN0aW9uLmNw
cCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTQyNjgxLDIyICs0MjY5
Nyw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJvZmlsZS5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+
DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSmF2YVNjcmlwdFBy
b2ZpbGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIg0KLQkJCQk+DQotCQkJ
PC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEphdmFT
Y3JpcHRQcm9maWxlTm9kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBlODcyMDZkLi45ODQ2ZDFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTI4LDEwICs1MjgsNiBAQAogCQkxQzgxQjk1QTBFOTczMzA4
MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3Bl
Y3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQzgxQjk1QjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgx
Qjk1NzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi87IH07CiAJ
CTFDODFCOTVDMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU4MEU5NzMzMDgwMDI2
NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQkxQzgxQjlGRjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzgxQjlGQjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmgg
Ki87IH07Ci0JCTFDODFCQTAwMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4
MUI5RkMwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgKi87IH07
Ci0JCTFDODFCQTAxMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5RkQwRTk3MzND
QjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmggKi87IH07Ci0JCTFDODFCQTAyMEU5NzMz
Q0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjlGRTBFOTczM0NCMDAyNjZFMDcgLyogSmF2
YVNjcmlwdFByb2ZpbGUuY3BwICovOyB9OwogCQkxQzgxQkEwOTBFOTczNDgzMDAyNjZFMDcgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzgxQkEwMzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHAgKi87IH07CiAJCTFDODFCQTBBMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzgxQkEwNDBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9
OwogCQkxQzgxQkEwQzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCQTA2
MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDU2LDYgKzI0NTIsMTAg
QEAKIAkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODQwRkRGNEQ2RDAw
RUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovOyB9OwogCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5
QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsK
IAkJOTdFRjdERkUxMDdFNTVCNzAwRDdDNDlDIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RUY3REZEMTA3
RTU1QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgKi87IH07CisJCTlGMkEz
MjJCMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjJBMzIyNzExMjVBMEEyMDAzQzMw
NTYgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwICovOyB9OworCQk5RjJBMzIyQzExMjVBMEEyMDAz
QzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlGMkEzMjI4MTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0
UHJvZmlsZS5oICovOyB9OworCQk5RjJBMzIyRDExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlGMkEzMjI5MTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUu
Y3BwICovOyB9OworCQk5RjJBMzIyRTExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2Zp
bGVOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
RjJBMzIyQTExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggKi87IH07
CiAJCTlGNkZDMTk2MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjZGQzE5NDExMjJF
ODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovOyB9OwogCQk5RjZGQzE5NzEx
MjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNkZDMTk1MTEyMkU4MkEwMEU4MDE5NiAvKiBT
Y3JpcHREZWJ1Z1NlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTlGNzIzMDRGMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjcyMzA0QzEx
MTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01ODQ1LDEwICs1ODQ1LDYgQEAKIAkJMUM4MUI5
NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNw
ZWN0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU5MEU5NzMzMDgw
MDI2NkUwNyAvKiBmcm9udC1lbmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSAiZnJvbnQtZW5kIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUM4MUI5RkIwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9m
aWxlTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0UHJv
ZmlsZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4MUI5RkMwRTk3MzND
QjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQzgxQjlGRDBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlw
dFByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFBy
b2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4MUI5RkUwRTk3MzNDQjAw
MjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEphdmFTY3JpcHRQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM4MUJBMDMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCQTA0MEU5NzM0ODMw
MDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM4MUJBMDUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzgwMSw2ICs3Nzk3LDEwIEBACiAJCTk3REQ0RDg0MEZE
RjRENkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFhTU0F1ZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBYU1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3RUY3REZEMTA3RTU1QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDb250cm9sbGVy
QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGMkEzMjI3MTEyNUEwQTIw
MDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlGMkEzMjI4MTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0UHJvZmlsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjJBMzIyOTExMjVBMEEyMDAzQzMwNTYgLyog
SmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTlGMkEzMjJBMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFByb2ZpbGVOb2Rl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNkZDMTk0MTEyMkU4MkEwMEU4MDE5
NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlGNkZDMTk1MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5RjcyMzA0QzExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0
UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRQcm9maWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY0MCwxMCArMTA2NDAsNiBAQAog
CQkJCTFDODFCQTA2MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5o
ICovLAogCQkJCTFDODFCQTA3MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwICovLAogCQkJCTFDODFCQTA4MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVi
dWdTZXJ2ZXIuaCAqLywKLQkJCQkxQzgxQjlGRTBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlw
dFByb2ZpbGUuY3BwICovLAotCQkJCTFDODFCOUZEMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2Ny
aXB0UHJvZmlsZS5oICovLAotCQkJCTFDODFCOUZDMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2Ny
aXB0UHJvZmlsZU5vZGUuY3BwICovLAotCQkJCTFDODFCOUZCMEU5NzMzQ0IwMDI2NkUwNyAvKiBK
YXZhU2NyaXB0UHJvZmlsZU5vZGUuaCAqLywKIAkJCQlCQ0M2NEY1RjBEQ0ZCODRFMDA4MUVGM0Ig
LyogbG9jYWxpemVkU3RyaW5ncy5qcyAqLywKIAkJCQk3NTUzQ0ZFNzEwOEY0NzNGMDBFQTI4MUUg
LyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCAqLywKIAkJCQk3NTUzQ0ZFNjEwOEY0NzNGMDBF
QTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi8sCkBAIC0xNDYyNiw2ICsxNDYyMiwx
MCBAQAogCQkJCUIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVy
LmggKi8sCiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29udGV4dEJh
c2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckNvbnRl
eHRCYXNlLmggKi8sCisJCQkJOUYyQTMyMjcxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQ
cm9maWxlLmNwcCAqLywKKwkJCQk5RjJBMzIyODExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlw
dFByb2ZpbGUuaCAqLywKKwkJCQk5RjJBMzIyOTExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmNwcCAqLywKKwkJCQk5RjJBMzIyQTExMjVBMEEyMDAzQzMwNTYgLyogSmF2
YVNjcmlwdFByb2ZpbGVOb2RlLmggKi8sCiAJCQkJQkNBMzc4QkEwRDE1RjY0MjAwQjc5M0Q2IC8q
IFNjaGVkdWxlZEFjdGlvbi5jcHAgKi8sCiAJCQkJQkNBMzc4QkIwRDE1RjY0MjAwQjc5M0Q2IC8q
IFNjaGVkdWxlZEFjdGlvbi5oICovLAogCQkJCTdBMUU4OEYzMTAxQ0MzODQwMDBDNERGNSAvKiBT
Y3JpcHRBcnJheS5jcHAgKi8sCkBAIC0xNzMwMCw4ICsxNzMwMCw2IEBACiAJCQkJMUM4MUJBMEEw
RTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDODFCQTBDMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUJBMEUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3Jp
cHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUM4MUJBMDEwRTk3MzNDQjAwMjY2
RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQzgxQjlGRjBF
OTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1OUJDMzkzRjExMDU0QTEzMDBGRDg1REIgLyogSmF2YVN0cmluZ0pTQy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE1NjlEMDQwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9qc29iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTkxMzk1M0IxMTA3NTg0NTAwODNFQzU1IC8qIEpOSUJyaWRnZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xODUyNiw2ICsxODUyNCw4IEBACiAJCQkJQkNFNzg5MTYxMTIw
RDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U3
ODk4NjExMjBFN0E2MDA2MEVDRTUgLyogQmlkaVJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUY2
RkMxOTcxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5RjJBMzIyQzExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCBp
biBIZWFkZXJzICovLAorCQkJCTlGMkEzMjJFMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0
UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTk0OTEsOCArMTk0OTEsNiBAQAogCQkJ
CTU5QTlFN0IwMTEwNDc1ODgwMERGQjRDMSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUM4MUJBMDkwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMEQwRTk3MzQ4MzAwMjY2RTA3IC8qIEph
dmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQzgxQkEwMjBFOTcz
M0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MUM4MUJBMDAwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTU2OUQwMzBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2pzb2JqZWN0
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMDUwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9v
YmpjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTkxMzk1M0QxMTA3NTg0RTAwODNFQzU1IC8qIEpO
SUJyaWRnZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIwNzA3LDYgKzIwNzA1LDggQEAKIAkJCQlC
Q0U3ODk4QjExMjBFODAyMDA2MEVDRTUgLyogQmlkaVJ1bi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5RjZGQzE5NjExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzZGRjE3RTMxMTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdpblZpZXdOb25l
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlGMkEzMjJCMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZh
U2NyaXB0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5RjJBMzIyRDExMjVBMEEyMDAz
QzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDVhMDgyMGIuLjMyNWY4
NWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTEz
Myw2ICsxMzMsOCBAQAogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yLmNwcCIKICNpbmNsdWRlICJK
U1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwIgorI2luY2x1ZGUgIkphdmFTY3JpcHRQcm9maWxlLmNw
cCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIgogI2luY2x1ZGUgIlNjaGVk
dWxlZEFjdGlvbi5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0QXJyYXkuY3BwIgogI2luY2x1ZGUgIlNj
cmlwdENhY2hlZEZyYW1lRGF0YS5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ29uc29sZUN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3Rv
bS5jcHAKaW5kZXggYjYzMWNkZC4uYTkxNDg3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25z
b2xlQ3VzdG9tLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNp
bmNsdWRlICJKYXZhU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5o
IgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXku
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTM4LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAKLXR5cGVkZWYgVmVj
dG9yPFJlZlB0cjxKU0M6OlByb2ZpbGU+ID4gUHJvZmlsZXNBcnJheTsKK3R5cGVkZWYgVmVjdG9y
PFJlZlB0cjxTY3JpcHRQcm9maWxlPiA+IFByb2ZpbGVzQXJyYXk7CiAKIEpTVmFsdWUgSlNDb25z
b2xlOjpwcm9maWxlcyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjNhNjVmYjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFT
Y3JpcHRQcm9maWxlLmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
YXZhU2NyaXB0UHJvZmlsZS5oIgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisK
KyNpbmNsdWRlICJKYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCIKKyNpbmNsdWRlIDxwcm9maWxlci9Q
cm9maWxlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNTdHJpbmdSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTVmFs
dWUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQ2FjaGUKKwordHlwZWRlZiBIYXNoTWFw
PFByb2ZpbGUqLCBKU09iamVjdCo+IFByb2ZpbGVNYXA7CisKK3N0YXRpYyBQcm9maWxlTWFwJiBw
cm9maWxlQ2FjaGUoKQoreyAKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFByb2ZpbGVNYXAsIHN0
YXRpY1Byb2ZpbGVzLCAoKSk7CisgICAgcmV0dXJuIHN0YXRpY1Byb2ZpbGVzOworfQorCisvLyBT
dGF0aWMgVmFsdWVzCisKK3N0YXRpYyBKU0NsYXNzUmVmIFByb2ZpbGVDbGFzcygpOworCitzdGF0
aWMgSlNWYWx1ZVJlZiBnZXRUaXRsZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBpZiAoIUpT
VmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgUHJvZmlsZSog
cHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjdHgsIE9wYXF1ZUpTU3RyaW5n
OjpjcmVhdGUocHJvZmlsZS0+dGl0bGUoKSkuZ2V0KCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJl
ZiBnZXRIZWFkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQoreworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0
T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7CisgICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pT
KGV4ZWMsIHByb2ZpbGUtPmhlYWQoKSkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRVbmlx
dWVJZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpT
U3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xh
c3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19j
YXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVy
biBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2ZpbGUtPnVpZCgpKTsKK30KKworLy8gU3RhdGlj
IEZ1bmN0aW9ucworCitzdGF0aWMgSlNWYWx1ZVJlZiBmb2N1cyhKU0NvbnRleHRSZWYgY3R4LCBK
U09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiAv
KmV4Y2VwdGlvbiovKQoreworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRo
aXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGN0eCk7CisKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RP
ZkNsYXNzKGN0eCwgYXJndW1lbnRzWzBdLCBQcm9maWxlTm9kZUNsYXNzKCkpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGUqIHByb2ZpbGUg
PSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
KyAgICBwcm9maWxlLT5mb2N1cyhzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0
UHJpdmF0ZShjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihhcmd1bWVudHNbMF0pKSkpOworCisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVm
IGV4Y2x1ZGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogLypleGNlcHRpb24qLykKK3sKKyAgICBpZiAoIUpT
VmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsK
KworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIGFyZ3VtZW50c1swXSwgUHJv
ZmlsZU5vZGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0
eCk7CisKKyAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcHJvZmlsZS0+ZXhjbHVkZShzdGF0aWNf
Y2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShjb25zdF9jYXN0PEpTT2JqZWN0
UmVmPihhcmd1bWVudHNbMF0pKSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGN0eCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlc3RvcmVBbGwoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0IEpTVmFsdWVSZWZbXSAvKmFyZ3VtZW50cyovLCBK
U1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQoreworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZD
bGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGlj
X2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcHJv
ZmlsZS0+cmVzdG9yZUFsbCgpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0
eCk7Cit9CisKK3N0YXRpYyB2b2lkIGZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKK3sKKyAg
ICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJp
dmF0ZShvYmplY3QpKTsKKyAgICBwcm9maWxlQ2FjaGUoKS5yZW1vdmUocHJvZmlsZSk7CisgICAg
cHJvZmlsZS0+ZGVyZWYoKTsKK30KKworSlNDbGFzc1JlZiBQcm9maWxlQ2xhc3MoKQoreworICAg
IHN0YXRpYyBKU1N0YXRpY1ZhbHVlIHN0YXRpY1ZhbHVlc1tdID0geworICAgICAgICB7ICJ0aXRs
ZSIsIGdldFRpdGxlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAg
ICAgICB7ICJoZWFkIiwgZ2V0SGVhZENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5v
bmUgfSwKKyAgICAgICAgeyAidWlkIiwgZ2V0VW5pcXVlSWRDYWxsYmFjaywgMCwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgMCwgMCwgMCwgMCB9CisgICAgfTsKKworICAg
IHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0geworICAgICAgICB7
ICJmb2N1cyIsIGZvY3VzLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAi
ZXhjbHVkZSIsIGV4Y2x1ZGUsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAgICAgICB7
ICJyZXN0b3JlQWxsIiwgcmVzdG9yZUFsbCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisg
ICAgICAgIHsgMCwgMCwgMCB9CisgICAgfTsKKworICAgIHN0YXRpYyBKU0NsYXNzRGVmaW5pdGlv
biBjbGFzc0RlZmluaXRpb24gPSB7CisgICAgICAgIDAsIGtKU0NsYXNzQXR0cmlidXRlTm9uZSwg
IlByb2ZpbGUiLCAwLCBzdGF0aWNWYWx1ZXMsIHN0YXRpY0Z1bmN0aW9ucywKKyAgICAgICAgMCwg
ZmluYWxpemUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKKyAgICB9OworCisgICAgc3RhdGlj
IEpTQ2xhc3NSZWYgcHJvZmlsZUNsYXNzID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWZpbml0aW9u
KTsKKyAgICByZXR1cm4gcHJvZmlsZUNsYXNzOworfQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRl
KiBleGVjLCBQcm9maWxlKiBwcm9maWxlKQoreworICAgIGlmICghcHJvZmlsZSkKKyAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOworCisgICAgSlNPYmplY3QqIHByb2ZpbGVXcmFwcGVyID0gcHJvZmls
ZUNhY2hlKCkuZ2V0KHByb2ZpbGUpOworICAgIGlmIChwcm9maWxlV3JhcHBlcikKKyAgICAgICAg
cmV0dXJuIHByb2ZpbGVXcmFwcGVyOworCisgICAgcHJvZmlsZS0+cmVmKCk7CisgICAgcHJvZmls
ZVdyYXBwZXIgPSB0b0pTKEpTT2JqZWN0TWFrZSh0b1JlZihleGVjKSwgUHJvZmlsZUNsYXNzKCks
IHN0YXRpY19jYXN0PHZvaWQqPihwcm9maWxlKSkpOworICAgIHByb2ZpbGVDYWNoZSgpLnNldChw
cm9maWxlLCBwcm9maWxlV3JhcHBlcik7CisgICAgcmV0dXJuIHByb2ZpbGVXcmFwcGVyOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2Zp
bGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGZkM2U0Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEphdmFT
Y3JpcHRQcm9maWxlX2gKKyNkZWZpbmUgSmF2YVNjcmlwdFByb2ZpbGVfaAorCisjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIFByb2ZpbGU7
Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9maWxlKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4yZDQ2MmY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCkBAIC0wLDAgKzEsMjM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRQcm9maWxlTm9kZS5oIgorCisjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNs
dWRlIDxwcm9maWxlci9Qcm9maWxlTm9kZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQ
SUNhc3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1
ZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBDYWNoZQorCit0eXBlZGVmIEhhc2hNYXA8
UHJvZmlsZU5vZGUqLCBKU09iamVjdCo+IFByb2ZpbGVOb2RlTWFwOworCitzdGF0aWMgUHJvZmls
ZU5vZGVNYXAmIHByb2ZpbGVOb2RlQ2FjaGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UHJvZmlsZU5vZGVNYXAsIHN0YXRpY1Byb2ZpbGVOb2RlcywgKCkpOworICAgIHJldHVybiBzdGF0
aWNQcm9maWxlTm9kZXM7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldEZ1bmN0aW9uTmFtZShK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNW
YWx1ZVJlZiopCit7CisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09i
amVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2Fz
dDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGZ1bmN0aW9uTmFtZVN0cmluZyhBZG9wdCwgSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycyhwcm9maWxlTm9kZS0+ZnVuY3Rpb25OYW1lKCkuZGF0YSgpLCBw
cm9maWxlTm9kZS0+ZnVuY3Rpb25OYW1lKCkuc2l6ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWVN
YWtlU3RyaW5nKGN0eCwgZnVuY3Rpb25OYW1lU3RyaW5nLmdldCgpKTsKK30KKworc3RhdGljIEpT
VmFsdWVSZWYgZ2V0VVJMKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9m
Q2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGVOb2RlKiBwcm9maWxl
Tm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0LCBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKHByb2ZpbGVOb2RlLT51cmwoKS5kYXRhKCksIHBy
b2ZpbGVOb2RlLT51cmwoKS5zaXplKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmco
Y3R4LCB1cmxTdHJpbmcuZ2V0KCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRMaW5lTnVt
YmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVm
LCBKU1ZhbHVlUmVmKikKK3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0
aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRp
Y19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+bGluZU51bWJlcigp
KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZ2V0VG90YWxUaW1lKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAg
ICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBpZiAoIUpT
VmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2Zp
bGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4
LCBwcm9maWxlTm9kZS0+dG90YWxUaW1lKCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRT
ZWxmVGltZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmlu
Z1JlZiwgSlNWYWx1ZVJlZiopCit7CisgICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOworCisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09i
amVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2Fz
dDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcmV0
dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmlsZU5vZGUtPnNlbGZUaW1lKCkpOworfQor
CitzdGF0aWMgSlNWYWx1ZVJlZiBnZXROdW1iZXJPZkNhbGxzKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBK
U0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBpZiAoIUpTVmFs
dWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGVO
b2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBw
cm9maWxlTm9kZS0+bnVtYmVyT2ZDYWxscygpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZ2V0
Q2hpbGRyZW4oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJp
bmdSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU0M6OkpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3Mo
Y3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9
IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2RlPiA+JiBjaGlsZHJlbiA9IHBy
b2ZpbGVOb2RlLT5jaGlsZHJlbigpOworCisgICAgSlNPYmplY3RSZWYgZ2xvYmFsID0gSlNDb250
ZXh0R2V0R2xvYmFsT2JqZWN0KGN0eCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
YXJyYXlTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcnJheSIp
KTsKKworICAgIEpTVmFsdWVSZWYgYXJyYXlQcm9wZXJ0eSA9IEpTT2JqZWN0R2V0UHJvcGVydHko
Y3R4LCBnbG9iYWwsIGFycmF5U3RyaW5nLmdldCgpLCBleGNlcHRpb24pOworICAgIGlmIChleGNl
cHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGN0eCk7CisKKyAgICBKU09iamVjdFJlZiBhcnJheUNvbnN0cnVjdG9yID0gSlNWYWx1ZVRvT2Jq
ZWN0KGN0eCwgYXJyYXlQcm9wZXJ0eSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uICYm
ICpleGNlcHRpb24pCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwor
CisgICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihjdHgs
IGFycmF5Q29uc3RydWN0b3IsIDAsIDAsIGV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbiAm
JiAqZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsK
KworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwdXNoU3RyaW5nKEFkb3B0LCBKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicHVzaCIpKTsKKworICAgIEpTVmFsdWVSZWYgcHVzaFBy
b3BlcnR5ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjdHgsIHJlc3VsdCwgcHVzaFN0cmluZy5nZXQo
KSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgSlNPYmplY3RSZWYgcHVz
aEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgcHVzaFByb3BlcnR5LCBleGNlcHRpb24p
OworICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7
CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2RlPiA+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLmVuZCgpOyArK2l0KSB7CisgICAg
ICAgIEpTVmFsdWVSZWYgYXJnMCA9IHRvUmVmKGV4ZWMsIHRvSlMoZXhlYywgKCppdCkuZ2V0KCkg
KSk7CisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY3R4LCBwdXNoRnVuY3Rpb24sIHJl
c3VsdCwgMSwgJmFyZzAsIGV4Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24gJiYgKmV4
Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldFZp
c2libGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdS
ZWYsIEpTVmFsdWVSZWYqKQoreworICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKKworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmpl
Y3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjdHgpOworCisgICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8
UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVy
biBKU1ZhbHVlTWFrZUJvb2xlYW4oY3R4LCBwcm9maWxlTm9kZS0+dmlzaWJsZSgpKTsKK30KKwor
c3RhdGljIEpTVmFsdWVSZWYgZ2V0Q2FsbFVJRChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCit7CisgICAgSlNDOjpKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgaWYgKCFKU1ZhbHVlSXNPYmpl
Y3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlTm9kZSogcHJv
ZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmlsZU5v
ZGUtPmNhbGxJZGVudGlmaWVyKCkuaGFzaCgpKTsKK30KKworc3RhdGljIHZvaWQgZmluYWxpemUo
SlNPYmplY3RSZWYgb2JqZWN0KQoreworICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0
YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOworICAg
IHByb2ZpbGVOb2RlQ2FjaGUoKS5yZW1vdmUocHJvZmlsZU5vZGUpOworICAgIHByb2ZpbGVOb2Rl
LT5kZXJlZigpOworfQorCitKU0NsYXNzUmVmIFByb2ZpbGVOb2RlQ2xhc3MoKQoreworICAgIHN0
YXRpYyBKU1N0YXRpY1ZhbHVlIHN0YXRpY1ZhbHVlc1tdID0geworICAgICAgICB7ICJmdW5jdGlv
bk5hbWUiLCBnZXRGdW5jdGlvbk5hbWUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAor
ICAgICAgICB7ICJ1cmwiLCBnZXRVUkwsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAor
ICAgICAgICB7ICJsaW5lTnVtYmVyIiwgZ2V0TGluZU51bWJlciwgMCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVOb25lIH0sCisgICAgICAgIHsgInRvdGFsVGltZSIsIGdldFRvdGFsVGltZSwgMCwga0pT
UHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgInNlbGZUaW1lIiwgZ2V0U2VsZlRp
bWUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAgICAgICB7ICJudW1iZXJPZkNh
bGxzIiwgZ2V0TnVtYmVyT2ZDYWxscywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisg
ICAgICAgIHsgImNoaWxkcmVuIiwgZ2V0Q2hpbGRyZW4sIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRl
Tm9uZSB9LAorICAgICAgICB7ICJ2aXNpYmxlIiwgZ2V0VmlzaWJsZSwgMCwga0pTUHJvcGVydHlB
dHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgImNhbGxVSUQiLCBnZXRDYWxsVUlELCAwLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAwLCAwLCAwLCAwIH0KKyAgICB9Owor
CisgICAgc3RhdGljIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVmaW5pdGlvbiA9IHsKKyAgICAg
ICAgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiUHJvZmlsZU5vZGUiLCAwLCBzdGF0aWNWYWx1
ZXMsIDAsCisgICAgICAgIDAsIGZpbmFsaXplLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCisg
ICAgfTsKKworICAgIHN0YXRpYyBKU0NsYXNzUmVmIHByb2ZpbGVOb2RlQ2xhc3MgPSBKU0NsYXNz
Q3JlYXRlKCZjbGFzc0RlZmluaXRpb24pOworICAgIHJldHVybiBwcm9maWxlTm9kZUNsYXNzOwor
fQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxlTm9kZSogcHJvZmlsZU5v
ZGUpCit7CisgICAgaWYgKCFwcm9maWxlTm9kZSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwor
CisgICAgSlNPYmplY3QqIHByb2ZpbGVOb2RlV3JhcHBlciA9IHByb2ZpbGVOb2RlQ2FjaGUoKS5n
ZXQocHJvZmlsZU5vZGUpOworICAgIGlmIChwcm9maWxlTm9kZVdyYXBwZXIpCisgICAgICAgIHJl
dHVybiBwcm9maWxlTm9kZVdyYXBwZXI7CisKKyAgICBwcm9maWxlTm9kZS0+cmVmKCk7CisKKyAg
ICBwcm9maWxlTm9kZVdyYXBwZXIgPSB0b0pTKEpTT2JqZWN0TWFrZSh0b1JlZihleGVjKSwgUHJv
ZmlsZU5vZGVDbGFzcygpLCBzdGF0aWNfY2FzdDx2b2lkKj4ocHJvZmlsZU5vZGUpKSk7CisgICAg
cHJvZmlsZU5vZGVDYWNoZSgpLnNldChwcm9maWxlTm9kZSwgcHJvZmlsZU5vZGVXcmFwcGVyKTsK
KyAgICByZXR1cm4gcHJvZmlsZU5vZGVXcmFwcGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmFkNzJiNzEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEphdmFTY3JpcHRQcm9m
aWxlTm9kZV9oCisjZGVmaW5lIEphdmFTY3JpcHRQcm9maWxlTm9kZV9oCisKKyNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKKworI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorCituYW1lc3BhY2UgSlNDIHsKKyAgICBj
bGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgUHJvZmlsZU5vZGU7Cit9CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworICAgIEpTQ2xhc3NSZWYgUHJvZmlsZU5vZGVDbGFzcygpOworICAgIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9maWxlTm9kZSopOworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJv
ZmlsZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMDNmMGIuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSmF2YVNjcmlwdFByb2ZpbGUuaCIKLQotI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBVU0UoSlNDKQotCi0jaW5jbHVkZSAiSmF2YVNj
cmlwdFByb2ZpbGVOb2RlLmgiCi0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U09iamVjdFJlZi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KLSNpbmNsdWRlIDxydW50
aW1lL0pTT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLS8vIENhY2hlCi0KLXR5cGVkZWYgSGFzaE1hcDxQcm9maWxlKiwgSlNPYmpl
Y3QqPiBQcm9maWxlTWFwOwotCi1zdGF0aWMgUHJvZmlsZU1hcCYgcHJvZmlsZUNhY2hlKCkKLXsg
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChQcm9maWxlTWFwLCBzdGF0aWNQcm9maWxlcywgKCkp
OwotICAgIHJldHVybiBzdGF0aWNQcm9maWxlczsKLX0KLQotLy8gU3RhdGljIFZhbHVlcwotCi1z
dGF0aWMgSlNDbGFzc1JlZiBQcm9maWxlQ2xhc3MoKTsKLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0
VGl0bGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBK
U1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNs
YXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNf
Y2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHByb2ZpbGUt
PnRpdGxlKCkpLmdldCgpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0SGVhZENhbGxiYWNr
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBK
U1ZhbHVlUmVmKikKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlz
T2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjdHgpOwotCi0gICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIFByb2Zp
bGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKLSAgICByZXR1cm4gdG9SZWYoZXhlYywgdG9KUyhleGVjLCBwcm9maWxlLT5o
ZWFkKCkpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0VW5pcXVlSWRDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1
ZVJlZiopCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVj
dCwgUHJvZmlsZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y3R4KTsKLQotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1i
ZXIoY3R4LCBwcm9maWxlLT51aWQoKSk7Ci19Ci0KLS8vIFN0YXRpYyBGdW5jdGlvbnMKLQotc3Rh
dGljIEpTVmFsdWVSZWYgZm9jdXMoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5j
dGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogLypleGNlcHRpb24qLykKLXsK
LSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxl
Q2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0g
ICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY3R4KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIGFyZ3Vt
ZW50c1swXSwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJv
ZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcHJvZmlsZS0+Zm9j
dXMoc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUoY29uc3RfY2Fz
dDxKU09iamVjdFJlZj4oYXJndW1lbnRzWzBdKSkpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjdHgpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBleGNsdWRlKEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIC8qZnVuY3Rpb24qLywgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIC8qZXhjZXB0aW9uKi8pCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNs
YXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBpZiAoIUpTVmFs
dWVJc09iamVjdE9mQ2xhc3MoY3R4LCBhcmd1bWVudHNbMF0sIFByb2ZpbGVOb2RlQ2xhc3MoKSkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmls
ZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOwotICAgIHByb2ZpbGUtPmV4Y2x1ZGUoc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUq
PihKU09iamVjdEdldFByaXZhdGUoY29uc3RfY2FzdDxKU09iamVjdFJlZj4oYXJndW1lbnRzWzBd
KSkpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotfQotCi1zdGF0
aWMgSlNWYWx1ZVJlZiByZXN0b3JlQWxsKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIC8q
ZnVuY3Rpb24qLywgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IC8qYXJndW1lbnRDb3Vu
dCovLCBjb25zdCBKU1ZhbHVlUmVmW10gLyphcmd1bWVudHMqLywgSlNWYWx1ZVJlZiogLypleGNl
cHRpb24qLykKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2Jq
ZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOwotCi0gICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHByb2ZpbGUtPnJlc3RvcmVBbGwo
KTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotfQotCi1zdGF0aWMg
dm9pZCBmaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCi17Ci0gICAgUHJvZmlsZSogcHJvZmls
ZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7Ci0g
ICAgcHJvZmlsZUNhY2hlKCkucmVtb3ZlKHByb2ZpbGUpOwotICAgIHByb2ZpbGUtPmRlcmVmKCk7
Ci19Ci0KLUpTQ2xhc3NSZWYgUHJvZmlsZUNsYXNzKCkKLXsKLSAgICBzdGF0aWMgSlNTdGF0aWNW
YWx1ZSBzdGF0aWNWYWx1ZXNbXSA9IHsKLSAgICAgICAgeyAidGl0bGUiLCBnZXRUaXRsZUNhbGxi
YWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAiaGVhZCIsIGdl
dEhlYWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsg
InVpZCIsIGdldFVuaXF1ZUlkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9
LAotICAgICAgICB7IDAsIDAsIDAsIDAgfQotICAgIH07Ci0KLSAgICBzdGF0aWMgSlNTdGF0aWNG
dW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKLSAgICAgICAgeyAiZm9jdXMiLCBmb2N1cywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgImV4Y2x1ZGUiLCBleGNsdWRl
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAicmVzdG9yZUFsbCIsIHJl
c3RvcmVBbGwsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7IDAsIDAsIDAg
fQotICAgIH07Ci0KLSAgICBzdGF0aWMgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZpbml0aW9u
ID0gewotICAgICAgICAwLCBrSlNDbGFzc0F0dHJpYnV0ZU5vbmUsICJQcm9maWxlIiwgMCwgc3Rh
dGljVmFsdWVzLCBzdGF0aWNGdW5jdGlvbnMsCi0gICAgICAgIDAsIGZpbmFsaXplLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwCi0gICAgfTsKLQotICAgIHN0YXRpYyBKU0NsYXNzUmVmIHByb2Zp
bGVDbGFzcyA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNzRGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIHBy
b2ZpbGVDbGFzczsKLX0KLQotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgUHJvZmlsZSog
cHJvZmlsZSkKLXsKLSAgICBpZiAoIXByb2ZpbGUpCi0gICAgICAgIHJldHVybiBqc051bGwoKTsK
LQotICAgIEpTT2JqZWN0KiBwcm9maWxlV3JhcHBlciA9IHByb2ZpbGVDYWNoZSgpLmdldChwcm9m
aWxlKTsKLSAgICBpZiAocHJvZmlsZVdyYXBwZXIpCi0gICAgICAgIHJldHVybiBwcm9maWxlV3Jh
cHBlcjsKLQotICAgIHByb2ZpbGUtPnJlZigpOwotICAgIHByb2ZpbGVXcmFwcGVyID0gdG9KUyhK
U09iamVjdE1ha2UodG9SZWYoZXhlYyksIFByb2ZpbGVDbGFzcygpLCBzdGF0aWNfY2FzdDx2b2lk
Kj4ocHJvZmlsZSkpKTsKLSAgICBwcm9maWxlQ2FjaGUoKS5zZXQocHJvZmlsZSwgcHJvZmlsZVdy
YXBwZXIpOwotICAgIHJldHVybiBwcm9maWxlV3JhcHBlcjsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5oIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjUwMDg4MS4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmls
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSmF2YVNjcmlwdFByb2ZpbGVfaAotI2Rl
ZmluZSBKYXZhU2NyaXB0UHJvZmlsZV9oCi0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgJiYgVVNFKEpTQykKLQotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLSAgICBjbGFzcyBFeGVjU3RhdGU7Ci0gICAgY2xhc3MgUHJvZmlsZTsKLX0KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb2ZpbGUqKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDYzODdjODUuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFBy
b2ZpbGVOb2RlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkphdmFTY3JpcHRQcm9maWxlTm9kZS5oIgotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpICYmIFVTRShKU0MpCi0KLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNp
bmNsdWRlIDxwcm9maWxlci9Qcm9maWxlTm9kZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWYuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotdXNpbmcgbmFtZXNwYWNl
IEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBDYWNoZQotCi10eXBlZGVmIEhhc2hN
YXA8UHJvZmlsZU5vZGUqLCBKU09iamVjdCo+IFByb2ZpbGVOb2RlTWFwOwotCi1zdGF0aWMgUHJv
ZmlsZU5vZGVNYXAmIHByb2ZpbGVOb2RlQ2FjaGUoKQotewotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUHJvZmlsZU5vZGVNYXAsIHN0YXRpY1Byb2ZpbGVOb2RlcywgKCkpOwotICAgIHJldHVybiBz
dGF0aWNQcm9maWxlTm9kZXM7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldEZ1bmN0aW9uTmFt
ZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwg
SlNWYWx1ZVJlZiopCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhp
c09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNf
Y2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGZ1bmN0aW9uTmFtZVN0cmluZyhBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhwcm9maWxlTm9kZS0+ZnVuY3Rpb25OYW1lKCkuZGF0YSgp
LCBwcm9maWxlTm9kZS0+ZnVuY3Rpb25OYW1lKCkuc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWVNYWtlU3RyaW5nKGN0eCwgZnVuY3Rpb25OYW1lU3RyaW5nLmdldCgpKTsKLX0KLQotc3RhdGlj
IEpTVmFsdWVSZWYgZ2V0VVJMKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVj
dE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9m
aWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0
LCBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKHByb2ZpbGVOb2RlLT51cmwoKS5kYXRhKCks
IHByb2ZpbGVOb2RlLT51cmwoKS5zaXplKCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJp
bmcoY3R4LCB1cmxTdHJpbmcuZ2V0KCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRMaW5l
TnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5n
UmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4
LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0
YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+bGluZU51bWJl
cigpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0VG90YWxUaW1lKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsK
LSAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBpZiAo
IUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNz
KCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFBy
b2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIo
Y3R4LCBwcm9maWxlTm9kZS0+dG90YWxUaW1lKCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBn
ZXRTZWxmVGltZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0
cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhp
c09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNf
Y2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmlsZU5vZGUtPnNlbGZUaW1lKCkpOwot
fQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXROdW1iZXJPZkNhbGxzKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAg
ICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBpZiAoIUpT
VmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2Zp
bGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4
LCBwcm9maWxlTm9kZS0+bnVtYmVyT2ZDYWxscygpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYg
Z2V0Q2hpbGRyZW4oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNT
dHJpbmdSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xh
c3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9k
ZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmpl
Y3QpKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2RlPiA+JiBjaGlsZHJlbiA9
IHByb2ZpbGVOb2RlLT5jaGlsZHJlbigpOwotCi0gICAgSlNPYmplY3RSZWYgZ2xvYmFsID0gSlND
b250ZXh0R2V0R2xvYmFsT2JqZWN0KGN0eCk7Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gYXJyYXlTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcnJh
eSIpKTsKLQotICAgIEpTVmFsdWVSZWYgYXJyYXlQcm9wZXJ0eSA9IEpTT2JqZWN0R2V0UHJvcGVy
dHkoY3R4LCBnbG9iYWwsIGFycmF5U3RyaW5nLmdldCgpLCBleGNlcHRpb24pOwotICAgIGlmIChl
eGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGN0eCk7Ci0KLSAgICBKU09iamVjdFJlZiBhcnJheUNvbnN0cnVjdG9yID0gSlNWYWx1ZVRv
T2JqZWN0KGN0eCwgYXJyYXlQcm9wZXJ0eSwgZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9u
ICYmICpleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgp
OwotCi0gICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3Rvcihj
dHgsIGFycmF5Q29uc3RydWN0b3IsIDAsIDAsIGV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlv
biAmJiAqZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwdXNoU3RyaW5nKEFkb3B0LCBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicHVzaCIpKTsKLQotICAgIEpTVmFsdWVSZWYgcHVz
aFByb3BlcnR5ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjdHgsIHJlc3VsdCwgcHVzaFN0cmluZy5n
ZXQoKSwgZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgSlNPYmplY3RSZWYg
cHVzaEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgcHVzaFByb3BlcnR5LCBleGNlcHRp
b24pOwotICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2RlPiA+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLmVuZCgpOyArK2l0KSB7Ci0g
ICAgICAgIEpTVmFsdWVSZWYgYXJnMCA9IHRvUmVmKGV4ZWMsIHRvSlMoZXhlYywgKCppdCkuZ2V0
KCkgKSk7Ci0gICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY3R4LCBwdXNoRnVuY3Rpb24s
IHJlc3VsdCwgMSwgJmFyZzAsIGV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChleGNlcHRpb24gJiYg
KmV4Y2VwdGlvbikKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgp
OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdl
dFZpc2libGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJp
bmdSZWYsIEpTVmFsdWVSZWYqKQotewotICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNP
YmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nh
c3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJl
dHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY3R4LCBwcm9maWxlTm9kZS0+dmlzaWJsZSgpKTsKLX0K
LQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0Q2FsbFVJRChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgSlNDOjpK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNP
YmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSog
cHJvZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0
ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmls
ZU5vZGUtPmNhbGxJZGVudGlmaWVyKCkuaGFzaCgpKTsKLX0KLQotc3RhdGljIHZvaWQgZmluYWxp
emUoSlNPYmplY3RSZWYgb2JqZWN0KQotewotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9
IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOwot
ICAgIHByb2ZpbGVOb2RlQ2FjaGUoKS5yZW1vdmUocHJvZmlsZU5vZGUpOwotICAgIHByb2ZpbGVO
b2RlLT5kZXJlZigpOwotfQotCi1KU0NsYXNzUmVmIFByb2ZpbGVOb2RlQ2xhc3MoKQotewotICAg
IHN0YXRpYyBKU1N0YXRpY1ZhbHVlIHN0YXRpY1ZhbHVlc1tdID0gewotICAgICAgICB7ICJmdW5j
dGlvbk5hbWUiLCBnZXRGdW5jdGlvbk5hbWUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9
LAotICAgICAgICB7ICJ1cmwiLCBnZXRVUkwsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9
LAotICAgICAgICB7ICJsaW5lTnVtYmVyIiwgZ2V0TGluZU51bWJlciwgMCwga0pTUHJvcGVydHlB
dHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInRvdGFsVGltZSIsIGdldFRvdGFsVGltZSwgMCwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInNlbGZUaW1lIiwgZ2V0U2Vs
ZlRpbWUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJudW1iZXJP
ZkNhbGxzIiwgZ2V0TnVtYmVyT2ZDYWxscywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0s
Ci0gICAgICAgIHsgImNoaWxkcmVuIiwgZ2V0Q2hpbGRyZW4sIDAsIGtKU1Byb3BlcnR5QXR0cmli
dXRlTm9uZSB9LAotICAgICAgICB7ICJ2aXNpYmxlIiwgZ2V0VmlzaWJsZSwgMCwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgImNhbGxVSUQiLCBnZXRDYWxsVUlELCAwLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAwLCAwLCAwLCAwIH0KLSAgICB9
OwotCi0gICAgc3RhdGljIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVmaW5pdGlvbiA9IHsKLSAg
ICAgICAgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiUHJvZmlsZU5vZGUiLCAwLCBzdGF0aWNW
YWx1ZXMsIDAsCi0gICAgICAgIDAsIGZpbmFsaXplLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
Ci0gICAgfTsKLQotICAgIHN0YXRpYyBKU0NsYXNzUmVmIHByb2ZpbGVOb2RlQ2xhc3MgPSBKU0Ns
YXNzQ3JlYXRlKCZjbGFzc0RlZmluaXRpb24pOwotICAgIHJldHVybiBwcm9maWxlTm9kZUNsYXNz
OwotfQotCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxlTm9kZSogcHJvZmls
ZU5vZGUpCi17Ci0gICAgaWYgKCFwcm9maWxlTm9kZSkKLSAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OwotCi0gICAgSlNPYmplY3QqIHByb2ZpbGVOb2RlV3JhcHBlciA9IHByb2ZpbGVOb2RlQ2FjaGUo
KS5nZXQocHJvZmlsZU5vZGUpOwotICAgIGlmIChwcm9maWxlTm9kZVdyYXBwZXIpCi0gICAgICAg
IHJldHVybiBwcm9maWxlTm9kZVdyYXBwZXI7Ci0KLSAgICBwcm9maWxlTm9kZS0+cmVmKCk7Ci0K
LSAgICBwcm9maWxlTm9kZVdyYXBwZXIgPSB0b0pTKEpTT2JqZWN0TWFrZSh0b1JlZihleGVjKSwg
UHJvZmlsZU5vZGVDbGFzcygpLCBzdGF0aWNfY2FzdDx2b2lkKj4ocHJvZmlsZU5vZGUpKSk7Ci0g
ICAgcHJvZmlsZU5vZGVDYWNoZSgpLnNldChwcm9maWxlTm9kZSwgcHJvZmlsZU5vZGVXcmFwcGVy
KTsKLSAgICByZXR1cm4gcHJvZmlsZU5vZGVXcmFwcGVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDI2ODVhYzYuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBKYXZhU2NyaXB0UHJv
ZmlsZU5vZGVfaAotI2RlZmluZSBKYXZhU2NyaXB0UHJvZmlsZU5vZGVfaAotCi0jaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIFVTRShKU0MpCi0KLSNpbmNsdWRlIDxydW50aW1lL0pT
VmFsdWUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KLQotbmFtZXNwYWNl
IEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOwotICAgIGNsYXNzIFByb2ZpbGVOb2RlOwotfQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBKU0NsYXNzUmVmIFByb2ZpbGVOb2RlQ2xhc3Mo
KTsKLSAgICBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvZmlsZU5v
ZGUqKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCi0KLSNlbmRpZgo=
</data>
<flag name="review"
          id="31361"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48745</attachid>
            <date>2010-02-15 03:31:04 -0800</date>
            <delta_ts>2010-02-15 08:21:49 -0800</delta_ts>
            <desc>fixed style issues in the last patch</desc>
            <filename>move-profiles-to-bindings-patch</filename>
            <type>text/plain</type>
            <size>58792</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjY0MTVmOS4uYjM2MWU5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0wMi0xNSAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgSlNDLXNwZWNpZmljIHdyYXBwZXJzIGZvciBQcm9m
aWxlIGFuZCBQcm9maWxlTm9kZSB0byBiaW5kaW5ncy9qcy4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ4NDgKKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJv
ZmlsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cHJvZmlsZUNhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFRpdGxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SGVh
ZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVuaXF1ZUlkQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6ZXhjbHVkZSk6CisgICAg
ICAgIChXZWJDb3JlOjpyZXN0b3JlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlByb2ZpbGVDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pT
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnByb2ZpbGVOb2RlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
RnVuY3Rpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpnZXRMaW5lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRvdGFsVGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRTZWxmVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXROdW1i
ZXJPZkNhbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldFZpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2FsbFVJRCk6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9maWxlTm9kZUNs
YXNzKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0ph
dmFTY3JpcHRQcm9maWxlTm9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNj
cmlwdFByb2ZpbGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0
UHJvZmlsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmls
ZU5vZGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmls
ZU5vZGUuaDogUmVtb3ZlZC4KKwogMjAxMC0wMi0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZTBj
OWRjNi4uYjU2ODg1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC00NjUsNiArNDY1LDEwIEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5j
cHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwIFwKKwlXZWJD
b3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3Jp
cHRQcm9maWxlTm9kZS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2Zp
bGVOb2RlLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRBcnJheS5jcHAgXApAQCAtMTIyNCwxMCArMTIyOCw2IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaCBc
CiAJV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCBcCiAJV2ViQ29y
ZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmggXAotCVdlYkNvcmUvaW5zcGVjdG9y
L0phdmFTY3JpcHRQcm9maWxlLmNwcCBcCi0JV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFBy
b2ZpbGUuaCBcCi0JV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBc
Ci0JV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggXAogCVdlYkNvcmUv
aW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9y
L1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAgXApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAyMmI2MTE3Li42OWUyMDY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjE3LDYgKzYxNywxMCBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCcsCisgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGUuY3BwJywKKyAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
YXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KYXZh
U2NyaXB0UHJvZmlsZU5vZGUuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmgn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmNwcCcsCkBAIC0xNjEwLDEw
ICsxNjE0LDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnTGlzdGVu
ZXIuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaCcsCi0gICAg
ICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcCcsCi0gICAgICAgICAgICAn
aW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9K
YXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNj
cmlwdFByb2ZpbGVOb2RlLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9UaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNw
cCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCAxM2Q2MzE0Li4zMjk2ZWYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJv
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTMzOSw2ICszMzksMTAgQEAgU09VUkNFUyAr
PSBcCiAgICAgYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAgXAogICAgIGJpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pT
UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9m
aWxlLmggXAorICAgIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oIFwKKyAgICBi
aW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0phdmFT
Y3JpcHRQcm9maWxlTm9kZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5jcHAgXAog
ICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgXAogICAgIGJpbmRpbmdz
L2pzL1NjcmlwdENhbGxGcmFtZS5jcHAgXApAQCAtMTM3MSw4ICsxMzc1LDYgQEAgSEVBREVSUyAr
PSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBcCiAgICAgaW5zcGVj
dG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaCBcCiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1
Z1NlcnZlci5oIFwKLSAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuaCBcCi0gICAgaW5z
cGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oIFwKICAgICBpbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmggXAogICAgIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuaCBcCiAgICAgbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggXApAQCAt
MjYyOCw4ICsyNjMwLDYgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVI9MSkgewogICAgICAgICBiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0
b20uY3BwIFwKICAgICAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIFwKICAg
ICAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgXAotICAgICAgICBpbnNw
ZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwIFwKLSAgICAgICAgaW5zcGVjdG9yL0phdmFTY3Jp
cHRQcm9maWxlTm9kZS5jcHAKIH0KIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUz0xKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCBmZjc5NjNiLi5hZTNhMGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTM5ODk2LDYgKzM5ODk2LDIyIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQog
CQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcSmF2YVNjcmlwdFByb2ZpbGUuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSmF2YVNjcmlwdFByb2ZpbGUuaCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKYXZhU2NyaXB0
UHJvZmlsZU5vZGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNjaGVkdWxlZEFjdGlvbi5jcHAiDQogCQkJCQk+DQog
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC00MjY4MSwyMiArNDI2OTcsNiBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
SmF2YVNjcmlwdFByb2ZpbGUuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQot
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEphdmFTY3JpcHRQcm9maWxlLmgiDQotCQkJ
CT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8
RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJvZmlsZU5v
ZGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3RvclxUaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIg0KIAkJCQk+DQogCQkJPC9G
aWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTg3
MjA2ZC4uOTg0NmQxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTUyOCwxMCArNTI4LDYgQEAKIAkJMUM4MUI5NUEwRTk3MzMwODAwMjY2RTA3IC8qIElu
c3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM4
MUI5NUIwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTcwRTk3MzMwODAw
MjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovOyB9OwogCQkxQzgxQjk1QzBFOTcz
MzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJMUM4MUI5RkYwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5RkIw
RTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oICovOyB9OwotCQkxQzgx
QkEwMDBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOUZDMEU5NzMzQ0Iw
MDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovOyB9OwotCQkxQzgxQkEwMTBF
OTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOUZEMEU5NzMzQ0IwMDI2NkUwNyAvKiBK
YXZhU2NyaXB0UHJvZmlsZS5oICovOyB9OwotCQkxQzgxQkEwMjBFOTczM0NCMDAyNjZFMDcgLyog
SmF2YVNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM4MUI5RkUwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxl
LmNwcCAqLzsgfTsKIAkJMUM4MUJBMDkwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM4MUJBMDMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9
OwogCQkxQzgxQkEwQTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUJBMDQwRTk3
MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJMUM4MUJBMEMw
RTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQkEwNjBFOTczNDgzMDAyNjZF
MDcgLyogSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjQ1Niw2ICsyNDUyLDEwIEBACiAJCTk3REQ0RDg2
MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmNwcCAqLzsgfTsKIAkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0
RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi87IH07CiAJCTk3RUY3REZFMTA3
RTU1QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0VGN0RGRDEwN0U1NUI3MDBEN0M0OUMg
LyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovOyB9OworCQk5RjJBMzIyQjExMjVBMEEyMDAz
QzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUYyQTMyMjcxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFTY3Jp
cHRQcm9maWxlLmNwcCAqLzsgfTsKKwkJOUYyQTMyMkMxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFT
Y3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RjJBMzIyODExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCAqLzsg
fTsKKwkJOUYyQTMyMkQxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjJBMzIy
OTExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCAqLzsgfTsKKwkJ
OUYyQTMyMkUxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUYyQTMyMkExMTI1QTBB
MjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oICovOyB9OwogCQk5RjZGQzE5NjEx
MjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY2RkMxOTQxMTIyRTgyQTAwRTgwMTk2IC8q
IFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLzsgfTsKIAkJOUY2RkMxOTcxMTIyRTgyQTAwRTgwMTk2
IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5RjZGQzE5NTExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
RjcyMzA0RjExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY3MjMwNEMxMTE4NEI0MTAwQUQwMTI2
IC8qIFNjcmlwdFByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNTg0NSwxMCArNTg0NSw2IEBACiAJCTFDODFCOTU3MEU5NzMzMDgwMDI2
NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzgxQjk1OTBFOTczMzA4MDAyNjZFMDcgLyogZnJv
bnQtZW5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
Zm9sZGVyOyBwYXRoID0gImZyb250LWVuZCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDODFCOUZCMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODFCOUZDMEU5NzMzQ0IwMDI2NkUwNyAvKiBK
YXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUM4MUI5RkQwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRQcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODFCOUZFMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZh
U2NyaXB0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
YXZhU2NyaXB0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFC
QTAzMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzgxQkEwNDBFOTczNDgzMDAyNjZFMDcgLyogSmF2
YVNjcmlwdENhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZh
U2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCQTA1
MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTc4MDEsNiArNzc5NywxMCBAQAogCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQg
LyogWFNTQXVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBY
U1NBdWRpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdERDREODUwRkRG
NEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gWFNTQXVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0VGN0RG
RDEwN0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjJBMzIyNzExMjVBMEEyMDAzQzMwNTYgLyogSmF2
YVNjcmlwdFByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SmF2YVNjcmlwdFByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjJB
MzIyODExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOUYyQTMyMjkxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9m
aWxlTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2Ny
aXB0UHJvZmlsZU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjJBMzIy
QTExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRQcm9maWxlTm9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5RjZGQzE5NDExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjZGQzE5NTEx
MjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUY3MjMwNEMxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0UHJvZmlsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTA2NDAsMTAgKzEwNjQwLDYgQEAKIAkJCQkxQzgxQkEwNjBF
OTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLywKIAkJCQkxQzgx
QkEwNzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCAqLywKIAkJ
CQkxQzgxQkEwODBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVyLmggKi8s
Ci0JCQkJMUM4MUI5RkUwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmNwcCAq
LywKLQkJCQkxQzgxQjlGRDBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCAq
LywKLQkJCQkxQzgxQjlGQzBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2Rl
LmNwcCAqLywKLQkJCQkxQzgxQjlGQjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2Zp
bGVOb2RlLmggKi8sCiAJCQkJQkNDNjRGNUYwRENGQjg0RTAwODFFRjNCIC8qIGxvY2FsaXplZFN0
cmluZ3MuanMgKi8sCiAJCQkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeS5jcHAgKi8sCiAJCQkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeS5oICovLApAQCAtMTQ2MjYsNiArMTQ2MjIsMTAgQEAKIAkJCQlCMjEx
MjdBNTBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oICovLAogCQkJCUUx
QzM2RDMyMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckNvbnRleHRCYXNlLmNwcCAqLywKIAkJ
CQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0QmFzZS5oICovLAor
CQkJCTlGMkEzMjI3MTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgKi8s
CisJCQkJOUYyQTMyMjgxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9maWxlLmggKi8s
CisJCQkJOUYyQTMyMjkxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5j
cHAgKi8sCisJCQkJOUYyQTMyMkExMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9maWxl
Tm9kZS5oICovLAogCQkJCUJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rp
b24uY3BwICovLAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rp
b24uaCAqLywKIAkJCQk3QTFFODhGMzEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuY3Bw
ICovLApAQCAtMTczMDAsOCArMTczMDAsNiBAQAogCQkJCTFDODFCQTBBMEU5NzM0ODMwMDI2NkUw
NyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQkEwQzBF
OTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFDODFCQTBFMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCTFDODFCQTAxMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2Ny
aXB0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUM4MUI5RkYwRTk3MzNDQjAwMjY2RTA3
IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTlCQzM5M0Yx
MTA1NEExMzAwRkQ4NURCIC8qIEphdmFTdHJpbmdKU0MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NTY5RDA0MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfanNvYmplY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU5MTM5NTNCMTEwNzU4NDUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuaCBpbiBIZWFkZXJzICov
LApAQCAtMTg1MjYsNiArMTg1MjQsOCBAQAogCQkJCUJDRTc4OTE2MTEyMEQ2MDgwMDYwRUNFNSAv
KiBJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNzg5ODYxMTIwRTdBNjAw
NjBFQ0U1IC8qIEJpZGlSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTlGNkZDMTk3MTEyMkU4MkEw
MEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUYyQTMy
MkMxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFTY3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5RjJBMzIyRTExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE5NDkxLDggKzE5NDkxLDYgQEAKIAkJCQk1OUE5RTdCMDExMDQ3
NTg4MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFD
ODFCQTA5MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDODFCQTBEMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM4MUJBMDIwRTk3MzNDQjAwMjY2RTA3IC8q
IEphdmFTY3JpcHRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDODFCQTAwMEU5NzMz
Q0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE1NjlEMDMwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9qc29iamVjdC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNTY5RDA1MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfb2JqYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTU5MTM5NTNEMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yMDcwNyw2ICsyMDcwNSw4IEBACiAJCQkJQkNFNzg5OEIxMTIwRTgw
MjAwNjBFQ0U1IC8qIEJpZGlSdW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUY2RkMxOTYxMTIy
RTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc2RkYxN0UzMTEyMzU2NzMwMDFENjFCNSAvKiBQbHVnaW5WaWV3Tm9uZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk5RjJBMzIyQjExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUYyQTMyMkQxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFT
Y3JpcHRQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCA1YTA4MjBiLi4zMjVmODVkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMzMsNiArMTMzLDggQEAK
ICNpbmNsdWRlICJKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAiCiAjaW5jbHVkZSAiSlNYU0xUUHJvY2Vzc29y
Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0UHJvZmlsZS5jcHAiCisjaW5jbHVkZSAi
SmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uY3Bw
IgogI2luY2x1ZGUgIlNjcmlwdEFycmF5LmNwcCIKICNpbmNsdWRlICJTY3JpcHRDYWNoZWRGcmFt
ZURhdGEuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJv
ZmlsZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTU2ZWQ4Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5jcHAKQEAgLTAsMCArMSwx
ODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSmF2YVNjcmlwdFByb2ZpbGUuaCIKKworI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjaW5jbHVkZSAiSmF2YVNjcmlwdFByb2ZpbGVO
b2RlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNT
dHJpbmdSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgor
I2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIENhY2hlCisKK3R5cGVkZWYgSGFzaE1hcDxQcm9maWxlKiwgSlNPYmplY3QqPiBQcm9maWxl
TWFwOworCitzdGF0aWMgUHJvZmlsZU1hcCYgcHJvZmlsZUNhY2hlKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFByb2ZpbGVNYXAsIHN0YXRpY1Byb2ZpbGVzLCAoKSk7CisgICAgcmV0dXJu
IHN0YXRpY1Byb2ZpbGVzOworfQorCisvLyBTdGF0aWMgVmFsdWVzCisKK3N0YXRpYyBKU0NsYXNz
UmVmIFByb2ZpbGVDbGFzcygpOworCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRUaXRsZUNhbGxiYWNr
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBK
U1ZhbHVlUmVmKikKK3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlz
T2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjdHgpOworCisgICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUq
PihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVN0cmluZyhjdHgsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocHJvZmlsZS0+dGl0bGUoKSkuZ2V0
KCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRIZWFkQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQor
eworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2Zp
bGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisK
KyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgUHJvZmlsZSogcHJvZmlsZSA9
IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwor
ICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIHByb2ZpbGUtPmhlYWQoKSkpOworfQor
CitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRVbmlxdWVJZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAg
ICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xh
c3MoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAg
UHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2Zp
bGUtPnVpZCgpKTsKK30KKworLy8gU3RhdGljIEZ1bmN0aW9ucworCitzdGF0aWMgSlNWYWx1ZVJl
ZiBmb2N1cyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQoreworICAgIGlmICghSlNW
YWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwor
CisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgYXJndW1lbnRzWzBdLCBQcm9m
aWxlTm9kZUNsYXNzKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKKworICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBwcm9maWxlLT5mb2N1cyhzdGF0aWNfY2Fz
dDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShjb25zdF9jYXN0PEpTT2JqZWN0UmVm
Pihhcmd1bWVudHNbMF0pKSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0
eCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGV4Y2x1ZGUoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogLypl
eGNlcHRpb24qLykKK3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlz
T2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjdHgpOworCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZD
bGFzcyhjdHgsIGFyZ3VtZW50c1swXSwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlKiBwcm9maWxlID0g
c3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Cisg
ICAgcHJvZmlsZS0+ZXhjbHVkZShzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0
UHJpdmF0ZShjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihhcmd1bWVudHNbMF0pKSkpOworCisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVm
IHJlc3RvcmVBbGwoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0IEpT
VmFsdWVSZWZbXSAvKmFyZ3VtZW50cyovLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQorewor
ICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVD
bGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAg
ICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJp
dmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcHJvZmlsZS0+cmVzdG9yZUFsbCgpOworCisgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Cit9CisKK3N0YXRpYyB2b2lkIGZpbmFsaXpl
KEpTT2JqZWN0UmVmIG9iamVjdCkKK3sKKyAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nh
c3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKKyAgICBwcm9maWxlQ2Fj
aGUoKS5yZW1vdmUocHJvZmlsZSk7CisgICAgcHJvZmlsZS0+ZGVyZWYoKTsKK30KKworSlNDbGFz
c1JlZiBQcm9maWxlQ2xhc3MoKQoreworICAgIHN0YXRpYyBKU1N0YXRpY1ZhbHVlIHN0YXRpY1Zh
bHVlc1tdID0geworICAgICAgICB7ICJ0aXRsZSIsIGdldFRpdGxlQ2FsbGJhY2ssIDAsIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAgICAgICB7ICJoZWFkIiwgZ2V0SGVhZENhbGxiYWNr
LCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAidWlkIiwgZ2V0VW5p
cXVlSWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsg
MCwgMCwgMCwgMCB9CisgICAgfTsKKworICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRp
Y0Z1bmN0aW9uc1tdID0geworICAgICAgICB7ICJmb2N1cyIsIGZvY3VzLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAiZXhjbHVkZSIsIGV4Y2x1ZGUsIGtKU1Byb3BlcnR5
QXR0cmlidXRlTm9uZSB9LAorICAgICAgICB7ICJyZXN0b3JlQWxsIiwgcmVzdG9yZUFsbCwga0pT
UHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgMCwgMCwgMCB9CisgICAgfTsKKwor
ICAgIHN0YXRpYyBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZmluaXRpb24gPSB7CisgICAgICAg
IDAsIGtKU0NsYXNzQXR0cmlidXRlTm9uZSwgIlByb2ZpbGUiLCAwLCBzdGF0aWNWYWx1ZXMsIHN0
YXRpY0Z1bmN0aW9ucywKKyAgICAgICAgMCwgZmluYWxpemUsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAKKyAgICB9OworCisgICAgc3RhdGljIEpTQ2xhc3NSZWYgcHJvZmlsZUNsYXNzID0gSlND
bGFzc0NyZWF0ZSgmY2xhc3NEZWZpbml0aW9uKTsKKyAgICByZXR1cm4gcHJvZmlsZUNsYXNzOwor
fQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxlKiBwcm9maWxlKQorewor
ICAgIGlmICghcHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworCisgICAgSlNPYmpl
Y3QqIHByb2ZpbGVXcmFwcGVyID0gcHJvZmlsZUNhY2hlKCkuZ2V0KHByb2ZpbGUpOworICAgIGlm
IChwcm9maWxlV3JhcHBlcikKKyAgICAgICAgcmV0dXJuIHByb2ZpbGVXcmFwcGVyOworCisgICAg
cHJvZmlsZS0+cmVmKCk7CisgICAgcHJvZmlsZVdyYXBwZXIgPSB0b0pTKEpTT2JqZWN0TWFrZSh0
b1JlZihleGVjKSwgUHJvZmlsZUNsYXNzKCksIHN0YXRpY19jYXN0PHZvaWQqPihwcm9maWxlKSkp
OworICAgIHByb2ZpbGVDYWNoZSgpLnNldChwcm9maWxlLCBwcm9maWxlV3JhcHBlcik7CisgICAg
cmV0dXJuIHByb2ZpbGVXcmFwcGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2
YVNjcmlwdFByb2ZpbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yjc1
Yjk3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJv
ZmlsZS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEphdmFTY3JpcHRQcm9maWxlX2gKKyNkZWZpbmUgSmF2YVNj
cmlwdFByb2ZpbGVfaAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNs
dWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3Rh
dGU7CitjbGFzcyBQcm9maWxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9maWxlKik7CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVO
b2RlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDYwYjI0Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCkBAIC0w
LDAgKzEsMjM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRQcm9maWxlTm9kZS5o
IgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8cHJvZmls
ZXIvUHJvZmlsZU5vZGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBDYWNoZQorCit0
eXBlZGVmIEhhc2hNYXA8UHJvZmlsZU5vZGUqLCBKU09iamVjdCo+IFByb2ZpbGVOb2RlTWFwOwor
CitzdGF0aWMgUHJvZmlsZU5vZGVNYXAmIHByb2ZpbGVOb2RlQ2FjaGUoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoUHJvZmlsZU5vZGVNYXAsIHN0YXRpY1Byb2ZpbGVOb2RlcywgKCkpOwor
ICAgIHJldHVybiBzdGF0aWNQcm9maWxlTm9kZXM7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdl
dEZ1bmN0aW9uTmFtZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBK
U1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCit7CisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNs
YXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5v
ZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGZ1bmN0aW9uTmFtZVN0cmluZyhB
ZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhwcm9maWxlTm9kZS0+ZnVuY3Rpb25O
YW1lKCkuZGF0YSgpLCBwcm9maWxlTm9kZS0+ZnVuY3Rpb25OYW1lKCkuc2l6ZSgpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGN0eCwgZnVuY3Rpb25OYW1lU3RyaW5nLmdldCgpKTsK
K30KKworc3RhdGljIEpTVmFsdWVSZWYgZ2V0VVJMKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBpZiAoIUpT
VmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2Zp
bGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXJs
U3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKHByb2ZpbGVOb2RlLT51
cmwoKS5kYXRhKCksIHByb2ZpbGVOb2RlLT51cmwoKS5zaXplKCkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VTdHJpbmcoY3R4LCB1cmxTdHJpbmcuZ2V0KCkpOworfQorCitzdGF0aWMgSlNWYWx1
ZVJlZiBnZXRMaW5lTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVj
dE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGVOb2RlKiBwcm9m
aWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9k
ZS0+bGluZU51bWJlcigpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZ2V0VG90YWxUaW1lKEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1Zh
bHVlUmVmKikKK3sKKyAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
CisKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9m
aWxlTm9kZUNsYXNzKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKKworICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVO
b2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+dG90YWxUaW1lKCkpOworfQorCitzdGF0aWMg
SlNWYWx1ZVJlZiBnZXRTZWxmVGltZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCit7CisgICAgSlNDOjpKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNs
YXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5v
ZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmlsZU5vZGUtPnNl
bGZUaW1lKCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXROdW1iZXJPZkNhbGxzKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVl
UmVmKikKK3sKKyAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisK
KyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxl
Tm9kZUNsYXNzKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsK
KworICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2Rl
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1h
a2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+bnVtYmVyT2ZDYWxscygpKTsKK30KKworc3RhdGlj
IEpTVmFsdWVSZWYgZ2V0Q2hpbGRyZW4oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU0M6
OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBpZiAoIUpTVmFsdWVJ
c09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGVOb2Rl
KiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2
YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2RlPiA+
JiBjaGlsZHJlbiA9IHByb2ZpbGVOb2RlLT5jaGlsZHJlbigpOworCisgICAgSlNPYmplY3RSZWYg
Z2xvYmFsID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGN0eCk7CisKKyAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gYXJyYXlTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJBcnJheSIpKTsKKworICAgIEpTVmFsdWVSZWYgYXJyYXlQcm9wZXJ0eSA9IEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY3R4LCBnbG9iYWwsIGFycmF5U3RyaW5nLmdldCgpLCBleGNlcHRpb24p
OworICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBKU09iamVjdFJlZiBhcnJheUNvbnN0cnVjdG9y
ID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgYXJyYXlQcm9wZXJ0eSwgZXhjZXB0aW9uKTsKKyAgICBp
ZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjdHgpOworCisgICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXND
b25zdHJ1Y3RvcihjdHgsIGFycmF5Q29uc3RydWN0b3IsIDAsIDAsIGV4Y2VwdGlvbik7CisgICAg
aWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY3R4KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwdXNoU3RyaW5n
KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicHVzaCIpKTsKKworICAgIEpT
VmFsdWVSZWYgcHVzaFByb3BlcnR5ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjdHgsIHJlc3VsdCwg
cHVzaFN0cmluZy5nZXQoKSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uICYmICpleGNl
cHRpb24pCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAg
SlNPYmplY3RSZWYgcHVzaEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgcHVzaFByb3Bl
cnR5LCBleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2RlPiA+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLmVuZCgp
OyArK2l0KSB7CisgICAgICAgIEpTVmFsdWVSZWYgYXJnMCA9IHRvUmVmKGV4ZWMsIHRvSlMoZXhl
YywgKCppdCkuZ2V0KCkgKSk7CisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY3R4LCBw
dXNoRnVuY3Rpb24sIHJlc3VsdCwgMSwgJmFyZzAsIGV4Y2VwdGlvbik7CisgICAgICAgIGlmIChl
eGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjdHgpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBK
U1ZhbHVlUmVmIGdldFZpc2libGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQoreworICAgIEpTQzo6SlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFz
cyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2Rl
ID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVj
dCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY3R4LCBwcm9maWxlTm9kZS0+dmlz
aWJsZSgpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZ2V0Q2FsbFVJRChKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCit7
CisgICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgaWYg
KCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFz
cygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBQ
cm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVy
KGN0eCwgcHJvZmlsZU5vZGUtPmNhbGxJZGVudGlmaWVyKCkuaGFzaCgpKTsKK30KKworc3RhdGlj
IHZvaWQgZmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQoreworICAgIFByb2ZpbGVOb2RlKiBw
cm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRl
KG9iamVjdCkpOworICAgIHByb2ZpbGVOb2RlQ2FjaGUoKS5yZW1vdmUocHJvZmlsZU5vZGUpOwor
ICAgIHByb2ZpbGVOb2RlLT5kZXJlZigpOworfQorCitKU0NsYXNzUmVmIFByb2ZpbGVOb2RlQ2xh
c3MoKQoreworICAgIHN0YXRpYyBKU1N0YXRpY1ZhbHVlIHN0YXRpY1ZhbHVlc1tdID0geworICAg
ICAgICB7ICJmdW5jdGlvbk5hbWUiLCBnZXRGdW5jdGlvbk5hbWUsIDAsIGtKU1Byb3BlcnR5QXR0
cmlidXRlTm9uZSB9LAorICAgICAgICB7ICJ1cmwiLCBnZXRVUkwsIDAsIGtKU1Byb3BlcnR5QXR0
cmlidXRlTm9uZSB9LAorICAgICAgICB7ICJsaW5lTnVtYmVyIiwgZ2V0TGluZU51bWJlciwgMCwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgInRvdGFsVGltZSIsIGdldFRv
dGFsVGltZSwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgInNlbGZU
aW1lIiwgZ2V0U2VsZlRpbWUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAgICAg
ICB7ICJudW1iZXJPZkNhbGxzIiwgZ2V0TnVtYmVyT2ZDYWxscywgMCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVOb25lIH0sCisgICAgICAgIHsgImNoaWxkcmVuIiwgZ2V0Q2hpbGRyZW4sIDAsIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAgICAgICB7ICJ2aXNpYmxlIiwgZ2V0VmlzaWJsZSwg
MCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgImNhbGxVSUQiLCBnZXRD
YWxsVUlELCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAwLCAwLCAw
LCAwIH0KKyAgICB9OworCisgICAgc3RhdGljIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVmaW5p
dGlvbiA9IHsKKyAgICAgICAgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiUHJvZmlsZU5vZGUi
LCAwLCBzdGF0aWNWYWx1ZXMsIDAsCisgICAgICAgIDAsIGZpbmFsaXplLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwCisgICAgfTsKKworICAgIHN0YXRpYyBKU0NsYXNzUmVmIHByb2ZpbGVOb2Rl
Q2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc0RlZmluaXRpb24pOworICAgIHJldHVybiBwcm9m
aWxlTm9kZUNsYXNzOworfQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxl
Tm9kZSogcHJvZmlsZU5vZGUpCit7CisgICAgaWYgKCFwcm9maWxlTm9kZSkKKyAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOworCisgICAgSlNPYmplY3QqIHByb2ZpbGVOb2RlV3JhcHBlciA9IHByb2Zp
bGVOb2RlQ2FjaGUoKS5nZXQocHJvZmlsZU5vZGUpOworICAgIGlmIChwcm9maWxlTm9kZVdyYXBw
ZXIpCisgICAgICAgIHJldHVybiBwcm9maWxlTm9kZVdyYXBwZXI7CisKKyAgICBwcm9maWxlTm9k
ZS0+cmVmKCk7CisKKyAgICBwcm9maWxlTm9kZVdyYXBwZXIgPSB0b0pTKEpTT2JqZWN0TWFrZSh0
b1JlZihleGVjKSwgUHJvZmlsZU5vZGVDbGFzcygpLCBzdGF0aWNfY2FzdDx2b2lkKj4ocHJvZmls
ZU5vZGUpKSk7CisgICAgcHJvZmlsZU5vZGVDYWNoZSgpLnNldChwcm9maWxlTm9kZSwgcHJvZmls
ZU5vZGVXcmFwcGVyKTsKKyAgICByZXR1cm4gcHJvZmlsZU5vZGVXcmFwcGVyOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2Rl
LmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMWJlMTkKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEphdmFTY3JpcHRQcm9maWxlTm9kZV9oCisjZGVmaW5lIEphdmFTY3JpcHRQcm9maWxlTm9kZV9o
CisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKworI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIFByb2ZpbGVOb2RlOworfQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0pTQ2xhc3NSZWYgUHJvZmlsZU5vZGVDbGFzcygpOworSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb2ZpbGVOb2RlKik7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9m
aWxlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjIwM2YwYi4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKYXZhU2NyaXB0UHJvZmlsZS5oIgotCi0jaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIFVTRShKU0MpCi0KLSNpbmNsdWRlICJKYXZhU2Ny
aXB0UHJvZmlsZU5vZGUuaCIKLSNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+Ci0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
T2JqZWN0UmVmLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgotI2luY2x1ZGUgPHJ1bnRp
bWUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLSNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotLy8gQ2FjaGUKLQotdHlwZWRlZiBIYXNoTWFwPFByb2ZpbGUqLCBKU09iamVj
dCo+IFByb2ZpbGVNYXA7Ci0KLXN0YXRpYyBQcm9maWxlTWFwJiBwcm9maWxlQ2FjaGUoKQoteyAK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFByb2ZpbGVNYXAsIHN0YXRpY1Byb2ZpbGVzLCAoKSk7
Ci0gICAgcmV0dXJuIHN0YXRpY1Byb2ZpbGVzOwotfQotCi0vLyBTdGF0aWMgVmFsdWVzCi0KLXN0
YXRpYyBKU0NsYXNzUmVmIFByb2ZpbGVDbGFzcygpOwotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRU
aXRsZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpT
U3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xh
c3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19j
YXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVy
biBKU1ZhbHVlTWFrZVN0cmluZyhjdHgsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocHJvZmlsZS0+
dGl0bGUoKSkuZ2V0KCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRIZWFkQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpT
VmFsdWVSZWYqKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNP
YmplY3QsIFByb2ZpbGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGN0eCk7Ci0KLSAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgUHJvZmls
ZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOwotICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIHByb2ZpbGUtPmhl
YWQoKSkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRVbmlxdWVJZENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVl
UmVmKikKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0
LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
dHgpOwotCi0gICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJl
cihjdHgsIHByb2ZpbGUtPnVpZCgpKTsKLX0KLQotLy8gU3RhdGljIEZ1bmN0aW9ucwotCi1zdGF0
aWMgSlNWYWx1ZVJlZiBmb2N1cyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0
aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQotewot
ICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVD
bGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAg
ICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjdHgpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgYXJndW1l
bnRzWzBdLCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9m
aWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBwcm9maWxlLT5mb2N1
cyhzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShjb25zdF9jYXN0
PEpTT2JqZWN0UmVmPihhcmd1bWVudHNbMF0pKSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGV4Y2x1ZGUoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogLypleGNlcHRpb24qLykKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xh
c3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIGlmICghSlNWYWx1
ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIGFyZ3VtZW50c1swXSwgUHJvZmlsZU5vZGVDbGFzcygpKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxl
KiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7Ci0gICAgcHJvZmlsZS0+ZXhjbHVkZShzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+
KEpTT2JqZWN0R2V0UHJpdmF0ZShjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihhcmd1bWVudHNbMF0p
KSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci19Ci0KLXN0YXRp
YyBKU1ZhbHVlUmVmIHJlc3RvcmVBbGwoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypm
dW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgLyphcmd1bWVudENvdW50
Ki8sIGNvbnN0IEpTVmFsdWVSZWZbXSAvKmFyZ3VtZW50cyovLCBKU1ZhbHVlUmVmKiAvKmV4Y2Vw
dGlvbiovKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmpl
Y3QsIFByb2ZpbGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGN0eCk7Ci0KLSAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcHJvZmlsZS0+cmVzdG9yZUFsbCgp
OwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIGZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKLXsKLSAgICBQcm9maWxlKiBwcm9maWxl
ID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKLSAg
ICBwcm9maWxlQ2FjaGUoKS5yZW1vdmUocHJvZmlsZSk7Ci0gICAgcHJvZmlsZS0+ZGVyZWYoKTsK
LX0KLQotSlNDbGFzc1JlZiBQcm9maWxlQ2xhc3MoKQotewotICAgIHN0YXRpYyBKU1N0YXRpY1Zh
bHVlIHN0YXRpY1ZhbHVlc1tdID0gewotICAgICAgICB7ICJ0aXRsZSIsIGdldFRpdGxlQ2FsbGJh
Y2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJoZWFkIiwgZ2V0
SGVhZENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAi
dWlkIiwgZ2V0VW5pcXVlSWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0s
Ci0gICAgICAgIHsgMCwgMCwgMCwgMCB9Ci0gICAgfTsKLQotICAgIHN0YXRpYyBKU1N0YXRpY0Z1
bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewotICAgICAgICB7ICJmb2N1cyIsIGZvY3VzLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAiZXhjbHVkZSIsIGV4Y2x1ZGUs
IGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJyZXN0b3JlQWxsIiwgcmVz
dG9yZUFsbCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgMCwgMCwgMCB9
Ci0gICAgfTsKLQotICAgIHN0YXRpYyBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZmluaXRpb24g
PSB7Ci0gICAgICAgIDAsIGtKU0NsYXNzQXR0cmlidXRlTm9uZSwgIlByb2ZpbGUiLCAwLCBzdGF0
aWNWYWx1ZXMsIHN0YXRpY0Z1bmN0aW9ucywKLSAgICAgICAgMCwgZmluYWxpemUsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAKLSAgICB9OwotCi0gICAgc3RhdGljIEpTQ2xhc3NSZWYgcHJvZmls
ZUNsYXNzID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWZpbml0aW9uKTsKLSAgICByZXR1cm4gcHJv
ZmlsZUNsYXNzOwotfQotCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxlKiBw
cm9maWxlKQotewotICAgIGlmICghcHJvZmlsZSkKLSAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwot
Ci0gICAgSlNPYmplY3QqIHByb2ZpbGVXcmFwcGVyID0gcHJvZmlsZUNhY2hlKCkuZ2V0KHByb2Zp
bGUpOwotICAgIGlmIChwcm9maWxlV3JhcHBlcikKLSAgICAgICAgcmV0dXJuIHByb2ZpbGVXcmFw
cGVyOwotCi0gICAgcHJvZmlsZS0+cmVmKCk7Ci0gICAgcHJvZmlsZVdyYXBwZXIgPSB0b0pTKEpT
T2JqZWN0TWFrZSh0b1JlZihleGVjKSwgUHJvZmlsZUNsYXNzKCksIHN0YXRpY19jYXN0PHZvaWQq
Pihwcm9maWxlKSkpOwotICAgIHByb2ZpbGVDYWNoZSgpLnNldChwcm9maWxlLCBwcm9maWxlV3Jh
cHBlcik7Ci0gICAgcmV0dXJuIHByb2ZpbGVXcmFwcGVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmggYi9XZWJDb3JlL2luc3Bl
Y3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
NTAwODgxLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBKYXZhU2NyaXB0UHJvZmlsZV9oCi0jZGVm
aW5lIEphdmFTY3JpcHRQcm9maWxlX2gKLQotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KSAmJiBVU0UoSlNDKQotCi0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgewotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKLSAgICBjbGFzcyBQcm9maWxlOwotfQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvZmlsZSopOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjM4N2M4NS4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJv
ZmlsZU5vZGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjM2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmgiCi0KLSNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikgJiYgVVNFKEpTQykKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2lu
Y2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QVBJQ2FzdC5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+Ci0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNSZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1Jl
Zi5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1Zh
bHVlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotCi11c2luZyBuYW1lc3BhY2Ug
SlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIENhY2hlCi0KLXR5cGVkZWYgSGFzaE1h
cDxQcm9maWxlTm9kZSosIEpTT2JqZWN0Kj4gUHJvZmlsZU5vZGVNYXA7Ci0KLXN0YXRpYyBQcm9m
aWxlTm9kZU1hcCYgcHJvZmlsZU5vZGVDYWNoZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChQcm9maWxlTm9kZU1hcCwgc3RhdGljUHJvZmlsZU5vZGVzLCAoKSk7Ci0gICAgcmV0dXJuIHN0
YXRpY1Byb2ZpbGVOb2RlczsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0RnVuY3Rpb25OYW1l
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBK
U1ZhbHVlUmVmKikKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlz
T2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19j
YXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gZnVuY3Rpb25OYW1lU3RyaW5nKEFkb3B0LCBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKHByb2ZpbGVOb2RlLT5mdW5jdGlvbk5hbWUoKS5kYXRhKCks
IHByb2ZpbGVOb2RlLT5mdW5jdGlvbk5hbWUoKS5zaXplKCkpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZU1ha2VTdHJpbmcoY3R4LCBmdW5jdGlvbk5hbWVTdHJpbmcuZ2V0KCkpOwotfQotCi1zdGF0aWMg
SlNWYWx1ZVJlZiBnZXRVUkwoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0
T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2Zp
bGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB1cmxTdHJpbmcoQWRvcHQs
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMocHJvZmlsZU5vZGUtPnVybCgpLmRhdGEoKSwg
cHJvZmlsZU5vZGUtPnVybCgpLnNpemUoKSkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmlu
ZyhjdHgsIHVybFN0cmluZy5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldExpbmVO
dW1iZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdS
ZWYsIEpTVmFsdWVSZWYqKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgs
IHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3Rh
dGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2ZpbGVOb2RlLT5saW5lTnVtYmVy
KCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRUb3RhbFRpbWUoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQotewot
ICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLQotICAgIGlmICgh
SlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3Mo
KSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJv
ZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihj
dHgsIHByb2ZpbGVOb2RlLT50b3RhbFRpbWUoKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdl
dFNlbGZUaW1lKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlz
T2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19j
YXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+c2VsZlRpbWUoKSk7Ci19
Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldE51bWJlck9mQ2FsbHMoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQotewotICAg
IEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNW
YWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmls
ZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjdHgs
IHByb2ZpbGVOb2RlLT5udW1iZXJPZkNhbGxzKCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBn
ZXRDaGlsZHJlbihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0
cmluZ1JlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIEpTQzo6SlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFz
cyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2Rl
ID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVj
dCkpOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+ID4mIGNoaWxkcmVuID0g
cHJvZmlsZU5vZGUtPmNoaWxkcmVuKCk7Ci0KLSAgICBKU09iamVjdFJlZiBnbG9iYWwgPSBKU0Nv
bnRleHRHZXRHbG9iYWxPYmplY3QoY3R4KTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBhcnJheVN0cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFycmF5
IikpOwotCi0gICAgSlNWYWx1ZVJlZiBhcnJheVByb3BlcnR5ID0gSlNPYmplY3RHZXRQcm9wZXJ0
eShjdHgsIGdsb2JhbCwgYXJyYXlTdHJpbmcuZ2V0KCksIGV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4
Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY3R4KTsKLQotICAgIEpTT2JqZWN0UmVmIGFycmF5Q29uc3RydWN0b3IgPSBKU1ZhbHVlVG9P
YmplY3QoY3R4LCBhcnJheVByb3BlcnR5LCBleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24g
JiYgKmV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7
Ci0KLSAgICBKU09iamVjdFJlZiByZXN1bHQgPSBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yKGN0
eCwgYXJyYXlDb25zdHJ1Y3RvciwgMCwgMCwgZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9u
ICYmICpleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgp
OwotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHB1c2hTdHJpbmcoQWRvcHQsIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwdXNoIikpOwotCi0gICAgSlNWYWx1ZVJlZiBwdXNo
UHJvcGVydHkgPSBKU09iamVjdEdldFByb3BlcnR5KGN0eCwgcmVzdWx0LCBwdXNoU3RyaW5nLmdl
dCgpLCBleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBKU09iamVjdFJlZiBw
dXNoRnVuY3Rpb24gPSBKU1ZhbHVlVG9PYmplY3QoY3R4LCBwdXNoUHJvcGVydHksIGV4Y2VwdGlv
bik7Ci0gICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4
KTsKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+ID46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gY2hpbGRyZW4uZW5kKCk7ICsraXQpIHsKLSAg
ICAgICAgSlNWYWx1ZVJlZiBhcmcwID0gdG9SZWYoZXhlYywgdG9KUyhleGVjLCAoKml0KS5nZXQo
KSApKTsKLSAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjdHgsIHB1c2hGdW5jdGlvbiwg
cmVzdWx0LCAxLCAmYXJnMCwgZXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbiAmJiAq
ZXhjZXB0aW9uKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0
VmlzaWJsZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmlu
Z1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwotCi0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09i
amVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2Fz
dDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjdHgsIHByb2ZpbGVOb2RlLT52aXNpYmxlKCkpOwotfQot
Ci1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRDYWxsVUlEKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09i
amVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBw
cm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxl
Tm9kZS0+Y2FsbElkZW50aWZpZXIoKS5oYXNoKCkpOwotfQotCi1zdGF0aWMgdm9pZCBmaW5hbGl6
ZShKU09iamVjdFJlZiBvYmplY3QpCi17Ci0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0g
c3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7Ci0g
ICAgcHJvZmlsZU5vZGVDYWNoZSgpLnJlbW92ZShwcm9maWxlTm9kZSk7Ci0gICAgcHJvZmlsZU5v
ZGUtPmRlcmVmKCk7Ci19Ci0KLUpTQ2xhc3NSZWYgUHJvZmlsZU5vZGVDbGFzcygpCi17Ci0gICAg
c3RhdGljIEpTU3RhdGljVmFsdWUgc3RhdGljVmFsdWVzW10gPSB7Ci0gICAgICAgIHsgImZ1bmN0
aW9uTmFtZSIsIGdldEZ1bmN0aW9uTmFtZSwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0s
Ci0gICAgICAgIHsgInVybCIsIGdldFVSTCwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0s
Ci0gICAgICAgIHsgImxpbmVOdW1iZXIiLCBnZXRMaW5lTnVtYmVyLCAwLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAidG90YWxUaW1lIiwgZ2V0VG90YWxUaW1lLCAwLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAic2VsZlRpbWUiLCBnZXRTZWxm
VGltZSwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgIm51bWJlck9m
Q2FsbHMiLCBnZXROdW1iZXJPZkNhbGxzLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwK
LSAgICAgICAgeyAiY2hpbGRyZW4iLCBnZXRDaGlsZHJlbiwgMCwga0pTUHJvcGVydHlBdHRyaWJ1
dGVOb25lIH0sCi0gICAgICAgIHsgInZpc2libGUiLCBnZXRWaXNpYmxlLCAwLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAiY2FsbFVJRCIsIGdldENhbGxVSUQsIDAsIGtK
U1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7IDAsIDAsIDAsIDAgfQotICAgIH07
Ci0KLSAgICBzdGF0aWMgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZpbml0aW9uID0gewotICAg
ICAgICAwLCBrSlNDbGFzc0F0dHJpYnV0ZU5vbmUsICJQcm9maWxlTm9kZSIsIDAsIHN0YXRpY1Zh
bHVlcywgMCwKLSAgICAgICAgMCwgZmluYWxpemUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAK
LSAgICB9OwotCi0gICAgc3RhdGljIEpTQ2xhc3NSZWYgcHJvZmlsZU5vZGVDbGFzcyA9IEpTQ2xh
c3NDcmVhdGUoJmNsYXNzRGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIHByb2ZpbGVOb2RlQ2xhc3M7
Ci19Ci0KLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIFByb2ZpbGVOb2RlKiBwcm9maWxl
Tm9kZSkKLXsKLSAgICBpZiAoIXByb2ZpbGVOb2RlKQotICAgICAgICByZXR1cm4ganNOdWxsKCk7
Ci0KLSAgICBKU09iamVjdCogcHJvZmlsZU5vZGVXcmFwcGVyID0gcHJvZmlsZU5vZGVDYWNoZSgp
LmdldChwcm9maWxlTm9kZSk7Ci0gICAgaWYgKHByb2ZpbGVOb2RlV3JhcHBlcikKLSAgICAgICAg
cmV0dXJuIHByb2ZpbGVOb2RlV3JhcHBlcjsKLQotICAgIHByb2ZpbGVOb2RlLT5yZWYoKTsKLQot
ICAgIHByb2ZpbGVOb2RlV3JhcHBlciA9IHRvSlMoSlNPYmplY3RNYWtlKHRvUmVmKGV4ZWMpLCBQ
cm9maWxlTm9kZUNsYXNzKCksIHN0YXRpY19jYXN0PHZvaWQqPihwcm9maWxlTm9kZSkpKTsKLSAg
ICBwcm9maWxlTm9kZUNhY2hlKCkuc2V0KHByb2ZpbGVOb2RlLCBwcm9maWxlTm9kZVdyYXBwZXIp
OwotICAgIHJldHVybiBwcm9maWxlTm9kZVdyYXBwZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggYi9XZWJDb3JlL2lu
c3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjY4NWFjNi4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0
UHJvZmlsZU5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEphdmFTY3JpcHRQcm9m
aWxlTm9kZV9oCi0jZGVmaW5lIEphdmFTY3JpcHRQcm9maWxlTm9kZV9oCi0KLSNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikgJiYgVVNFKEpTQykKLQotI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgotCi1uYW1lc3BhY2Ug
SlNDIHsKLSAgICBjbGFzcyBFeGVjU3RhdGU7Ci0gICAgY2xhc3MgUHJvZmlsZU5vZGU7Ci19Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIEpTQ2xhc3NSZWYgUHJvZmlsZU5vZGVDbGFzcygp
OwotICAgIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9maWxlTm9k
ZSopOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKLQotI2VuZGlmCg==
</data>
<flag name="review"
          id="31466"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48808</attachid>
            <date>2010-02-16 05:20:34 -0800</date>
            <delta_ts>2010-02-16 05:20:34 -0800</delta_ts>
            <desc>committed revision -- no changes to JSBindingsAllInOne.cpp</desc>
            <filename>move-profiles-to-bindings-patch</filename>
            <type>text/plain</type>
            <size>58210</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjBlNjhjMS4uOGE0ODhmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wMi0xNiAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVs
IEZlbGRtYW4uCisKKyAgICAgICAgTW92ZSBKU0Mtc3BlY2lmaWMgd3JhcHBlcnMgZm9yIFByb2Zp
bGUgYW5kIFByb2ZpbGVOb2RlIHRvIGJpbmRpbmdzL2pzLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDg0OAorCisgICAgICAgICogR05VbWFrZWZp
bGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KYXZh
U2NyaXB0UHJvZmlsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cHJvZmlsZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRpdGxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0SGVhZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVuaXF1ZUlkQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6Zm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6ZXhjbHVk
ZSk6CisgICAgICAgIChXZWJDb3JlOjpyZXN0b3JlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2ZpbGVDbGFzcyk6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnByb2ZpbGVOb2RlQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0RnVuY3Rpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRMaW5lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRvdGFs
VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRTZWxmVGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXROdW1iZXJPZkNhbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldFZpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2FsbFVJ
RCk6CisgICAgICAgIChXZWJDb3JlOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9m
aWxlTm9kZUNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9K
YXZhU2NyaXB0UHJvZmlsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2Ny
aXB0UHJvZmlsZU5vZGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2Ny
aXB0UHJvZmlsZU5vZGUuaDogUmVtb3ZlZC4KKwogMjAxMC0wMi0xNiAgQWxleGFuZGVyIFBhdmxv
diAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZl
bGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQppbmRleCBlMGM5ZGM2Li5iNTY4ODVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTQ2NSw2ICs0NjUs
MTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFBy
b2Nlc3NvckNvbnN0cnVjdG9yLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9j
ZXNzb3JDb25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nv
ckN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGUuY3Bw
IFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmggXAorCVdlYkNvcmUv
YmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5o
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmNwcCBcCkBAIC0xMjI0LDEwICsx
MjI4LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0RGVidWdMaXN0ZW5lci5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaCBc
Ci0JV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwIFwKLQlXZWJDb3JlL2lu
c3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5oIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0UHJvZmlsZU5vZGUuY3BwIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmls
ZU5vZGUuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBc
CiAJV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggXAogCVdlYkNvcmUv
bG9hZGVyL0NhY2hlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDIyYjYxMTcuLjY5ZTIwNjYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MTcsNiAr
NjE3LDEwIEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3Ry
dWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25z
dHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0
b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5jcHAn
LAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmgnLAorICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAnLAorICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvU2NyaXB0QXJy
YXkuY3BwJywKQEAgLTE2MTAsMTAgKzE2MTQsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9K
YXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNj
cmlwdERlYnVnU2VydmVyLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRE
ZWJ1Z1NlcnZlci5oJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUu
Y3BwJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuaCcsCi0gICAg
ICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAnLAotICAgICAgICAg
ICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8g
Yi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDEzZDYzMTQuLjMyOTZlZjMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMzM5LDYg
KzMzOSwxMCBAQCBTT1VSQ0VTICs9IFwKICAgICBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBc
CiAgICAgYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBcCisgICAgYmluZGlu
Z3MvanMvSmF2YVNjcmlwdFByb2ZpbGUuaCBcCisgICAgYmluZGluZ3MvanMvSmF2YVNjcmlwdFBy
b2ZpbGVOb2RlLmggXAorICAgIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmNwcCBcCisg
ICAgYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcAogICAgIGJpbmRpbmdzL2pz
L1NjcmlwdEFycmF5LmNwcCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmNwcCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCkBAIC0xMzcxLDgg
KzEzNzUsNiBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oIFwKICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oIFwKICAgICBpbnNw
ZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmggXAotICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0
UHJvZmlsZS5oIFwKLSAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggXAogICAg
IGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCBcCiAgICAgbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIFwKICAgICBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuaCBcCkBAIC0yNjI4LDggKzI2MzAsNiBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUj0xKSB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSmF2
YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgXAogICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgXAogICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVy
LmNwcCBcCi0gICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAgXAotICAgICAg
ICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcAogfQogCiBjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TPTEpIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZmNzk2M2IuLmFlM2EwYjcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzk4OTYsNiArMzk4OTYsMjIgQEAKIAkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKYXZhU2NyaXB0UHJvZmlsZS5jcHAiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
YXZhU2NyaXB0UHJvZmlsZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEphdmFTY3JpcHRQcm9maWxlTm9kZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NoZWR1bGVkQWN0
aW9uLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTQyNjgxLDIy
ICs0MjY5Nyw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJvZmlsZS5jcHAiDQotCQkJCT4NCi0JCQk8
L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSmF2YVNj
cmlwdFByb2ZpbGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIg0KLQkJCQk+
DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9y
XEphdmFTY3JpcHRQcm9maWxlTm9kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxl
DQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBlODcyMDZkLi45ODQ2ZDFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTI4LDEwICs1MjgsNiBAQAogCQkxQzgxQjk1QTBF
OTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8q
IEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzgxQjk1NzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi87
IH07CiAJCTFDODFCOTVDMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU4MEU5NzMz
MDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQzgxQjlGRjBFOTczM0NCMDAyNjZFMDcgLyogSmF2
YVNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzgxQjlGQjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVO
b2RlLmggKi87IH07Ci0JCTFDODFCQTAwMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJv
ZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM4MUI5RkMwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAg
Ki87IH07Ci0JCTFDODFCQTAxMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5RkQw
RTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmggKi87IH07Ci0JCTFDODFCQTAy
MEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjlGRTBFOTczM0NCMDAyNjZFMDcg
LyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwICovOyB9OwogCQkxQzgxQkEwOTBFOTczNDgzMDAyNjZF
MDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQkEwMzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgKi87IH07CiAJCTFDODFCQTBBMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZh
U2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzgxQkEwNDBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5o
ICovOyB9OwogCQkxQzgxQkEwQzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnTGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
ODFCQTA2MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDU2LDYgKzI0
NTIsMTAgQEAKIAkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODQwRkRG
NEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovOyB9OwogCQk5N0RENEQ4NzBGREY0RDZF
MDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAq
LzsgfTsKIAkJOTdFRjdERkUxMDdFNTVCNzAwRDdDNDlDIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RUY3
REZEMTA3RTU1QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgKi87IH07CisJ
CTlGMkEzMjJCMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjJBMzIyNzExMjVBMEEy
MDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwICovOyB9OworCQk5RjJBMzIyQzExMjVB
MEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGMkEzMjI4MTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZh
U2NyaXB0UHJvZmlsZS5oICovOyB9OworCQk5RjJBMzIyRDExMjVBMEEyMDAzQzMwNTYgLyogSmF2
YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlGMkEzMjI5MTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmls
ZU5vZGUuY3BwICovOyB9OworCQk5RjJBMzIyRTExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RjJBMzIyQTExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmgg
Ki87IH07CiAJCTlGNkZDMTk2MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjZGQzE5
NDExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovOyB9OwogCQk5RjZG
QzE5NzExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNkZDMTk1MTEyMkU4MkEwMEU4MDE5
NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTlGNzIzMDRGMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9m
aWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Rjcy
MzA0QzExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01ODQ1LDEwICs1ODQ1LDYgQEAKIAkJ
MUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAv
KiBJbnNwZWN0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU5MEU5
NzMzMDgwMDI2NkUwNyAvKiBmcm9udC1lbmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSAiZnJvbnQtZW5kIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4MUI5RkIwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3Jp
cHRQcm9maWxlTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2Ny
aXB0UHJvZmlsZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4MUI5RkMw
RTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzgxQjlGRDBFOTczM0NCMDAyNjZFMDcgLyogSmF2
YVNjcmlwdFByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNj
cmlwdFByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4MUI5RkUwRTk3
MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFTY3JpcHRQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM4MUJBMDMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCQTA0MEU5
NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4MUJBMDUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzgwMSw2ICs3Nzk3LDEwIEBACiAJCTk3REQ0
RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFhTU0F1ZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3RUY3REZEMTA3RTU1QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVy
QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDb250
cm9sbGVyQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGMkEzMjI3MTEy
NUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTlGMkEzMjI4MTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJv
ZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0UHJvZmls
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjJBMzIyOTExMjVBMEEyMDAzQzMw
NTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTlGMkEzMjJBMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmls
ZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFByb2Zp
bGVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNkZDMTk0MTEyMkU4MkEw
MEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlGNkZDMTk1MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjcyMzA0QzExMTg0QjQxMDBBRDAxMjYgLyog
U2NyaXB0UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRQ
cm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY0MCwxMCArMTA2NDAs
NiBAQAogCQkJCTFDODFCQTA2MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0
ZW5lci5oICovLAogCQkJCTFDODFCQTA3MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwICovLAogCQkJCTFDODFCQTA4MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2Ny
aXB0RGVidWdTZXJ2ZXIuaCAqLywKLQkJCQkxQzgxQjlGRTBFOTczM0NCMDAyNjZFMDcgLyogSmF2
YVNjcmlwdFByb2ZpbGUuY3BwICovLAotCQkJCTFDODFCOUZEMEU5NzMzQ0IwMDI2NkUwNyAvKiBK
YXZhU2NyaXB0UHJvZmlsZS5oICovLAotCQkJCTFDODFCOUZDMEU5NzMzQ0IwMDI2NkUwNyAvKiBK
YXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwICovLAotCQkJCTFDODFCOUZCMEU5NzMzQ0IwMDI2NkUw
NyAvKiBKYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCAqLywKIAkJCQlCQ0M2NEY1RjBEQ0ZCODRFMDA4
MUVGM0IgLyogbG9jYWxpemVkU3RyaW5ncy5qcyAqLywKIAkJCQk3NTUzQ0ZFNzEwOEY0NzNGMDBF
QTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCAqLywKIAkJCQk3NTUzQ0ZFNjEwOEY0
NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi8sCkBAIC0xNDYyNiw2ICsx
NDYyMiwxMCBAQAogCQkJCUIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVX
cmFwcGVyLmggKi8sCiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29u
dGV4dEJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtl
ckNvbnRleHRCYXNlLmggKi8sCisJCQkJOUYyQTMyMjcxMTI1QTBBMjAwM0MzMDU2IC8qIEphdmFT
Y3JpcHRQcm9maWxlLmNwcCAqLywKKwkJCQk5RjJBMzIyODExMjVBMEEyMDAzQzMwNTYgLyogSmF2
YVNjcmlwdFByb2ZpbGUuaCAqLywKKwkJCQk5RjJBMzIyOTExMjVBMEEyMDAzQzMwNTYgLyogSmF2
YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCAqLywKKwkJCQk5RjJBMzIyQTExMjVBMEEyMDAzQzMwNTYg
LyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggKi8sCiAJCQkJQkNBMzc4QkEwRDE1RjY0MjAwQjc5
M0Q2IC8qIFNjaGVkdWxlZEFjdGlvbi5jcHAgKi8sCiAJCQkJQkNBMzc4QkIwRDE1RjY0MjAwQjc5
M0Q2IC8qIFNjaGVkdWxlZEFjdGlvbi5oICovLAogCQkJCTdBMUU4OEYzMTAxQ0MzODQwMDBDNERG
NSAvKiBTY3JpcHRBcnJheS5jcHAgKi8sCkBAIC0xNzMwMCw4ICsxNzMwMCw2IEBACiAJCQkJMUM4
MUJBMEEwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFDODFCQTBDMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0
ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUJBMEUwRTk3MzQ4MzAwMjY2RTA3IC8qIEph
dmFTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUM4MUJBMDEwRTk3MzND
QjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQzgx
QjlGRjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1OUJDMzkzRjExMDU0QTEzMDBGRDg1REIgLyogSmF2YVN0cmluZ0pTQy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMDQwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9qc29iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkxMzk1M0IxMTA3NTg0NTAwODNFQzU1IC8qIEpOSUJy
aWRnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODUyNiw2ICsxODUyNCw4IEBACiAJCQkJQkNFNzg5
MTYxMTIwRDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0U3ODk4NjExMjBFN0E2MDA2MEVDRTUgLyogQmlkaVJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOUY2RkMxOTcxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk5RjJBMzIyQzExMjVBMEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTlGMkEzMjJFMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZh
U2NyaXB0UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTk0OTEsOCArMTk0OTEsNiBA
QAogCQkJCTU5QTlFN0IwMTEwNDc1ODgwMERGQjRDMSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMDkwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRD
YWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMEQwRTk3MzQ4MzAwMjY2RTA3
IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQzgxQkEw
MjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMUM4MUJBMDAwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQwMzBEN0UyQjgyMDA3QzM5ODMgLyogam5pX2pz
b2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMDUwRDdFMkI4MjAwN0MzOTgzIC8q
IGpuaV9vYmpjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTkxMzk1M0QxMTA3NTg0RTAwODNFQzU1
IC8qIEpOSUJyaWRnZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIwNzA3LDYgKzIwNzA1LDggQEAK
IAkJCQlCQ0U3ODk4QjExMjBFODAyMDA2MEVDRTUgLyogQmlkaVJ1bi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5RjZGQzE5NjExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzZGRjE3RTMxMTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdpblZp
ZXdOb25lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlGMkEzMjJCMTEyNUEwQTIwMDNDMzA1NiAv
KiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5RjJBMzIyRDExMjVB
MEEyMDAzQzMwNTYgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44ZTU2ZWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5jcHAKQEAgLTAsMCArMSwxODMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSmF2YVNjcmlwdFByb2ZpbGUuaCIKKworI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQorCisjaW5jbHVkZSAiSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmgiCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgorI2luY2x1ZGUgPHBy
b2ZpbGVyL1Byb2ZpbGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIENhY2hlCisK
K3R5cGVkZWYgSGFzaE1hcDxQcm9maWxlKiwgSlNPYmplY3QqPiBQcm9maWxlTWFwOworCitzdGF0
aWMgUHJvZmlsZU1hcCYgcHJvZmlsZUNhY2hlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFByb2ZpbGVNYXAsIHN0YXRpY1Byb2ZpbGVzLCAoKSk7CisgICAgcmV0dXJuIHN0YXRpY1Byb2Zp
bGVzOworfQorCisvLyBTdGF0aWMgVmFsdWVzCisKK3N0YXRpYyBKU0NsYXNzUmVmIFByb2ZpbGVD
bGFzcygpOworCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRUaXRsZUNhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikK
K3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9m
aWxlQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwor
CisgICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjdHgs
IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocHJvZmlsZS0+dGl0bGUoKSkuZ2V0KCkpOworfQorCitz
dGF0aWMgSlNWYWx1ZVJlZiBnZXRIZWFkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQoreworICAgIGlmICgh
SlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0
PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVybiB0
b1JlZihleGVjLCB0b0pTKGV4ZWMsIHByb2ZpbGUtPmhlYWQoKSkpOworfQorCitzdGF0aWMgSlNW
YWx1ZVJlZiBnZXRVbmlxdWVJZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBpZiAoIUpTVmFs
dWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgUHJvZmlsZSogcHJv
ZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVj
dCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2ZpbGUtPnVpZCgpKTsK
K30KKworLy8gU3RhdGljIEZ1bmN0aW9ucworCitzdGF0aWMgSlNWYWx1ZVJlZiBmb2N1cyhKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQoreworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0
T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgaWYgKCFK
U1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgYXJndW1lbnRzWzBdLCBQcm9maWxlTm9kZUNsYXNz
KCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFBy
b2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKyAgICBwcm9maWxlLT5mb2N1cyhzdGF0aWNfY2FzdDxQcm9maWxlTm9k
ZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihhcmd1bWVudHNb
MF0pKSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Cit9CisKK3N0
YXRpYyBKU1ZhbHVlUmVmIGV4Y2x1ZGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypm
dW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogLypleGNlcHRpb24qLykK
K3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9m
aWxlQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwor
CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY3R4KTsKKworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIGFy
Z3VtZW50c1swXSwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8
UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcHJvZmlsZS0+
ZXhjbHVkZShzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShjb25z
dF9jYXN0PEpTT2JqZWN0UmVmPihhcmd1bWVudHNbMF0pKSkpOworCisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGN0eCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlc3RvcmVBbGwo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0IEpTVmFsdWVSZWZbXSAv
KmFyZ3VtZW50cyovLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQoreworICAgIGlmICghSlNW
YWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlKiBw
cm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CisgICAgcHJvZmlsZS0+cmVzdG9yZUFsbCgpOworCisgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGN0eCk7Cit9CisKK3N0YXRpYyB2b2lkIGZpbmFsaXplKEpTT2JqZWN0UmVm
IG9iamVjdCkKK3sKKyAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+
KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKKyAgICBwcm9maWxlQ2FjaGUoKS5yZW1vdmUo
cHJvZmlsZSk7CisgICAgcHJvZmlsZS0+ZGVyZWYoKTsKK30KKworSlNDbGFzc1JlZiBQcm9maWxl
Q2xhc3MoKQoreworICAgIHN0YXRpYyBKU1N0YXRpY1ZhbHVlIHN0YXRpY1ZhbHVlc1tdID0gewor
ICAgICAgICB7ICJ0aXRsZSIsIGdldFRpdGxlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmli
dXRlTm9uZSB9LAorICAgICAgICB7ICJoZWFkIiwgZ2V0SGVhZENhbGxiYWNrLCAwLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAidWlkIiwgZ2V0VW5pcXVlSWRDYWxsYmFj
aywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgMCwgMCwgMCwgMCB9
CisgICAgfTsKKworICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1td
ID0geworICAgICAgICB7ICJmb2N1cyIsIGZvY3VzLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUg
fSwKKyAgICAgICAgeyAiZXhjbHVkZSIsIGV4Y2x1ZGUsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9u
ZSB9LAorICAgICAgICB7ICJyZXN0b3JlQWxsIiwgcmVzdG9yZUFsbCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVOb25lIH0sCisgICAgICAgIHsgMCwgMCwgMCB9CisgICAgfTsKKworICAgIHN0YXRpYyBK
U0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZmluaXRpb24gPSB7CisgICAgICAgIDAsIGtKU0NsYXNz
QXR0cmlidXRlTm9uZSwgIlByb2ZpbGUiLCAwLCBzdGF0aWNWYWx1ZXMsIHN0YXRpY0Z1bmN0aW9u
cywKKyAgICAgICAgMCwgZmluYWxpemUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKKyAgICB9
OworCisgICAgc3RhdGljIEpTQ2xhc3NSZWYgcHJvZmlsZUNsYXNzID0gSlNDbGFzc0NyZWF0ZSgm
Y2xhc3NEZWZpbml0aW9uKTsKKyAgICByZXR1cm4gcHJvZmlsZUNsYXNzOworfQorCitKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxlKiBwcm9maWxlKQoreworICAgIGlmICghcHJv
ZmlsZSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworCisgICAgSlNPYmplY3QqIHByb2ZpbGVX
cmFwcGVyID0gcHJvZmlsZUNhY2hlKCkuZ2V0KHByb2ZpbGUpOworICAgIGlmIChwcm9maWxlV3Jh
cHBlcikKKyAgICAgICAgcmV0dXJuIHByb2ZpbGVXcmFwcGVyOworCisgICAgcHJvZmlsZS0+cmVm
KCk7CisgICAgcHJvZmlsZVdyYXBwZXIgPSB0b0pTKEpTT2JqZWN0TWFrZSh0b1JlZihleGVjKSwg
UHJvZmlsZUNsYXNzKCksIHN0YXRpY19jYXN0PHZvaWQqPihwcm9maWxlKSkpOworICAgIHByb2Zp
bGVDYWNoZSgpLnNldChwcm9maWxlLCBwcm9maWxlV3JhcHBlcik7CisgICAgcmV0dXJuIHByb2Zp
bGVXcmFwcGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SmF2YVNjcmlwdFByb2ZpbGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2Zp
bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yjc1Yjk3Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5oCkBAIC0w
LDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEphdmFTY3JpcHRQcm9maWxlX2gKKyNkZWZpbmUgSmF2YVNjcmlwdFByb2ZpbGVf
aAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlIDxydW50aW1l
L0pTVmFsdWUuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBQ
cm9maWxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9maWxlKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDYwYjI0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCkBAIC0wLDAgKzEsMjM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRQcm9maWxlTm9kZS5oIgorCisjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDb250ZXh0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZU5v
ZGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKwordXNpbmcgbmFtZXNwYWNl
IEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBDYWNoZQorCit0eXBlZGVmIEhhc2hN
YXA8UHJvZmlsZU5vZGUqLCBKU09iamVjdCo+IFByb2ZpbGVOb2RlTWFwOworCitzdGF0aWMgUHJv
ZmlsZU5vZGVNYXAmIHByb2ZpbGVOb2RlQ2FjaGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUHJvZmlsZU5vZGVNYXAsIHN0YXRpY1Byb2ZpbGVOb2RlcywgKCkpOworICAgIHJldHVybiBz
dGF0aWNQcm9maWxlTm9kZXM7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldEZ1bmN0aW9uTmFt
ZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwg
SlNWYWx1ZVJlZiopCit7CisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhp
c09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNf
Y2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGZ1bmN0aW9uTmFtZVN0cmluZyhBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhwcm9maWxlTm9kZS0+ZnVuY3Rpb25OYW1lKCkuZGF0YSgp
LCBwcm9maWxlTm9kZS0+ZnVuY3Rpb25OYW1lKCkuc2l6ZSgpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlU3RyaW5nKGN0eCwgZnVuY3Rpb25OYW1lU3RyaW5nLmdldCgpKTsKK30KKworc3RhdGlj
IEpTVmFsdWVSZWYgZ2V0VVJMKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVj
dE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGVOb2RlKiBwcm9m
aWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0
LCBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKHByb2ZpbGVOb2RlLT51cmwoKS5kYXRhKCks
IHByb2ZpbGVOb2RlLT51cmwoKS5zaXplKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJp
bmcoY3R4LCB1cmxTdHJpbmcuZ2V0KCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRMaW5l
TnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5n
UmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4
LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0
YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+bGluZU51bWJl
cigpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZ2V0VG90YWxUaW1lKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sK
KyAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBpZiAo
IUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNz
KCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFBy
b2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIo
Y3R4LCBwcm9maWxlTm9kZS0+dG90YWxUaW1lKCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBn
ZXRTZWxmVGltZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0
cmluZ1JlZiwgSlNWYWx1ZVJlZiopCit7CisgICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOworCisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhp
c09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNf
Y2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmlsZU5vZGUtPnNlbGZUaW1lKCkpOwor
fQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXROdW1iZXJPZkNhbGxzKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAg
ICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBpZiAoIUpT
VmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2Zp
bGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4
LCBwcm9maWxlTm9kZS0+bnVtYmVyT2ZDYWxscygpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYg
Z2V0Q2hpbGRyZW4oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNT
dHJpbmdSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU0M6OkpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xh
c3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9k
ZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmpl
Y3QpKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2RlPiA+JiBjaGlsZHJlbiA9
IHByb2ZpbGVOb2RlLT5jaGlsZHJlbigpOworCisgICAgSlNPYmplY3RSZWYgZ2xvYmFsID0gSlND
b250ZXh0R2V0R2xvYmFsT2JqZWN0KGN0eCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gYXJyYXlTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcnJh
eSIpKTsKKworICAgIEpTVmFsdWVSZWYgYXJyYXlQcm9wZXJ0eSA9IEpTT2JqZWN0R2V0UHJvcGVy
dHkoY3R4LCBnbG9iYWwsIGFycmF5U3RyaW5nLmdldCgpLCBleGNlcHRpb24pOworICAgIGlmIChl
eGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGN0eCk7CisKKyAgICBKU09iamVjdFJlZiBhcnJheUNvbnN0cnVjdG9yID0gSlNWYWx1ZVRv
T2JqZWN0KGN0eCwgYXJyYXlQcm9wZXJ0eSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9u
ICYmICpleGNlcHRpb24pCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgp
OworCisgICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3Rvcihj
dHgsIGFycmF5Q29uc3RydWN0b3IsIDAsIDAsIGV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlv
biAmJiAqZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwdXNoU3RyaW5nKEFkb3B0LCBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicHVzaCIpKTsKKworICAgIEpTVmFsdWVSZWYgcHVz
aFByb3BlcnR5ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjdHgsIHJlc3VsdCwgcHVzaFN0cmluZy5n
ZXQoKSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworCisgICAgSlNPYmplY3RSZWYg
cHVzaEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KGN0eCwgcHVzaFByb3BlcnR5LCBleGNlcHRp
b24pOworICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2RlPiA+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLmVuZCgpOyArK2l0KSB7Cisg
ICAgICAgIEpTVmFsdWVSZWYgYXJnMCA9IHRvUmVmKGV4ZWMsIHRvSlMoZXhlYywgKCppdCkuZ2V0
KCkgKSk7CisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY3R4LCBwdXNoRnVuY3Rpb24s
IHJlc3VsdCwgMSwgJmFyZzAsIGV4Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24gJiYg
KmV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgp
OworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdl
dFZpc2libGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJp
bmdSZWYsIEpTVmFsdWVSZWYqKQoreworICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKKworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNP
YmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjdHgpOworCisgICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nh
c3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY3R4LCBwcm9maWxlTm9kZS0+dmlzaWJsZSgpKTsKK30K
Kworc3RhdGljIEpTVmFsdWVSZWYgZ2V0Q2FsbFVJRChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCit7CisgICAgSlNDOjpK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgaWYgKCFKU1ZhbHVlSXNP
YmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisKKyAgICBQcm9maWxlTm9kZSog
cHJvZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0
ZSh0aGlzT2JqZWN0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGN0eCwgcHJvZmls
ZU5vZGUtPmNhbGxJZGVudGlmaWVyKCkuaGFzaCgpKTsKK30KKworc3RhdGljIHZvaWQgZmluYWxp
emUoSlNPYmplY3RSZWYgb2JqZWN0KQoreworICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9
IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOwor
ICAgIHByb2ZpbGVOb2RlQ2FjaGUoKS5yZW1vdmUocHJvZmlsZU5vZGUpOworICAgIHByb2ZpbGVO
b2RlLT5kZXJlZigpOworfQorCitKU0NsYXNzUmVmIFByb2ZpbGVOb2RlQ2xhc3MoKQoreworICAg
IHN0YXRpYyBKU1N0YXRpY1ZhbHVlIHN0YXRpY1ZhbHVlc1tdID0geworICAgICAgICB7ICJmdW5j
dGlvbk5hbWUiLCBnZXRGdW5jdGlvbk5hbWUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9
LAorICAgICAgICB7ICJ1cmwiLCBnZXRVUkwsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9
LAorICAgICAgICB7ICJsaW5lTnVtYmVyIiwgZ2V0TGluZU51bWJlciwgMCwga0pTUHJvcGVydHlB
dHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgInRvdGFsVGltZSIsIGdldFRvdGFsVGltZSwgMCwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgInNlbGZUaW1lIiwgZ2V0U2Vs
ZlRpbWUsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAgICAgICB7ICJudW1iZXJP
ZkNhbGxzIiwgZ2V0TnVtYmVyT2ZDYWxscywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0s
CisgICAgICAgIHsgImNoaWxkcmVuIiwgZ2V0Q2hpbGRyZW4sIDAsIGtKU1Byb3BlcnR5QXR0cmli
dXRlTm9uZSB9LAorICAgICAgICB7ICJ2aXNpYmxlIiwgZ2V0VmlzaWJsZSwgMCwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVOb25lIH0sCisgICAgICAgIHsgImNhbGxVSUQiLCBnZXRDYWxsVUlELCAwLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAgICAgICAgeyAwLCAwLCAwLCAwIH0KKyAgICB9
OworCisgICAgc3RhdGljIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVmaW5pdGlvbiA9IHsKKyAg
ICAgICAgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiUHJvZmlsZU5vZGUiLCAwLCBzdGF0aWNW
YWx1ZXMsIDAsCisgICAgICAgIDAsIGZpbmFsaXplLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
CisgICAgfTsKKworICAgIHN0YXRpYyBKU0NsYXNzUmVmIHByb2ZpbGVOb2RlQ2xhc3MgPSBKU0Ns
YXNzQ3JlYXRlKCZjbGFzc0RlZmluaXRpb24pOworICAgIHJldHVybiBwcm9maWxlTm9kZUNsYXNz
OworfQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxlTm9kZSogcHJvZmls
ZU5vZGUpCit7CisgICAgaWYgKCFwcm9maWxlTm9kZSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OworCisgICAgSlNPYmplY3QqIHByb2ZpbGVOb2RlV3JhcHBlciA9IHByb2ZpbGVOb2RlQ2FjaGUo
KS5nZXQocHJvZmlsZU5vZGUpOworICAgIGlmIChwcm9maWxlTm9kZVdyYXBwZXIpCisgICAgICAg
IHJldHVybiBwcm9maWxlTm9kZVdyYXBwZXI7CisKKyAgICBwcm9maWxlTm9kZS0+cmVmKCk7CisK
KyAgICBwcm9maWxlTm9kZVdyYXBwZXIgPSB0b0pTKEpTT2JqZWN0TWFrZSh0b1JlZihleGVjKSwg
UHJvZmlsZU5vZGVDbGFzcygpLCBzdGF0aWNfY2FzdDx2b2lkKj4ocHJvZmlsZU5vZGUpKSk7Cisg
ICAgcHJvZmlsZU5vZGVDYWNoZSgpLnNldChwcm9maWxlTm9kZSwgcHJvZmlsZU5vZGVXcmFwcGVy
KTsKKyAgICByZXR1cm4gcHJvZmlsZU5vZGVXcmFwcGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmYwMWJlMTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEphdmFTY3JpcHRQ
cm9maWxlTm9kZV9oCisjZGVmaW5lIEphdmFTY3JpcHRQcm9maWxlTm9kZV9oCisKKyNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFz
ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorCituYW1lc3BhY2UgSlNDIHsKK2Ns
YXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIFByb2ZpbGVOb2RlOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0pTQ2xhc3NSZWYgUHJvZmlsZU5vZGVDbGFzcygpOworSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb2ZpbGVOb2RlKik7CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjIwM2YwYi4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZh
U2NyaXB0UHJvZmlsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJKYXZhU2NyaXB0UHJvZmlsZS5oIgotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpICYmIFVTRShKU0MpCi0KLSNpbmNsdWRlICJKYXZhU2NyaXB0UHJvZmlsZU5v
ZGUuaCIKLSNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQVBJQ2FzdC5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3Qu
aD4KLSNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Ly8gQ2FjaGUKLQotdHlwZWRlZiBIYXNoTWFwPFByb2ZpbGUqLCBKU09iamVjdCo+IFByb2ZpbGVN
YXA7Ci0KLXN0YXRpYyBQcm9maWxlTWFwJiBwcm9maWxlQ2FjaGUoKQoteyAKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFByb2ZpbGVNYXAsIHN0YXRpY1Byb2ZpbGVzLCAoKSk7Ci0gICAgcmV0dXJu
IHN0YXRpY1Byb2ZpbGVzOwotfQotCi0vLyBTdGF0aWMgVmFsdWVzCi0KLXN0YXRpYyBKU0NsYXNz
UmVmIFByb2ZpbGVDbGFzcygpOwotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRUaXRsZUNhbGxiYWNr
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBK
U1ZhbHVlUmVmKikKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlz
T2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjdHgpOwotCi0gICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUq
PihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVN0cmluZyhjdHgsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocHJvZmlsZS0+dGl0bGUoKSkuZ2V0
KCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRIZWFkQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQot
ewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2Zp
bGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0K
LSAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgUHJvZmlsZSogcHJvZmlsZSA9
IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwot
ICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIHByb2ZpbGUtPmhlYWQoKSkpOwotfQot
Ci1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRVbmlxdWVJZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAg
ICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xh
c3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAg
UHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2Zp
bGUtPnVpZCgpKTsKLX0KLQotLy8gU3RhdGljIEZ1bmN0aW9ucwotCi1zdGF0aWMgSlNWYWx1ZVJl
ZiBmb2N1cyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQotewotICAgIGlmICghSlNW
YWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBpZiAoYXJndW1l
bnRDb3VudCA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwot
Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgYXJndW1lbnRzWzBdLCBQcm9m
aWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKLQotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBwcm9maWxlLT5mb2N1cyhzdGF0aWNfY2Fz
dDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShjb25zdF9jYXN0PEpTT2JqZWN0UmVm
Pihhcmd1bWVudHNbMF0pKSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0
eCk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGV4Y2x1ZGUoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogLypl
eGNlcHRpb24qLykKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlz
T2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjdHgpOwotCi0gICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZD
bGFzcyhjdHgsIGFyZ3VtZW50c1swXSwgUHJvZmlsZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlKiBwcm9maWxlID0g
c3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0g
ICAgcHJvZmlsZS0+ZXhjbHVkZShzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0
UHJpdmF0ZShjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihhcmd1bWVudHNbMF0pKSkpOwotCi0gICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVm
IHJlc3RvcmVBbGwoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0IEpT
VmFsdWVSZWZbXSAvKmFyZ3VtZW50cyovLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQotewot
ICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVD
bGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAg
ICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJp
dmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcHJvZmlsZS0+cmVzdG9yZUFsbCgpOwotCi0gICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGZpbmFsaXpl
KEpTT2JqZWN0UmVmIG9iamVjdCkKLXsKLSAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nh
c3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKLSAgICBwcm9maWxlQ2Fj
aGUoKS5yZW1vdmUocHJvZmlsZSk7Ci0gICAgcHJvZmlsZS0+ZGVyZWYoKTsKLX0KLQotSlNDbGFz
c1JlZiBQcm9maWxlQ2xhc3MoKQotewotICAgIHN0YXRpYyBKU1N0YXRpY1ZhbHVlIHN0YXRpY1Zh
bHVlc1tdID0gewotICAgICAgICB7ICJ0aXRsZSIsIGdldFRpdGxlQ2FsbGJhY2ssIDAsIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJoZWFkIiwgZ2V0SGVhZENhbGxiYWNr
LCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAidWlkIiwgZ2V0VW5p
cXVlSWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsg
MCwgMCwgMCwgMCB9Ci0gICAgfTsKLQotICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRp
Y0Z1bmN0aW9uc1tdID0gewotICAgICAgICB7ICJmb2N1cyIsIGZvY3VzLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAiZXhjbHVkZSIsIGV4Y2x1ZGUsIGtKU1Byb3BlcnR5
QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJyZXN0b3JlQWxsIiwgcmVzdG9yZUFsbCwga0pT
UHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgMCwgMCwgMCB9Ci0gICAgfTsKLQot
ICAgIHN0YXRpYyBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZmluaXRpb24gPSB7Ci0gICAgICAg
IDAsIGtKU0NsYXNzQXR0cmlidXRlTm9uZSwgIlByb2ZpbGUiLCAwLCBzdGF0aWNWYWx1ZXMsIHN0
YXRpY0Z1bmN0aW9ucywKLSAgICAgICAgMCwgZmluYWxpemUsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAKLSAgICB9OwotCi0gICAgc3RhdGljIEpTQ2xhc3NSZWYgcHJvZmlsZUNsYXNzID0gSlND
bGFzc0NyZWF0ZSgmY2xhc3NEZWZpbml0aW9uKTsKLSAgICByZXR1cm4gcHJvZmlsZUNsYXNzOwot
fQotCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxlKiBwcm9maWxlKQotewot
ICAgIGlmICghcHJvZmlsZSkKLSAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotCi0gICAgSlNPYmpl
Y3QqIHByb2ZpbGVXcmFwcGVyID0gcHJvZmlsZUNhY2hlKCkuZ2V0KHByb2ZpbGUpOwotICAgIGlm
IChwcm9maWxlV3JhcHBlcikKLSAgICAgICAgcmV0dXJuIHByb2ZpbGVXcmFwcGVyOwotCi0gICAg
cHJvZmlsZS0+cmVmKCk7Ci0gICAgcHJvZmlsZVdyYXBwZXIgPSB0b0pTKEpTT2JqZWN0TWFrZSh0
b1JlZihleGVjKSwgUHJvZmlsZUNsYXNzKCksIHN0YXRpY19jYXN0PHZvaWQqPihwcm9maWxlKSkp
OwotICAgIHByb2ZpbGVDYWNoZSgpLnNldChwcm9maWxlLCBwcm9maWxlV3JhcHBlcik7Ci0gICAg
cmV0dXJuIHByb2ZpbGVXcmFwcGVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0UHJvZmlsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTAwODgxLi4wMDAw
MDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBKYXZhU2NyaXB0UHJvZmlsZV9oCi0jZGVmaW5lIEphdmFTY3Jp
cHRQcm9maWxlX2gKLQotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBVU0UoSlND
KQotCi0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotICAg
IGNsYXNzIEV4ZWNTdGF0ZTsKLSAgICBjbGFzcyBQcm9maWxlOwotfQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLSAgICBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
ZmlsZSopOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM4N2M4NS4u
MDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMjM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSmF2
YVNjcmlwdFByb2ZpbGVOb2RlLmgiCi0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikg
JiYgVVNFKEpTQykKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgPHByb2Zp
bGVyL1Byb2ZpbGVOb2RlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+Ci0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDb250ZXh0UmVmLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRh
aW5QdHIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+Ci0jaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLS8vIENhY2hlCi0KLXR5cGVkZWYgSGFzaE1hcDxQcm9maWxlTm9k
ZSosIEpTT2JqZWN0Kj4gUHJvZmlsZU5vZGVNYXA7Ci0KLXN0YXRpYyBQcm9maWxlTm9kZU1hcCYg
cHJvZmlsZU5vZGVDYWNoZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChQcm9maWxlTm9k
ZU1hcCwgc3RhdGljUHJvZmlsZU5vZGVzLCAoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY1Byb2ZpbGVO
b2RlczsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0RnVuY3Rpb25OYW1lKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikK
LXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9m
aWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVO
b2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gZnVuY3Rpb25OYW1lU3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhD
aGFyYWN0ZXJzKHByb2ZpbGVOb2RlLT5mdW5jdGlvbk5hbWUoKS5kYXRhKCksIHByb2ZpbGVOb2Rl
LT5mdW5jdGlvbk5hbWUoKS5zaXplKCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmco
Y3R4LCBmdW5jdGlvbk5hbWVTdHJpbmcuZ2V0KCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBn
ZXRVUkwoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdS
ZWYsIEpTVmFsdWVSZWYqKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgs
IHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3Rh
dGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwot
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB1cmxTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMocHJvZmlsZU5vZGUtPnVybCgpLmRhdGEoKSwgcHJvZmlsZU5vZGUt
PnVybCgpLnNpemUoKSkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjdHgsIHVybFN0
cmluZy5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldExpbmVOdW1iZXIoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVS
ZWYqKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3Qs
IFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJv
ZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBK
U1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2ZpbGVOb2RlLT5saW5lTnVtYmVyKCkpOwotfQotCi1z
dGF0aWMgSlNWYWx1ZVJlZiBnZXRUb3RhbFRpbWUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQotewotICAgIEpTQzo6SlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2Jq
ZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHBy
b2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2ZpbGVO
b2RlLT50b3RhbFRpbWUoKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldFNlbGZUaW1lKEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1Zh
bHVlUmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9m
aWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVO
b2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+c2VsZlRpbWUoKSk7Ci19Ci0KLXN0YXRpYyBK
U1ZhbHVlUmVmIGdldE51bWJlck9mQ2FsbHMoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQotewotICAgIEpTQzo6SlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0
T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2Zp
bGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjdHgsIHByb2ZpbGVOb2Rl
LT5udW1iZXJPZkNhbGxzKCkpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBnZXRDaGlsZHJlbihK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNP
YmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nh
c3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+ID4mIGNoaWxkcmVuID0gcHJvZmlsZU5vZGUt
PmNoaWxkcmVuKCk7Ci0KLSAgICBKU09iamVjdFJlZiBnbG9iYWwgPSBKU0NvbnRleHRHZXRHbG9i
YWxPYmplY3QoY3R4KTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhcnJheVN0cmlu
ZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFycmF5IikpOwotCi0gICAg
SlNWYWx1ZVJlZiBhcnJheVByb3BlcnR5ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjdHgsIGdsb2Jh
bCwgYXJyYXlTdHJpbmcuZ2V0KCksIGV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbiAmJiAq
ZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQot
ICAgIEpTT2JqZWN0UmVmIGFycmF5Q29uc3RydWN0b3IgPSBKU1ZhbHVlVG9PYmplY3QoY3R4LCBh
cnJheVByb3BlcnR5LCBleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlv
bikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBKU09i
amVjdFJlZiByZXN1bHQgPSBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yKGN0eCwgYXJyYXlDb25z
dHJ1Y3RvciwgMCwgMCwgZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRp
b24pCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHB1c2hTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJwdXNoIikpOwotCi0gICAgSlNWYWx1ZVJlZiBwdXNoUHJvcGVydHkgPSBK
U09iamVjdEdldFByb3BlcnR5KGN0eCwgcmVzdWx0LCBwdXNoU3RyaW5nLmdldCgpLCBleGNlcHRp
b24pOwotICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBKU09iamVjdFJlZiBwdXNoRnVuY3Rpb24g
PSBKU1ZhbHVlVG9PYmplY3QoY3R4LCBwdXNoUHJvcGVydHksIGV4Y2VwdGlvbik7Ci0gICAgaWYg
KGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY3R4KTsKLQotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBmb3Ig
KFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGRy
ZW4uYmVnaW4oKTsgaXQgIT0gY2hpbGRyZW4uZW5kKCk7ICsraXQpIHsKLSAgICAgICAgSlNWYWx1
ZVJlZiBhcmcwID0gdG9SZWYoZXhlYywgdG9KUyhleGVjLCAoKml0KS5nZXQoKSApKTsKLSAgICAg
ICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjdHgsIHB1c2hGdW5jdGlvbiwgcmVzdWx0LCAxLCAm
YXJnMCwgZXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0VmlzaWJsZShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1
ZVJlZiopCi17Ci0gICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwot
Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmls
ZU5vZGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7
Ci0KLSAgICBQcm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9k
ZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVN
YWtlQm9vbGVhbihjdHgsIHByb2ZpbGVOb2RlLT52aXNpYmxlKCkpOwotfQotCi1zdGF0aWMgSlNW
YWx1ZVJlZiBnZXRDYWxsVUlEKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3Mo
Y3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9
IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY3R4LCBwcm9maWxlTm9kZS0+Y2FsbElk
ZW50aWZpZXIoKS5oYXNoKCkpOwotfQotCi1zdGF0aWMgdm9pZCBmaW5hbGl6ZShKU09iamVjdFJl
ZiBvYmplY3QpCi17Ci0gICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8
UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7Ci0gICAgcHJvZmlsZU5v
ZGVDYWNoZSgpLnJlbW92ZShwcm9maWxlTm9kZSk7Ci0gICAgcHJvZmlsZU5vZGUtPmRlcmVmKCk7
Ci19Ci0KLUpTQ2xhc3NSZWYgUHJvZmlsZU5vZGVDbGFzcygpCi17Ci0gICAgc3RhdGljIEpTU3Rh
dGljVmFsdWUgc3RhdGljVmFsdWVzW10gPSB7Ci0gICAgICAgIHsgImZ1bmN0aW9uTmFtZSIsIGdl
dEZ1bmN0aW9uTmFtZSwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsg
InVybCIsIGdldFVSTCwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsg
ImxpbmVOdW1iZXIiLCBnZXRMaW5lTnVtYmVyLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUg
fSwKLSAgICAgICAgeyAidG90YWxUaW1lIiwgZ2V0VG90YWxUaW1lLCAwLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAic2VsZlRpbWUiLCBnZXRTZWxmVGltZSwgMCwga0pT
UHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgIm51bWJlck9mQ2FsbHMiLCBnZXRO
dW1iZXJPZkNhbGxzLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAi
Y2hpbGRyZW4iLCBnZXRDaGlsZHJlbiwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0g
ICAgICAgIHsgInZpc2libGUiLCBnZXRWaXNpYmxlLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5v
bmUgfSwKLSAgICAgICAgeyAiY2FsbFVJRCIsIGdldENhbGxVSUQsIDAsIGtKU1Byb3BlcnR5QXR0
cmlidXRlTm9uZSB9LAotICAgICAgICB7IDAsIDAsIDAsIDAgfQotICAgIH07Ci0KLSAgICBzdGF0
aWMgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZpbml0aW9uID0gewotICAgICAgICAwLCBrSlND
bGFzc0F0dHJpYnV0ZU5vbmUsICJQcm9maWxlTm9kZSIsIDAsIHN0YXRpY1ZhbHVlcywgMCwKLSAg
ICAgICAgMCwgZmluYWxpemUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKLSAgICB9OwotCi0g
ICAgc3RhdGljIEpTQ2xhc3NSZWYgcHJvZmlsZU5vZGVDbGFzcyA9IEpTQ2xhc3NDcmVhdGUoJmNs
YXNzRGVmaW5pdGlvbik7Ci0gICAgcmV0dXJuIHByb2ZpbGVOb2RlQ2xhc3M7Ci19Ci0KLUpTVmFs
dWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSkKLXsKLSAg
ICBpZiAoIXByb2ZpbGVOb2RlKQotICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0KLSAgICBKU09i
amVjdCogcHJvZmlsZU5vZGVXcmFwcGVyID0gcHJvZmlsZU5vZGVDYWNoZSgpLmdldChwcm9maWxl
Tm9kZSk7Ci0gICAgaWYgKHByb2ZpbGVOb2RlV3JhcHBlcikKLSAgICAgICAgcmV0dXJuIHByb2Zp
bGVOb2RlV3JhcHBlcjsKLQotICAgIHByb2ZpbGVOb2RlLT5yZWYoKTsKLQotICAgIHByb2ZpbGVO
b2RlV3JhcHBlciA9IHRvSlMoSlNPYmplY3RNYWtlKHRvUmVmKGV4ZWMpLCBQcm9maWxlTm9kZUNs
YXNzKCksIHN0YXRpY19jYXN0PHZvaWQqPihwcm9maWxlTm9kZSkpKTsKLSAgICBwcm9maWxlTm9k
ZUNhY2hlKCkuc2V0KHByb2ZpbGVOb2RlLCBwcm9maWxlTm9kZVdyYXBwZXIpOwotICAgIHJldHVy
biBwcm9maWxlTm9kZVdyYXBwZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9KYXZh
U2NyaXB0UHJvZmlsZU5vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY4NWFj
Ni4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEphdmFTY3JpcHRQcm9maWxlTm9kZV9oCi0j
ZGVmaW5lIEphdmFTY3JpcHRQcm9maWxlTm9kZV9oCi0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikgJiYgVVNFKEpTQykKLQotI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLSAgICBj
bGFzcyBFeGVjU3RhdGU7Ci0gICAgY2xhc3MgUHJvZmlsZU5vZGU7Ci19Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotICAgIEpTQ2xhc3NSZWYgUHJvZmlsZU5vZGVDbGFzcygpOwotICAgIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9maWxlTm9kZSopOwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKLQotI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>