<?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>75753</bug_id>
          
          <creation_ts>2012-01-06 15:38:16 -0800</creation_ts>
          <short_desc>Update ANGLE in WebKit tree</short_desc>
          <delta_ts>2012-01-06 17:40:35 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531460</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2012-01-06 15:38:16 -0800</bug_when>
    <thetext>The version of ANGLE in the WebKit tree is ancient. It needs to be updated to get latest security and bug fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531461</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2012-01-06 15:38:38 -0800</bug_when>
    <thetext>In radar: rdar://problem/9969659</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531463</commentid>
    <comment_count>2</comment_count>
      <attachid>121512</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2012-01-06 15:40:15 -0800</bug_when>
    <thetext>Created attachment 121512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531543</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2012-01-06 17:40:35 -0800</bug_when>
    <thetext>Committed r104363: &lt;http://trac.webkit.org/changeset/104363&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121512</attachid>
            <date>2012-01-06 15:40:15 -0800</date>
            <delta_ts>2012-01-06 15:48:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75753-20120106154014.patch</filename>
            <type>text/plain</type>
            <size>931809</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggZWMxMTcxNTc5Njc4OTY3MWVkMjBiZmJlZDQ4OWE2NWMxMWM5OTE3NC4uNmU0ZTQ4ODE2OGFi
NjNjZjNlNmY5YjU5NmExNGQ4MGY1OGRjNGZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU1NSBAQAorMjAxMi0wMS0wNiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIGluIFdlYktpdCB0cmVlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc1MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgQU5HTEUgdG8g
cjkzOQorCisgICAgICAgICogQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBpbmNsdWRlL0VHTC9lZ2xleHQuaDoKKyAgICAgICAgKiBpbmNsdWRlL0VHTC9lZ2xwbGF0
Zm9ybS5oOgorICAgICAgICAqIGluY2x1ZGUvR0xFUzIvZ2wyZXh0Lmg6CisgICAgICAgICogaW5j
bHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaDoKKyAgICAgICAgKiBzcmMvY29tbW9uL2RlYnVnLmNw
cDoKKyAgICAgICAgKGdsOjpvdXRwdXQpOgorICAgICAgICAoZ2w6OnRyYWNlKToKKyAgICAgICAg
KGdsOjpwZXJmQWN0aXZlKToKKyAgICAgICAgKGdsOjpTY29wZWRQZXJmRXZlbnRIZWxwZXI6OlNj
b3BlZFBlcmZFdmVudEhlbHBlcik6CisgICAgICAgIChnbDo6U2NvcGVkUGVyZkV2ZW50SGVscGVy
Ojp+U2NvcGVkUGVyZkV2ZW50SGVscGVyKToKKyAgICAgICAgKiBzcmMvY29tbW9uL3ZlcnNpb24u
aDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQmFzZVR5cGVzLmg6CisgICAgICAgIChnZXRCYXNp
Y1N0cmluZyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
LmNwcDogQWRkZWQuCisgICAgICAgIChCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6QnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3IpOgorICAgICAgICAoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OlNldEZ1
bmN0aW9uQ2FsbGVkKToKKyAgICAgICAgKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpPdXRwdXRF
bXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik6CisgICAgICAgIChCdWlsdEluRnVuY3Rpb25FbXVs
YXRvcjo6SWRlbnRpZnlGdW5jdGlvbik6CisgICAgICAgIChCdWlsdEluRnVuY3Rpb25FbXVsYXRv
cjo6TWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRpb24pOgorICAgICAgICAoQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3I6OkNsZWFudXApOgorICAgICAgICAoQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3I6OkdldEVtdWxhdGVkRnVuY3Rpb25OYW1lKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL0Nv
bXBpbGVyLmNwcDoKKyAgICAgICAgKFRDb21waWxlcjo6VENvbXBpbGVyKToKKyAgICAgICAgKFRD
b21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChUQ29tcGlsZXI6OmNsZWFyUmVzdWx0cyk6Cisg
ICAgICAgIChUQ29tcGlsZXI6OmRldGVjdFJlY3Vyc2lvbik6CisgICAgICAgIChUQ29tcGlsZXI6
OmdldE1hcHBlZE5hbWVNYXhMZW5ndGgpOgorICAgICAgICAoVENvbXBpbGVyOjpnZXRCdWlsdElu
RnVuY3Rpb25FbXVsYXRvcik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6OkZ1
bmN0aW9uTm9kZSk6CisgICAgICAgIChEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6Z2V0
TmFtZSk6CisgICAgICAgIChEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6YWRkQ2FsbGVl
KToKKyAgICAgICAgKERldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjpkZXRlY3RSZWN1cnNp
b24pOgorICAgICAgICAoRGV0ZWN0UmVjdXJzaW9uOjpEZXRlY3RSZWN1cnNpb24pOgorICAgICAg
ICAoRGV0ZWN0UmVjdXJzaW9uOjp+RGV0ZWN0UmVjdXJzaW9uKToKKyAgICAgICAgKERldGVjdFJl
Y3Vyc2lvbjo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoRGV0ZWN0UmVjdXJzaW9uOjpkZXRl
Y3RSZWN1cnNpb24pOgorICAgICAgICAoRGV0ZWN0UmVjdXJzaW9uOjpmaW5kRnVuY3Rpb25CeU5h
bWUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaDogQWRkZWQuCisg
ICAgICAgICogc3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmg6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwOgorICAgICAgICAoRm9yTG9vcFVucm9sbDo6TWFy
a0Zvckxvb3BzV2l0aEludGVnZXJJbmRpY2VzRm9yVW5yb2xsaW5nKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvRm9yTG9vcFVucm9sbC5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFs
aXplLmNwcDoKKyAgICAgICAgKEJ1aWx0SW5GdW5jdGlvbnNDb21tb24pOgorICAgICAgICAoQnVp
bHRJbkZ1bmN0aW9uc1ZlcnRleCk6CisgICAgICAgIChCdWlsdEluRnVuY3Rpb25zRnJhZ21lbnQp
OgorICAgICAgICAoVEJ1aWx0SW5zOjppbml0aWFsaXplKToKKyAgICAgICAgKElkZW50aWZ5QnVp
bHRJbnMpOgorICAgICAgICAoSW5pdEV4dGVuc2lvbkJlaGF2aW9yKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwOgorICAgICAgICAoTWFwTG9uZ1Zhcmlh
YmxlTmFtZXM6Ok1hcExvbmdWYXJpYWJsZU5hbWVzKToKKyAgICAgICAgKE1hcExvbmdWYXJpYWJs
ZU5hbWVzOjp2aXNpdFN5bWJvbCk6CisgICAgICAgIChNYXBMb25nVmFyaWFibGVOYW1lczo6bWFw
VmFyeWluZ0xvbmdOYW1lKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxl
TmFtZXMuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwOgorICAg
ICAgICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdFVuYXJ5KToKKyAgICAgICAgKFRPdXRwdXRHTFNM
QmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNM
LmNwcDoKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpPdXRwdXRITFNMKToKKyAgICAgICAgKHNo
OjpPdXRwdXRITFNMOjpoZWFkZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0U3lt
Ym9sKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAg
IChzaDo6T3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoc2g6Ok91dHB1dEhM
U0w6OnZpc2l0TG9vcCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZl
TG9vcCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IpOgorICAgICAg
ICAoc2g6Ok91dHB1dEhMU0w6OmRlY29yYXRlKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpk
ZWNvcmF0ZVVuaWZvcm0pOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmg6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcDoKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OnJlY292ZXIpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNo
ZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6OnN1cHBvcnRzRXh0ZW5zaW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OmVudGVyU3RydWN0RGVjbGFyYXRpb24pOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZXhpdFN0
cnVjdERlY2xhcmF0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdF
cnJvckNoZWNrKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaDoKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OlRQYXJzZUNvbnRleHQpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9Qb29sQWxsb2MuaDoKKyAgICAgICAgKHBvb2xfYWxsb2NhdG9yOjpwb29sX2FsbG9jYXRvcik6
CisgICAgICAgIChwb29sX2FsbG9jYXRvcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKHBvb2xfYWxs
b2NhdG9yOjpzZXRBbGxvY2F0b3IpOgorICAgICAgICAocG9vbF9hbGxvY2F0b3I6OmdldEFsbG9j
YXRvcik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmg6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwOgorICAgICAgICAoY2hlY2tBY3RpdmVVbmlmb3JtQW5k
QXR0cmliTWF4TGVuZ3Rocyk6CisgICAgICAgIChjaGVja01hcHBlZE5hbWVNYXhMZW5ndGgpOgor
ICAgICAgICAoZ2V0VmFyaWFibGVJbmZvKToKKyAgICAgICAgKFNoSW5pdEJ1aWx0SW5SZXNvdXJj
ZXMpOgorICAgICAgICAoU2hHZXRJbmZvKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU3ltYm9s
VGFibGUuY3BwOgorICAgICAgICAoVFR5cGU6OmNvbXB1dGVEZWVwZXN0U3RydWN0TmVzdGluZyk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmNwcDoKKyAgICAgICAgKFRy
YW5zbGF0b3JFU1NMOjp0cmFuc2xhdGUpOgorICAgICAgICAoVHJhbnNsYXRvckVTU0w6OndyaXRl
RXh0ZW5zaW9uQmVoYXZpb3IpOgorICAgICAgICAqIHNyYy9jb21waWxlci9UcmFuc2xhdG9yR0xT
TC5jcHA6CisgICAgICAgIChUcmFuc2xhdG9yR0xTTDo6dHJhbnNsYXRlKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvVHlwZXMuaDoKKyAgICAgICAgKFRUeXBlOjpUVHlwZSk6CisgICAgICAgIChU
VHlwZTo6Y29weVR5cGUpOgorICAgICAgICAoVFR5cGU6OnNldFN0cnVjdCk6CisgICAgICAgIChU
VHlwZTo6Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcpOgorICAgICAgICAqIHNyYy9jb21waWxlci9V
bmZvbGRTZWxlY3QuY3BwOgorICAgICAgICAoc2g6OlVuZm9sZFNlbGVjdDo6dHJhdmVyc2UpOgor
ICAgICAgICAoc2g6OlVuZm9sZFNlbGVjdDo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoc2g6
OlVuZm9sZFNlbGVjdDo6dmlzaXRMb29wKToKKyAgICAgICAgKHNoOjpVbmZvbGRTZWxlY3Q6Omdl
dE5leHRUZW1wb3JhcnlJbmRleCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1VuZm9sZFNlbGVj
dC5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcDoKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5oOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwOgorICAgICAgICAoZ2V0VmFyaWFibGVEYXRhVHlw
ZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dlbmVyYXRlX2dsc2xhbmdfbGV4ZXIuc2g6IFJl
bW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL2dlbmVyYXRlX2dsc2xhbmdfcGFyc2VyLnNo
OiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9nZW5lcmF0ZV9wYXJzZXIuc2g6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nLmw6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL2dsc2xhbmcueToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3Bw
OgorICAgICAgICAoeXlfZ2V0X3ByZXZpb3VzX3N0YXRlKToKKyAgICAgICAgKHl5X3RyeV9OVUxf
dHJhbnMpOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHA6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2lu
dGVybU91dC5jcHA6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oOgorICAgICAgICAoVEludGVy
bVVuYXJ5OjpUSW50ZXJtVW5hcnkpOgorICAgICAgICAoVEludGVybVVuYXJ5OjpzZXRVc2VFbXVs
YXRlZEZ1bmN0aW9uKToKKyAgICAgICAgKFRJbnRlcm1VbmFyeTo6Z2V0VXNlRW11bGF0ZWRGdW5j
dGlvbik6CisgICAgICAgIChUSW50ZXJtQWdncmVnYXRlOjpUSW50ZXJtQWdncmVnYXRlKToKKyAg
ICAgICAgKFRJbnRlcm1BZ2dyZWdhdGU6OnNldFVzZUVtdWxhdGVkRnVuY3Rpb24pOgorICAgICAg
ICAoVEludGVybUFnZ3JlZ2F0ZTo6Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbik6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL29zaW5jbHVkZS5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9vc3NvdXJj
ZV9wb3NpeC5jcHA6CisgICAgICAgIChPU19BbGxvY1RMU0luZGV4KToKKyAgICAgICAgKE9TX1Nl
dFRMU1ZhbHVlKToKKyAgICAgICAgKE9TX0ZyZWVUTFNJbmRleCk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9hdG9tLmM6CisgICAgICAgIChHcm93QXRvbVRhYmxlKToKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2xlbmd0aF9saW1pdHMuaDogQWRkZWQu
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zY2FubmVyLmg6CisgICAgICAg
ICogc3JjL2xpYkVHTC9EaXNwbGF5LmNwcDoKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6Z2V0RGlz
cGxheSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OkRpc3BsYXkpOgorICAgICAgICAoZWdsOjpE
aXNwbGF5Ojp+RGlzcGxheSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmluaXRpYWxpemUpOgor
ICAgICAgICAoZWdsOjpEaXNwbGF5Ojp0ZXJtaW5hdGUpOgorICAgICAgICAoZWdsOjpEaXNwbGF5
OjpzdGFydFNjZW5lKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6ZW5kU2NlbmUpOgorICAgICAg
ICAoZWdsOjpEaXNwbGF5OjpjcmVhdGVEZXZpY2UpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojpp
bml0aWFsaXplRGV2aWNlKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6cmVzZXREZXZpY2UpOgor
ICAgICAgICAoZWdsOjpEaXNwbGF5OjpjcmVhdGVXaW5kb3dTdXJmYWNlKToKKyAgICAgICAgKGVn
bDo6RGlzcGxheTo6Y3JlYXRlT2Zmc2NyZWVuU3VyZmFjZSk6CisgICAgICAgIChlZ2w6OkRpc3Bs
YXk6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpyZXN0b3JlTG9zdERl
dmljZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6Om5vdGlmeURldmljZUxvc3QpOgorICAgICAg
ICAoZWdsOjpEaXNwbGF5Ojppc0RldmljZUxvc3QpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojp0
ZXN0RGV2aWNlTG9zdCk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OnRlc3REZXZpY2VSZXNldHRh
YmxlKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6Z2V0RFhUMVRleHR1cmVTdXBwb3J0KToKKyAg
ICAgICAgKGVnbDo6RGlzcGxheTo6Z2V0RFhUM1RleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKGVn
bDo6RGlzcGxheTo6Z2V0RFhUNVRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKGVnbDo6RGlzcGxh
eTo6Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6Z2V0
RmxvYXQxNlRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6Z2V0VGV4dHVy
ZVBvb2wpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojppbml0RXh0ZW5zaW9uU3RyaW5nKToKKyAg
ICAgICAgKiBzcmMvbGliRUdML0Rpc3BsYXkuaDoKKyAgICAgICAgKiBzcmMvbGliRUdML1N1cmZh
Y2UuY3BwOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpTdXJmYWNlKToKKyAgICAgICAgKGVnbDo6
U3VyZmFjZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnJlc2V0U3dhcENo
YWluKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6c3ViY2xhc3NXaW5kb3cpOgorICAgICAgICAo
ZWdsOjpTdXJmYWNlOjp1bnN1YmNsYXNzV2luZG93KToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6
c3dhcCk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnBvc3RTdWJCdWZmZXIpOgorICAgICAgICAo
ZWdsOjpTdXJmYWNlOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQpOgorICAgICAgICAqIHNyYy9s
aWJFR0wvU3VyZmFjZS5oOgorICAgICAgICAqIHNyYy9saWJFR0wvbGliRUdMLmNwcDoKKyAgICAg
ICAgKiBzcmMvbGliRUdML2xpYkVHTC5yYzoKKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC52
Y3Byb2o6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3BwOgorICAgICAgICAoZ2w6
OkJ1ZmZlcjo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Db250ZXh0
LmNwcDoKKyAgICAgICAgKGdsOjpDb250ZXh0OjpDb250ZXh0KToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjptYWtlQ3VycmVudCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6bWFya0FsbFN0YXRlRGly
dHkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6Om1hcmtDb250ZXh0TG9zdCk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6aXNDb250ZXh0TG9zdCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0UGFj
a1JldmVyc2VSb3dPcmRlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UGFja1JldmVyc2VS
b3dPcmRlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6Z2V0RHJhd0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpiaW5kRHJhd0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojp1c2VQcm9ncmFt
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRGcmFtZWJ1ZmZlclplcm8pOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmdldEN1cnJlbnRQcm9ncmFtKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpn
ZXRCb29sZWFudik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0SW50ZWdlcnYpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVySW5mbyk6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6YXBwbHlSZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5U3Rh
dGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5VmVydGV4QnVmZmVyKToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjphcHBseUluZGV4QnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojph
cHBseVNoYWRlcnMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5VGV4dHVyZXMpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OnJlYWRQaXhlbHMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmNs
ZWFyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN5bmMpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OmRyYXdDbG9zaW5nTGluZSk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6Z2V0UmVzZXRTdGF0dXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzUmVzZXROb3RpZmlj
YXRpb25FbmFibGVkKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0RYVDFUZXh0dXJl
cyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNEWFQzVGV4dHVyZXMpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzRFhUNVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjpzdXBwb3J0c0Zsb2F0MzJUZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3Vw
cG9ydHNGbG9hdDMyTGluZWFyRmlsdGVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0
c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBv
cnRzRmxvYXQxNlRleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0Zsb2F0
MTZMaW5lYXJGaWx0ZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzRmxvYXQxNlJl
bmRlcmFibGVUZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aW5pdEV4dGVuc2lvblN0
cmluZyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aW5pdFJlbmRlcmVyU3RyaW5nKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpnZXRSZW5kZXJlclN0cmluZyk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hl
OjphcHBseURlY2xhcmF0aW9uKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hl
OjptYXJrU3RhdGVEaXJ0eSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Db250ZXh0Lmg6Cisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9GZW5jZS5jcHA6CisgICAgICAgIChnbDo6RmVuY2U6OnRl
c3RGZW5jZSk6CisgICAgICAgIChnbDo6RmVuY2U6OmdldEZlbmNlaXYpOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpz
ZXRDb2xvcmJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OnNldERlcHRoYnVmZmVy
KToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6c2V0U3RlbmNpbGJ1ZmZlcik6CisgICAgICAg
IChnbDo6RnJhbWVidWZmZXI6OmdldENvbG9yYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1
ZmZlcjo6Z2V0RGVwdGhidWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRTdGVu
Y2lsYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6aGFzU3RlbmNpbCk6CisgICAg
ICAgIChnbDo6RnJhbWVidWZmZXI6OmNvbXBsZXRlbmVzcyk6CisgICAgICAgIChnbDo6RGVmYXVs
dEZyYW1lYnVmZmVyOjpEZWZhdWx0RnJhbWVidWZmZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvRnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0luZGV4RGF0YU1hbmFn
ZXIuY3BwOgorICAgICAgICAoZ2w6OkluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdGEp
OgorICAgICAgICAoZ2w6OkluZGV4QnVmZmVyOjpJbmRleEJ1ZmZlcik6CisgICAgICAgIChnbDo6
SW5kZXhCdWZmZXI6OmdldFNlcmlhbCk6CisgICAgICAgIChnbDo6SW5kZXhCdWZmZXI6Omlzc3Vl
U2VyaWFsKToKKyAgICAgICAgKGdsOjpTdHJlYW1pbmdJbmRleEJ1ZmZlcjo6cmVzZXJ2ZVNwYWNl
KToKKyAgICAgICAgKGdsOjpTdGF0aWNJbmRleEJ1ZmZlcjo6cmVzZXJ2ZVNwYWNlKToKKyAgICAg
ICAgKGdsOjpTdGF0aWNJbmRleEJ1ZmZlcjo6bG9va3VwUmFuZ2UpOgorICAgICAgICAoZ2w6OlN0
YXRpY0luZGV4QnVmZmVyOjphZGRSYW5nZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9JbmRl
eERhdGFNYW5hZ2VyLmg6CisgICAgICAgIChnbDo6U3RhdGljSW5kZXhCdWZmZXI6OkluZGV4UmFu
Z2U6Om9wZXJhdG9yPCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmNwcDoKKyAg
ICAgICAgKGdsOjpVbmlmb3JtOjpVbmlmb3JtKToKKyAgICAgICAgKGdsOjpVbmlmb3JtOjppc0Fy
cmF5KToKKyAgICAgICAgKGdsOjpVbmlmb3JtTG9jYXRpb246OlVuaWZvcm1Mb2NhdGlvbik6Cisg
ICAgICAgIChnbDo6UHJvZ3JhbTo6UHJvZ3JhbSk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6ZGV0
YWNoU2hhZGVyKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRVc2VkU2FtcGxlclJhbmdlKToK
KyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRTYW1wbGVyTWFwcGluZyk6CisgICAgICAgIChnbDo6
UHJvZ3JhbTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpzZXRV
bmlmb3JtMWZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpzZXRVbmlmb3JtMmZ2KToKKyAgICAg
ICAgKGdsOjpQcm9ncmFtOjpzZXRVbmlmb3JtM2Z2KToKKyAgICAgICAgKGdsOjp0cmFuc3Bvc2VN
YXRyaXgpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm1NYXRyaXgyZnYpOgorICAg
ICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoZ2w6OlBy
b2dyYW06OnNldFVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldFVu
aWZvcm1mdik6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAg
KGdsOjpQcm9ncmFtOjphcHBseVVuaWZvcm1zKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpjb21w
aWxlVG9CaW5hcnkpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmxpbmtWYXJ5aW5ncyk6CisgICAg
ICAgIChnbDo6UHJvZ3JhbTo6bGluayk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6ZGVmaW5lVW5p
Zm9ybSk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Y3JlYXRlVW5pZm9ybSk6CisgICAgICAgIChn
bDo6UHJvZ3JhbTo6ZGVjb3JhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnVu
ZGVjb3JhdGVVbmlmb3JtKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjphcHBseVVuaWZvcm1uYnYp
OgorICAgICAgICAoZ2w6OlByb2dyYW06OmFwcGx5VW5pZm9ybW5mdik6CisgICAgICAgIChnbDo6
UHJvZ3JhbTo6YXBwbHlVbmlmb3JtMWl2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjphcHBseVVu
aWZvcm0yaXYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmFwcGx5VW5pZm9ybTNpdik6CisgICAg
ICAgIChnbDo6UHJvZ3JhbTo6YXBwbHlVbmlmb3JtNGl2KToKKyAgICAgICAgKGdsOjpQcm9ncmFt
OjphcHBseVVuaWZvcm1uaXYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmFwcGVuZFRvSW5mb0xv
Z1Nhbml0aXplZCk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6dW5saW5rKToKKyAgICAgICAgKGds
OjpQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRB
Y3RpdmVVbmlmb3JtQ291bnQpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldEFjdGl2ZVVuaWZv
cm1NYXhMZW5ndGgpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnZhbGlkYXRlU2FtcGxlcnMpOgor
ICAgICAgICAoZ2w6OlByb2dyYW06OmluaXRpYWxpemVDb25zdGFudEhhbmRsZXMpOgorICAgICAg
ICAoZ2w6OlByb2dyYW06OmdldER4Q29vcmRMb2NhdGlvbik6CisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9Qcm9ncmFtLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuY3Bw
OgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6UmVuZGVyYnVmZmVySW50ZXJm
YWNlKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldFJlZFNpemUpOgor
ICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0R3JlZW5TaXplKToKKyAgICAg
ICAgKGdsOjpSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldEJsdWVTaXplKToKKyAgICAgICAgKGds
OjpSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldEFscGhhU2l6ZSk6CisgICAgICAgIChnbDo6UmVu
ZGVyYnVmZmVySW50ZXJmYWNlOjpnZXREZXB0aFNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlckludGVyZmFjZTo6Z2V0U3RlbmNpbFNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZl
clRleHR1cmU6OlJlbmRlcmJ1ZmZlclRleHR1cmUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZl
clRleHR1cmU6On5SZW5kZXJidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZm
ZXJUZXh0dXJlOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRl
eHR1cmU6OmdldERlcHRoU3RlbmNpbCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVy
ZTo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmU6OmdldEhlaWdo
dCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTo6Z2V0SW50ZXJuYWxGb3JtYXQp
OgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmU6OmdldEQzREZvcm1hdCk6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTo6Z2V0U2FtcGxlcyk6CisgICAgICAgIChnbDo6
UmVuZGVyYnVmZmVyVGV4dHVyZTo6Z2V0U2VyaWFsKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZm
ZXI6OlJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjp+UmVuZGVyYnVm
ZmVyKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFJlbmRlclRhcmdldCk6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXREZXB0aFN0ZW5jaWwpOgorICAgICAgICAoZ2w6OlJl
bmRlcmJ1ZmZlcjo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0SGVp
Z2h0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldEludGVybmFsRm9ybWF0KToKKyAg
ICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldEQzREZvcm1hdCk6CisgICAgICAgIChnbDo6UmVu
ZGVyYnVmZmVyOjpnZXRSZWRTaXplKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldEdy
ZWVuU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRCbHVlU2l6ZSk6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRBbHBoYVNpemUpOgorICAgICAgICAoZ2w6OlJlbmRl
cmJ1ZmZlcjo6Z2V0RGVwdGhTaXplKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFN0
ZW5jaWxTaXplKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFNhbXBsZXMpOgorICAg
ICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0U2VyaWFsKToKKyAgICAgICAgKGdsOjpSZW5kZXJi
dWZmZXI6OnNldFN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6Omdl
dEQzREZvcm1hdCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVDdWJl
U2VyaWFscyk6CisgICAgICAgIChnbDo6Q29sb3JidWZmZXI6OkNvbG9yYnVmZmVyKToKKyAgICAg
ICAgKGdsOjpDb2xvcmJ1ZmZlcjo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpEZXB0
aGJ1ZmZlcjo6RGVwdGhidWZmZXIpOgorICAgICAgICAoZ2w6OlN0ZW5jaWxidWZmZXI6OlN0ZW5j
aWxidWZmZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmg6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVySW50ZXJmYWNlOjp+UmVuZGVyYnVmZmVySW50ZXJmYWNlKToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1NoYWRlci5jcHA6CisgICAgICAgIChnbDo6U2hhZGVy
OjpnZXRUcmFuc2xhdGVkU291cmNlTGVuZ3RoKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldFNv
dXJjZUltcGwpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6Z2V0U291cmNlKToKKyAgICAgICAgKGds
OjpTaGFkZXI6OmdldFRyYW5zbGF0ZWRTb3VyY2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
U2hhZGVyLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcDoKKyAgICAgICAg
KGdsOjpDb252ZXJ0VGV4dHVyZUZvcm1hdFR5cGUpOgorICAgICAgICAoZ2w6OklzVGV4dHVyZUZv
cm1hdFJlbmRlcmFibGUpOgorICAgICAgICAoZ2w6OkltYWdlOjpJbWFnZSk6CisgICAgICAgIChn
bDo6SW1hZ2U6On5JbWFnZSk6CisgICAgICAgIChnbDo6SW1hZ2U6OnJlZGVmaW5lKToKKyAgICAg
ICAgKGdsOjpJbWFnZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgIChnbDo6SW1hZ2U6OmxvY2sp
OgorICAgICAgICAoZ2w6OkltYWdlOjp1bmxvY2spOgorICAgICAgICAoZ2w6OkltYWdlOjppc1Jl
bmRlcmFibGVGb3JtYXQpOgorICAgICAgICAoZ2w6OkltYWdlOjpnZXREM0RGb3JtYXQpOgorICAg
ICAgICAoZ2w6OkltYWdlOjpnZXRTdXJmYWNlKToKKyAgICAgICAgKGdsOjpJbWFnZTo6c2V0TWFu
YWdlZFN1cmZhY2UpOgorICAgICAgICAoZ2w6OkltYWdlOjp1cGRhdGVTdXJmYWNlKToKKyAgICAg
ICAgKGdsOjpJbWFnZTo6bG9hZERhdGEpOgorICAgICAgICAoZ2w6OkltYWdlOjpsb2FkQWxwaGFE
YXRhKToKKyAgICAgICAgKGdsOjpJbWFnZTo6bG9hZEFscGhhRmxvYXREYXRhKToKKyAgICAgICAg
KGdsOjpJbWFnZTo6bG9hZEFscGhhSGFsZkZsb2F0RGF0YSk6CisgICAgICAgIChnbDo6SW1hZ2U6
OmxvYWRMdW1pbmFuY2VEYXRhKToKKyAgICAgICAgKGdsOjpJbWFnZTo6bG9hZEx1bWluYW5jZUZs
b2F0RGF0YSk6CisgICAgICAgIChnbDo6SW1hZ2U6OmxvYWRMdW1pbmFuY2VIYWxmRmxvYXREYXRh
KToKKyAgICAgICAgKGdsOjpJbWFnZTo6bG9hZEx1bWluYW5jZUFscGhhRGF0YSk6CisgICAgICAg
IChnbDo6SW1hZ2U6OmxvYWRMdW1pbmFuY2VBbHBoYUZsb2F0RGF0YSk6CisgICAgICAgIChnbDo6
SW1hZ2U6OmxvYWRMdW1pbmFuY2VBbHBoYUhhbGZGbG9hdERhdGEpOgorICAgICAgICAoZ2w6Oklt
YWdlOjpsb2FkUkdCVUJ5dGVEYXRhKToKKyAgICAgICAgKGdsOjpJbWFnZTo6bG9hZFJHQjU2NURh
dGEpOgorICAgICAgICAoZ2w6OkltYWdlOjpsb2FkUkdCRmxvYXREYXRhKToKKyAgICAgICAgKGds
OjpJbWFnZTo6bG9hZFJHQkhhbGZGbG9hdERhdGEpOgorICAgICAgICAoZ2w6OkltYWdlOjpsb2Fk
UkdCQVVCeXRlRGF0YVNTRTIpOgorICAgICAgICAoZ2w6OkltYWdlOjpsb2FkUkdCQVVCeXRlRGF0
YSk6CisgICAgICAgIChnbDo6SW1hZ2U6OmxvYWRSR0JBNDQ0NERhdGEpOgorICAgICAgICAoZ2w6
OkltYWdlOjpsb2FkUkdCQTU1NTFEYXRhKToKKyAgICAgICAgKGdsOjpJbWFnZTo6bG9hZFJHQkFG
bG9hdERhdGEpOgorICAgICAgICAoZ2w6OkltYWdlOjpsb2FkUkdCQUhhbGZGbG9hdERhdGEpOgor
ICAgICAgICAoZ2w6OkltYWdlOjpsb2FkQkdSQURhdGEpOgorICAgICAgICAoZ2w6OkltYWdlOjps
b2FkQ29tcHJlc3NlZERhdGEpOgorICAgICAgICAoZ2w6OkZsaXBDb3B5RFhUMUJsb2NrRnVsbCk6
CisgICAgICAgIChnbDo6RmxpcENvcHlEWFQxQmxvY2tIYWxmKToKKyAgICAgICAgKGdsOjpGbGlw
Q29weURYVDNCbG9ja0Z1bGwpOgorICAgICAgICAoZ2w6OkZsaXBDb3B5RFhUM0Jsb2NrSGFsZik6
CisgICAgICAgIChnbDo6RmxpcENvcHlEWFQ1QmxvY2tGdWxsKToKKyAgICAgICAgKGdsOjpGbGlw
Q29weURYVDVCbG9ja0hhbGYpOgorICAgICAgICAoZ2w6OkltYWdlOjpsb2FkRFhUMURhdGEpOgor
ICAgICAgICAoZ2w6OkltYWdlOjpsb2FkRFhUM0RhdGEpOgorICAgICAgICAoZ2w6OkltYWdlOjps
b2FkRFhUNURhdGEpOgorICAgICAgICAoZ2w6OkltYWdlOjpjb3B5KToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlU3RvcmFnZTo6VGV4dHVyZVN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVTdG9y
YWdlOjp+VGV4dHVyZVN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVTdG9yYWdlOjppc1Jl
bmRlclRhcmdldCk6CisgICAgICAgIChnbDo6VGV4dHVyZVN0b3JhZ2U6OmlzTWFuYWdlZCk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZVN0b3JhZ2U6OmdldFBvb2wpOgorICAgICAgICAoZ2w6OlRleHR1
cmVTdG9yYWdlOjpnZXRUZXh0dXJlU2VyaWFsKToKKyAgICAgICAgKGdsOjpUZXh0dXJlU3RvcmFn
ZTo6aXNzdWVUZXh0dXJlU2VyaWFsKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpUZXh0dXJlKToK
KyAgICAgICAgKGdsOjpUZXh0dXJlOjp+VGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6
c2V0TWluRmlsdGVyKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpzZXRNYWdGaWx0ZXIpOgorICAg
ICAgICAoZ2w6OlRleHR1cmU6OnNldFdyYXBTKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpzZXRX
cmFwVCk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c2V0VXNhZ2UpOgorICAgICAgICAoZ2w6OlRl
eHR1cmU6OmdldE1pbkZpbHRlcik6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Z2V0TWFnRmlsdGVy
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRXcmFwUyk6CisgICAgICAgIChnbDo6VGV4dHVy
ZTo6Z2V0V3JhcFQpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldFVzYWdlKToKKyAgICAgICAg
KGdsOjpUZXh0dXJlOjpzZXRJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c2V0Q29tcHJl
c3NlZEltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpzdWJJbWFnZSk6CisgICAgICAgIChn
bDo6VGV4dHVyZTo6c3ViSW1hZ2VDb21wcmVzc2VkKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpn
ZXRUZXh0dXJlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpoYXNEaXJ0eVBhcmFtZXRlcnMpOgor
ICAgICAgICAoZ2w6OlRleHR1cmU6Omhhc0RpcnR5SW1hZ2VzKToKKyAgICAgICAgKGdsOjpUZXh0
dXJlOjpyZXNldERpcnR5KToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRUZXh0dXJlU2VyaWFs
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRSZW5kZXJUYXJnZXRTZXJpYWwpOgorICAgICAg
ICAoZ2w6OlRleHR1cmU6OmlzSW1tdXRhYmxlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpjcmVh
dGlvbkxldmVscyk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Z2V0QmxpdHRlcik6CisgICAgICAg
IChnbDo6VGV4dHVyZTo6Y29weVRvUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJl
U3RvcmFnZTJEOjpUZXh0dXJlU3RvcmFnZTJEKToKKyAgICAgICAgKGdsOjpUZXh0dXJlU3RvcmFn
ZTJEOjp+VGV4dHVyZVN0b3JhZ2UyRCk6CisgICAgICAgIChnbDo6VGV4dHVyZVN0b3JhZ2UyRDo6
Z2V0U3VyZmFjZUxldmVsKToKKyAgICAgICAgKGdsOjpUZXh0dXJlU3RvcmFnZTJEOjpnZXRCYXNl
VGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4dHVyZVN0b3JhZ2UyRDo6Z2V0UmVuZGVyVGFyZ2V0
U2VyaWFsKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OlRleHR1cmUyRCk6CisgICAgICAgIChn
bDo6VGV4dHVyZTJEOjp+VGV4dHVyZTJEKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldFdp
ZHRoKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldEhlaWdodCk6CisgICAgICAgIChnbDo6
VGV4dHVyZTJEOjpnZXRJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpn
ZXRUeXBlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnJlZGVmaW5lSW1hZ2UpOgorICAgICAg
ICAoZ2w6OlRleHR1cmUyRDo6c2V0SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Ymlu
ZFRleEltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnJlbGVhc2VUZXhJbWFnZSk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZTJEOjpzZXRDb21wcmVzc2VkSW1hZ2UpOgorICAgICAgICAoZ2w6
OlRleHR1cmUyRDo6Y29tbWl0UmVjdCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpjb3B5SW1h
Z2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Y29weVN1YkltYWdlKToKKyAgICAgICAgKGds
OjpUZXh0dXJlMkQ6OnN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6aXNTYW1wbGVy
Q29tcGxldGUpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6aXNNaXBtYXBDb21wbGV0ZSk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZTJEOjpnZXRCYXNlVGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4
dHVyZTJEOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnVwZGF0ZVRl
eHR1cmUpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Y29udmVydFRvUmVuZGVyVGFyZ2V0KToK
KyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdlbmVyYXRlTWlwbWFwcyk6CisgICAgICAgIChnbDo6
VGV4dHVyZTJEOjpnZXRSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0
UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldFN0b3JhZ2UpOgorICAg
ICAgICAoZ2w6OlRleHR1cmVTdG9yYWdlQ3ViZU1hcDo6VGV4dHVyZVN0b3JhZ2VDdWJlTWFwKToK
KyAgICAgICAgKGdsOjpUZXh0dXJlU3RvcmFnZUN1YmVNYXA6On5UZXh0dXJlU3RvcmFnZUN1YmVN
YXApOgorICAgICAgICAoZ2w6OlRleHR1cmVTdG9yYWdlQ3ViZU1hcDo6Z2V0Q3ViZU1hcFN1cmZh
Y2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVTdG9yYWdlQ3ViZU1hcDo6Z2V0QmFzZVRleHR1cmUp
OgorICAgICAgICAoZ2w6OlRleHR1cmVTdG9yYWdlQ3ViZU1hcDo6Z2V0UmVuZGVyVGFyZ2V0U2Vy
aWFsKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6VGV4dHVyZUN1YmVNYXApOgorICAg
ICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjp+VGV4dHVyZUN1YmVNYXApOgorICAgICAgICAoZ2w6
OlRleHR1cmVDdWJlTWFwOjpnZXRXaWR0aCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6
OmdldEhlaWdodCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmdldEludGVybmFsRm9y
bWF0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0VHlwZSk6CisgICAgICAgIChn
bDo6VGV4dHVyZUN1YmVNYXA6OnNldENvbXByZXNzZWRJbWFnZSk6CisgICAgICAgIChnbDo6VGV4
dHVyZUN1YmVNYXA6OmNvbW1pdFJlY3QpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpz
dWJJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnN1YkltYWdlQ29tcHJlc3Nl
ZCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmlzU2FtcGxlckNvbXBsZXRlKToKKyAg
ICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6aXNDdWJlQ29tcGxldGUpOgorICAgICAgICAoZ2w6
OlRleHR1cmVDdWJlTWFwOjppc01pcG1hcEN1YmVDb21wbGV0ZSk6CisgICAgICAgIChnbDo6VGV4
dHVyZUN1YmVNYXA6OmdldEJhc2VUZXh0dXJlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1h
cDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnVwZGF0ZVRl
eHR1cmUpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpjb252ZXJ0VG9SZW5kZXJUYXJn
ZXQpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZSk6CisgICAgICAgIChn
bDo6VGV4dHVyZUN1YmVNYXA6OnJlZGVmaW5lSW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVD
dWJlTWFwOjpjb3B5SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpjb3B5U3Vi
SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpzdG9yYWdlKToKKyAgICAgICAg
KGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2VuZXJhdGVNaXBtYXBzKToKKyAgICAgICAgKGdsOjpUZXh0
dXJlQ3ViZU1hcDo6Z2V0UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1h
cDo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0U3Rv
cmFnZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmg6CisgICAgICAgIChnbDo6
SW1hZ2U6Om1hcmtEaXJ0eSk6CisgICAgICAgIChnbDo6SW1hZ2U6Om1hcmtDbGVhbik6CisgICAg
ICAgIChnbDo6SW1hZ2U6OmdldFdpZHRoKToKKyAgICAgICAgKGdsOjpJbWFnZTo6Z2V0SGVpZ2h0
KToKKyAgICAgICAgKGdsOjpJbWFnZTo6Z2V0Rm9ybWF0KToKKyAgICAgICAgKGdsOjpJbWFnZTo6
Z2V0VHlwZSk6CisgICAgICAgIChnbDo6SW1hZ2U6OmlzRGlydHkpOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvVmVydGV4RGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAoZ2w6OmVsZW1lbnRzSW5C
dWZmZXIpOgorICAgICAgICAoZ2w6OlZlcnRleERhdGFNYW5hZ2VyOjpWZXJ0ZXhEYXRhTWFuYWdl
cik6CisgICAgICAgIChnbDo6VmVydGV4RGF0YU1hbmFnZXI6OndyaXRlQXR0cmlidXRlRGF0YSk6
CisgICAgICAgIChnbDo6VmVydGV4RGF0YU1hbmFnZXI6OnByZXBhcmVWZXJ0ZXhEYXRhKToKKyAg
ICAgICAgKGdsOjpWZXJ0ZXhCdWZmZXI6OlZlcnRleEJ1ZmZlcik6CisgICAgICAgIChnbDo6VmVy
dGV4QnVmZmVyOjpnZXRTZXJpYWwpOgorICAgICAgICAoZ2w6OlZlcnRleEJ1ZmZlcjo6aXNzdWVT
ZXJpYWwpOgorICAgICAgICAoZ2w6OlN0cmVhbWluZ1ZlcnRleEJ1ZmZlcjo6cmVzZXJ2ZVJlcXVp
cmVkU3BhY2UpOgorICAgICAgICAoZ2w6OlN0YXRpY1ZlcnRleEJ1ZmZlcjo6bWFwKToKKyAgICAg
ICAgKGdsOjpTdGF0aWNWZXJ0ZXhCdWZmZXI6OnJlc2VydmVSZXF1aXJlZFNwYWNlKToKKyAgICAg
ICAgKGdsOjpTdGF0aWNWZXJ0ZXhCdWZmZXI6Omxvb2t1cEF0dHJpYnV0ZSk6CisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5oOgorICAgICAgICAoZ2w6OkFycmF5VmVy
dGV4QnVmZmVyOjpzaXplKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2dlb21ldHJ5L0luZGV4
RGF0YU1hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvZ2VvbWV0
cnkvSW5kZXhEYXRhTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
Z2VvbWV0cnkvVmVydGV4RGF0YU1hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvZ2VvbWV0cnkvVmVydGV4RGF0YU1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL2dlb21ldHJ5L3ZlcnRleGNvbnZlcnNpb24uaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHA6CisgICAgICAgICh2YWxpZGF0ZVN1
YkltYWdlUGFyYW1zKToKKyAgICAgICAgKHZhbGlkUmVhZEZvcm1hdFR5cGUpOgorICAgICAgICAo
RXh0ZW5zaW9uOjpnbEJpbmRUZXhJbWFnZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9saWJH
TEVTdjIuZGVmOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyLnJjOgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZjcHJvajoKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL21haW4uY3BwOgorICAgICAgICAoZ2w6OmdldE5vbkxvc3RDb250ZXh0KToKKyAgICAgICAg
KGdsOjpjaGVja0RldmljZUxvc3QpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbWFpbi5oOgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvdXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKGdsOjpVbmlm
b3JtRXh0ZXJuYWxDb21wb25lbnRDb3VudCk6CisgICAgICAgIChnbDo6VW5pZm9ybUludGVybmFs
Q29tcG9uZW50Q291bnQpOgorICAgICAgICAoZ2w6OlVuaWZvcm1Db21wb25lbnRTaXplKToKKyAg
ICAgICAgKGdsOjpVbmlmb3JtSW50ZXJuYWxTaXplKToKKyAgICAgICAgKGdsOjpVbmlmb3JtRXh0
ZXJuYWxTaXplKToKKyAgICAgICAgKGdsOjpDb21wdXRlQ29tcHJlc3NlZFNpemUpOgorICAgICAg
ICAoZ2w6OklzQ29tcHJlc3NlZCk6CisgICAgICAgIChnbDo6RXh0cmFjdEZvcm1hdCk6CisgICAg
ICAgIChnbDo6RXh0cmFjdFR5cGUpOgorICAgICAgICAoZHgyZXM6OklzRmxvYXQzMkZvcm1hdCk6
CisgICAgICAgIChkeDJlczo6SXNGbG9hdDE2Rm9ybWF0KToKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3V0aWxpdGllcy5oOgorICAgICAgICAoaXNEZXZpY2VMb3N0RXJyb3IpOgorCiAyMDExLTEx
LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICAqIEFOR0xFLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IExldCBhIG5ld2VyIFhjb2RlIHVwZGF0ZSB0aGlzIGZp
bGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA4ZTgwYWQ3OGU0Mjc0ZmEzNjc3MWJiYzhlM2E3YjRkOTMz
Njk2YjkzLi5hMzNjNWNlMWZjNmM5YjNhYjY4ZGFhNmJkNGNjNzg3NjM0NDI1M2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTcsNiArNywxMSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1
aWxkRmlsZSBzZWN0aW9uICovCisJCTQ5OTUxQzAzMTRCN0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhf
bGltaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OTk1MUMwMjE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oICovOyB9OworCQk0OTk1
MUMwOTE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDUxNEI3QUFE
NzAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCAqLzsgfTsKKwkJNDk5NTFD
MEExNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNjE0QjdBQUQ4MDA2
MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAqLzsgfTsKKwkJNDk5NTFDMEIxNEI3
QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0
ZWN0UmVjdXJzaW9uLmNwcCAqLzsgfTsKKwkJNDk5NTFDMEMxNEI3QUFEODAwNjBFOTZFIC8qIERl
dGVjdFJlY3Vyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oICovOyB9
OwogCQk5MEQ5QjEwMjEyRTExRENCMDAyRDQyNTUgLyogQ29tcGlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRjkxMkUxMURDQjAwMkQ0
MjU1IC8qIENvbXBpbGVyLmNwcCAqLzsgfTsKIAkJOTBEOUIxMDMxMkUxMURDQjAwMkQ0MjU1IC8q
IEV4dGVuc2lvbkJlaGF2aW9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MEQ5QjBGQTEyRTExRENCMDAyRDQyNTUgLyogRXh0ZW5zaW9uQmVoYXZpb3Iu
aCAqLzsgfTsKIAkJOTBEOUIxMDQxMkUxMURDQjAwMkQ0MjU1IC8qIGdsc2xhbmdfbGV4LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEZCMTJF
MTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nX2xleC5jcHAgKi87IH07CkBAIC02Myw2ICs2OCwxMSBA
QAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLworCQk0OTk1MUMwMjE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xp
bWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBsZW5ndGhfbGltaXRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25F
bXVsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTk1MUMwNzE0QjdB
QUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERldGVjdFJlY3Vyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV0ZWN0UmVjdXJzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM1MTIwOEM2OEIwMDFDODczRSAvKiBBTkdM
RS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBBTkdMRS54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNF
IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAw
MUM4NzNFIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNzIsMTIgKzM4MiwxNiBAQAogCQkJCUEwQUFCRTJCMTNBRkU4MTAwMEYyRUJEMSAvKiBG
b3JMb29wVW5yb2xsLmggKi8sCiAJCQkJRkIzOUQyNDQxMjAwRjM1QTAwMDg4RTY5IC8qIHByZXBy
b2Nlc3NvciAqLywKIAkJCQlGQjM5RDIyMTEyMDBGMzVBMDAwODhFNjkgLyogQmFzZVR5cGVzLmgg
Ki8sCisJCQkJNDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yLmNwcCAqLywKKwkJCQk0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IuaCAqLywKIAkJCQlGQjM5RDIyMjEyMDBGMzVBMDAwODhFNjkgLyogQ29kZUdl
bkdMU0wuY3BwICovLAogCQkJCUZCMzlEMjI0MTIwMEYzNUEwMDA4OEU2OSAvKiBDb21tb24uaCAq
LywKIAkJCQk5MEQ5QjBGOTEyRTExRENCMDAyRDQyNTUgLyogQ29tcGlsZXIuY3BwICovLAogCQkJ
CUZCMzlEMjI1MTIwMEYzNUEwMDA4OEU2OSAvKiBDb25zdGFudFVuaW9uLmggKi8sCiAJCQkJRkIz
OUQyMjYxMjAwRjM1QTAwMDg4RTY5IC8qIGRlYnVnLmNwcCAqLywKIAkJCQlGQjM5RDIyNzEyMDBG
MzVBMDAwODhFNjkgLyogZGVidWcuaCAqLywKKwkJCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUg
LyogRGV0ZWN0UmVjdXJzaW9uLmNwcCAqLywKKwkJCQk0OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUg
LyogRGV0ZWN0UmVjdXJzaW9uLmggKi8sCiAJCQkJOTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8q
IEV4dGVuc2lvbkJlaGF2aW9yLmggKi8sCiAJCQkJOTBEOUIwRkIxMkUxMURDQjAwMkQ0MjU1IC8q
IGdsc2xhbmdfbGV4LmNwcCAqLywKIAkJCQk5MEQ5QjBGQzEyRTExRENCMDAyRDQyNTUgLyogZ2xz
bGFuZ190YWIuY3BwICovLApAQCAtNDQ1LDYgKzQ1OSw3IEBACiAJCQkJRkIzOUQyNDgxMjAwRjM1
QTAwMDg4RTY5IC8qIGNwcC5jICovLAogCQkJCUZCMzlEMjQ5MTIwMEYzNUEwMDA4OEU2OSAvKiBj
cHAuaCAqLywKIAkJCQlGQjM5RDI0QTEyMDBGMzVBMDAwODhFNjkgLyogY3Bwc3RydWN0LmMgKi8s
CisJCQkJNDk5NTFDMDIxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLywKIAkJ
CQlGQjM5RDI0QjEyMDBGMzVBMDAwODhFNjkgLyogbWVtb3J5LmMgKi8sCiAJCQkJRkIzOUQyNEMx
MjAwRjM1QTAwMDg4RTY5IC8qIG1lbW9yeS5oICovLAogCQkJCUZCMzlEMjREMTIwMEYzNUEwMDA4
OEU2OSAvKiBwYXJzZXIuaCAqLywKQEAgLTQ5MCw2ICs1MDUsOSBAQAogCQkJCUEwQUFCRTM1MTNB
RkU4NDcwMEYyRUJEMSAvKiBPdXRwdXRHTFNMQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTBB
QUJFNDUxM0FGRTk0NTAwRjJFQkQxIC8qIE91dHB1dEVTU0wuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUEwQUFCRTQ5MTNBRkU5NjEwMEYyRUJEMSAvKiBUcmFuc2xhdG9yRVNTTC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDk5NTFDMDMxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ5OTUxQzBBMTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDk5NTFDMEMxNEI3QUFEODAwNjBFOTZF
IC8qIERldGVjdFJlY3Vyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC01ODQsNiArNjAyLDggQEAK
IAkJCQlBMEFBQkUzNDEzQUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0R0xTTEJhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTBBQUJFNDQxM0FGRTk0NTAwRjJFQkQxIC8qIE91dHB1dEVTU0wuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTBBQUJFNDgxM0FGRTk2MTAwRjJFQkQxIC8qIFRyYW5zbGF0
b3JFU1NMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5OTUxQzA5MTRCN0FBRDgwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OTk1MUMw
QjE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xleHQuaAppbmRleCBiNjUw
YTUwMGM0OTBkNDFjOGU4YTdhZWY1Y2VjNDAyNDljZDY1ZTYxLi4yZDRhYjIyMzUwNDZiNDNmMzVk
NjRjYzc1YWE1ZTU3YWM4MWQ1NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0VHTC9lZ2xleHQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0VHTC9lZ2xleHQuaApAQCAtNiw3ICs2LDcgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAog
LyoKLSoqIENvcHlyaWdodCAoYykgMjAwNy0yMDA5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KKyoq
IENvcHlyaWdodCAoYykgMjAwNy0yMDEwIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KICoqCiAqKiBQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
biBvYnRhaW5pbmcgYQogKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVk
IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQpAQCAtMzQsOCArMzQsOCBAQCBleHRlcm4gIkMiIHsK
IAogLyogSGVhZGVyIGZpbGUgdmVyc2lvbiBudW1iZXIgKi8KIC8qIEN1cnJlbnQgdmVyc2lvbiBh
dCBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L2VnbC8gKi8KLS8qICRSZXZpc2lvbjog
MTA3OTUgJCBvbiAkRGF0ZTogMjAxMC0wMy0xOSAxNzowNDoxNyAtMDcwMCAoRnJpLCAxOSBNYXIg
MjAxMCkgJCAqLwotI2RlZmluZSBFR0xfRUdMRVhUX1ZFUlNJT04gNQorLyogJFJldmlzaW9uOiAx
NTA1MiAkIG9uICREYXRlOiAyMDExLTA3LTA2IDE3OjQzOjQ2IC0wNzAwIChXZWQsIDA2IEp1bCAy
MDExKSAkICovCisjZGVmaW5lIEVHTF9FR0xFWFRfVkVSU0lPTiAxMAogCiAjaWZuZGVmIEVHTF9L
SFJfY29uZmlnX2F0dHJpYnMKICNkZWZpbmUgRUdMX0tIUl9jb25maWdfYXR0cmlicyAxCkBAIC0x
MjAsNiArMTIwLDcgQEAgdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMREVT
VFJPWUlNQUdFS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0wKICNkZWZpbmUgRUdMX0dMX1JF
TkRFUkJVRkZFUl9LSFIJCQkweDMwQjkJLyogZWdsQ3JlYXRlSW1hZ2VLSFIgdGFyZ2V0ICovCiAj
ZW5kaWYKIAorI2lmIEtIUk9OT1NfU1VQUE9SVF9JTlQ2NCAgIC8qIEVHTFRpbWVLSFIgcmVxdWly
ZXMgNjQtYml0IHVpbnQgc3VwcG9ydCAqLwogI2lmbmRlZiBFR0xfS0hSX3JldXNhYmxlX3N5bmMK
ICNkZWZpbmUgRUdMX0tIUl9yZXVzYWJsZV9zeW5jIDEKIApAQCAtMTQ5LDYgKzE1MCw3IEBAIHR5
cGVkZWYgRUdMaW50IChFR0xBUElFTlRSWVAgUEZORUdMQ0xJRU5UV0FJVFNZTkNLSFJQUk9DKSAo
RUdMRGlzcGxheSBkcHksIEVHTFN5CiB0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQ
Rk5FR0xTSUdOQUxTWU5DS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jS0hSIHN5bmMs
IEVHTGVudW0gbW9kZSk7CiB0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xH
RVRTWU5DQVRUUklCS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jS0hSIHN5bmMsIEVH
TGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpOwogI2VuZGlmCisjZW5kaWYKIAogI2lmbmRl
ZiBFR0xfS0hSX2ltYWdlX2Jhc2UKICNkZWZpbmUgRUdMX0tIUl9pbWFnZV9iYXNlIDEKQEAgLTE2
OSw2ICsxNzEsMTEgQEAgdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMR0VU
U1lOQ0FUVFJJQktIUlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUcKICNkZWZpbmUgRUdMX0NPTlRF
WFRfUFJJT1JJVFlfTE9XX0lNRwkJMHgzMTAzCiAjZW5kaWYKIAorI2lmbmRlZiBFR0xfS0hSX2xv
Y2tfc3VyZmFjZTIKKyNkZWZpbmUgRUdMX0tIUl9sb2NrX3N1cmZhY2UyIDEKKyNkZWZpbmUgRUdM
X0JJVE1BUF9QSVhFTF9TSVpFX0tIUgkJMHgzMTEwCisjZW5kaWYKKwogI2lmbmRlZiBFR0xfTlZf
Y292ZXJhZ2Vfc2FtcGxlCiAjZGVmaW5lIEVHTF9OVl9jb3ZlcmFnZV9zYW1wbGUgMQogI2RlZmlu
ZSBFR0xfQ09WRVJBR0VfQlVGRkVSU19OViAweDMwRTAKQEAgLTE4Miw2ICsxODksNyBAQCB0eXBl
ZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xHRVRTWU5DQVRUUklCS0hSUFJPQykg
KEVHTERpc3BsYXkgZHB5LCBFRwogI2RlZmluZSBFR0xfREVQVEhfRU5DT0RJTkdfTk9OTElORUFS
X05WIDB4MzBFMwogI2VuZGlmCiAKKyNpZiBLSFJPTk9TX1NVUFBPUlRfSU5UNjQgICAvKiBFR0xU
aW1lTlYgcmVxdWlyZXMgNjQtYml0IHVpbnQgc3VwcG9ydCAqLwogI2lmbmRlZiBFR0xfTlZfc3lu
YwogI2RlZmluZSBFR0xfTlZfc3luYyAxCiAjZGVmaW5lIEVHTF9TWU5DX1BSSU9SX0NPTU1BTkRT
X0NPTVBMRVRFX05WCTB4MzBFNgpAQCAtMTk4LDcgKzIwNiw3IEBAIHR5cGVkZWYgRUdMQm9vbGVh
biAoRUdMQVBJRU5UUllQIFBGTkVHTEdFVFNZTkNBVFRSSUJLSFJQUk9DKSAoRUdMRGlzcGxheSBk
cHksIEVHCiAjZGVmaW5lIEVHTF9TWU5DX0ZFTkNFX05WCQkJMHgzMEVGCiAjZGVmaW5lIEVHTF9O
T19TWU5DX05WCQkJCSgoRUdMU3luY05WKTApCiB0eXBlZGVmIHZvaWQqIEVHTFN5bmNOVjsKLXR5
cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEVHTFRpbWVOVjsKK3R5cGVkZWYga2hyb25vc191dGlt
ZV9uYW5vc2Vjb25kc190IEVHTFRpbWVOVjsKICNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMK
IEVHTFN5bmNOViBlZ2xDcmVhdGVGZW5jZVN5bmNOViAoRUdMRGlzcGxheSBkcHksIEVHTGVudW0g
Y29uZGl0aW9uLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKIEVHTEJvb2xlYW4gZWdsRGVz
dHJveVN5bmNOViAoRUdMU3luY05WIHN5bmMpOwpAQCAtMjE0LDYgKzIyMiw3NiBAQCB0eXBlZGVm
IEVHTGludCAoRUdMQVBJRU5UUllQIFBGTkVHTENMSUVOVFdBSVRTWU5DTlZQUk9DKSAoRUdMU3lu
Y05WIHN5bmMsIEVHTGludAogdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdM
U0lHTkFMU1lOQ05WUFJPQykgKEVHTFN5bmNOViBzeW5jLCBFR0xlbnVtIG1vZGUpOwogdHlwZWRl
ZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMR0VUU1lOQ0FUVFJJQk5WUFJPQykgKEVH
TFN5bmNOViBzeW5jLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKTsKICNlbmRpZgor
I2VuZGlmCisKKyNpZiBLSFJPTk9TX1NVUFBPUlRfSU5UNjQgICAvKiBEZXBlbmRlbnQgb24gRUdM
X0tIUl9yZXVzYWJsZV9zeW5jIHdoaWNoIHJlcXVpcmVzIDY0LWJpdCB1aW50IHN1cHBvcnQgKi8K
KyNpZm5kZWYgRUdMX0tIUl9mZW5jZV9zeW5jCisjZGVmaW5lIEVHTF9LSFJfZmVuY2Vfc3luYyAx
CisvKiBSZXVzZXMgbW9zdCB0b2tlbnMgYW5kIGVudHJ5IHBvaW50cyBmcm9tIEVHTF9LSFJfcmV1
c2FibGVfc3luYyAqLworI2RlZmluZSBFR0xfU1lOQ19QUklPUl9DT01NQU5EU19DT01QTEVURV9L
SFIJMHgzMEYwCisjZGVmaW5lIEVHTF9TWU5DX0NPTkRJVElPTl9LSFIJCQkweDMwRjgKKyNkZWZp
bmUgRUdMX1NZTkNfRkVOQ0VfS0hSCQkJMHgzMEY5CisjZW5kaWYKKyNlbmRpZgorCisjaWZuZGVm
IEVHTF9ISV9jbGllbnRwaXhtYXAKKyNkZWZpbmUgRUdMX0hJX2NsaWVudHBpeG1hcCAxCisKKy8q
IFN1cmZhY2UgQXR0cmlidXRlICovCisjZGVmaW5lIEVHTF9DTElFTlRfUElYTUFQX1BPSU5URVJf
SEkJCTB4OEY3NAorLyoKKyAqIFN0cnVjdHVyZSByZXByZXNlbnRpbmcgYSBjbGllbnQgcGl4bWFw
CisgKiAocGl4bWFwJ3MgZGF0YSBpcyBpbiBjbGllbnQtc3BhY2UgbWVtb3J5KS4KKyAqLworc3Ry
dWN0IEVHTENsaWVudFBpeG1hcEhJCit7CisJdm9pZCoJCXBEYXRhOworCUVHTGludAkJaVdpZHRo
OworCUVHTGludAkJaUhlaWdodDsKKwlFR0xpbnQJCWlTdHJpZGU7Cit9OworCisjaWZkZWYgRUdM
X0VHTEVYVF9QUk9UT1RZUEVTCitFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVh
dGVQaXhtYXBTdXJmYWNlSEkoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIHN0cnVj
dCBFR0xDbGllbnRQaXhtYXBISSogcGl4bWFwKTsKKyNlbmRpZiAvKiBFR0xfRUdMRVhUX1BST1RP
VFlQRVMgKi8KK3R5cGVkZWYgRUdMU3VyZmFjZSAoRUdMQVBJRU5UUllQIFBGTkVHTENSRUFURVBJ
WE1BUFNVUkZBQ0VISVBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgc3Ry
dWN0IEVHTENsaWVudFBpeG1hcEhJKiBwaXhtYXApOworI2VuZGlmCS8qIEVHTF9ISV9jbGllbnRw
aXhtYXAgKi8KKworI2lmbmRlZiBFR0xfSElfY29sb3Jmb3JtYXRzCisjZGVmaW5lIEVHTF9ISV9j
b2xvcmZvcm1hdHMgMQorLyogQ29uZmlnIEF0dHJpYnV0ZSAqLworI2RlZmluZSBFR0xfQ09MT1Jf
Rk9STUFUX0hJCQkJMHg4RjcwCisvKiBDb2xvciBGb3JtYXRzICovCisjZGVmaW5lIEVHTF9DT0xP
Ul9SR0JfSEkJCQkweDhGNzEKKyNkZWZpbmUgRUdMX0NPTE9SX1JHQkFfSEkJCQkweDhGNzIKKyNk
ZWZpbmUgRUdMX0NPTE9SX0FSR0JfSEkJCQkweDhGNzMKKyNlbmRpZiAvKiBFR0xfSElfY29sb3Jm
b3JtYXRzICovCisKKyNpZm5kZWYgRUdMX01FU0FfZHJtX2ltYWdlCisjZGVmaW5lIEVHTF9NRVNB
X2RybV9pbWFnZSAxCisjZGVmaW5lIEVHTF9EUk1fQlVGRkVSX0ZPUk1BVF9NRVNBCQkweDMxRDAJ
ICAgIC8qIENyZWF0ZURSTUltYWdlTUVTQSBhdHRyaWJ1dGUgKi8KKyNkZWZpbmUgRUdMX0RSTV9C
VUZGRVJfVVNFX01FU0EJCQkweDMxRDEJICAgIC8qIENyZWF0ZURSTUltYWdlTUVTQSBhdHRyaWJ1
dGUgKi8KKyNkZWZpbmUgRUdMX0RSTV9CVUZGRVJfRk9STUFUX0FSR0IzMl9NRVNBCTB4MzFEMgkg
ICAgLyogRUdMX0lNQUdFX0ZPUk1BVF9NRVNBIGF0dHJpYnV0ZSB2YWx1ZSAqLworI2RlZmluZSBF
R0xfRFJNX0JVRkZFUl9NRVNBCQkJMHgzMUQzCSAgICAvKiBlZ2xDcmVhdGVJbWFnZUtIUiB0YXJn
ZXQgKi8KKyNkZWZpbmUgRUdMX0RSTV9CVUZGRVJfU1RSSURFX01FU0EJCTB4MzFENAorI2RlZmlu
ZSBFR0xfRFJNX0JVRkZFUl9VU0VfU0NBTk9VVF9NRVNBCQkweDAwMDAwMDAxICAvKiBFR0xfRFJN
X0JVRkZFUl9VU0VfTUVTQSBiaXRzICovCisjZGVmaW5lIEVHTF9EUk1fQlVGRkVSX1VTRV9TSEFS
RV9NRVNBCQkweDAwMDAwMDAyICAvKiBFR0xfRFJNX0JVRkZFUl9VU0VfTUVTQSBiaXRzICovCisj
aWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitFR0xBUEkgRUdMSW1hZ2VLSFIgRUdMQVBJRU5U
UlkgZWdsQ3JlYXRlRFJNSW1hZ2VNRVNBIChFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICph
dHRyaWJfbGlzdCk7CitFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xFeHBvcnREUk1J
bWFnZU1FU0EgKEVHTERpc3BsYXkgZHB5LCBFR0xJbWFnZUtIUiBpbWFnZSwgRUdMaW50ICpuYW1l
LCBFR0xpbnQgKmhhbmRsZSwgRUdMaW50ICpzdHJpZGUpOworI2VuZGlmIC8qIEVHTF9FR0xFWFRf
UFJPVE9UWVBFUyAqLwordHlwZWRlZiBFR0xJbWFnZUtIUiAoRUdMQVBJRU5UUllQIFBGTkVHTENS
RUFURURSTUlNQUdFTUVTQVBST0MpIChFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRy
aWJfbGlzdCk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xFWFBPUlRE
Uk1JTUFHRU1FU0FQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTEltYWdlS0hSIGltYWdlLCBFR0xp
bnQgKm5hbWUsIEVHTGludCAqaGFuZGxlLCBFR0xpbnQgKnN0cmlkZSk7CisjZW5kaWYKKworI2lm
bmRlZiBFR0xfTlZfcG9zdF9zdWJfYnVmZmVyCisjZGVmaW5lIEVHTF9OVl9wb3N0X3N1Yl9idWZm
ZXIgMQorI2RlZmluZSBFR0xfUE9TVF9TVUJfQlVGRkVSX1NVUFBPUlRFRF9OVgkweDMwQkUKKyNp
ZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZ
IGVnbFBvc3RTdWJCdWZmZXJOViAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwg
RUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpOworI2VuZGlm
IC8qIEVHTF9FR0xFWFRfUFJPVE9UWVBFUyAqLwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElF
TlRSWVAgUEZORUdMUE9TVFNVQkJVRkZFUk5WUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJm
YWNlIHN1cmZhY2UsIEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVp
Z2h0KTsKKyNlbmRpZgogCiAjaWZuZGVmIEVHTF9BTkdMRV9xdWVyeV9zdXJmYWNlX3BvaW50ZXIK
ICNkZWZpbmUgRUdMX0FOR0xFX3F1ZXJ5X3N1cmZhY2VfcG9pbnRlciAxCkBAIC0yMjQsOCArMzAy
LDQzIEBAIHR5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFFVRVJZU1VSRkFD
RVBPSU5URVJBTkdMRVBST0MpIChFR0xEaXNwbGF5CiAjZW5kaWYKIAogI2lmbmRlZiBFR0xfQU5H
TEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUKLSNkZWZpbmUgRUdMX0FOR0xF
X3N1cmZhY2VfZDNkX3RleHR1cmVfMmRfc2hhcmVfaGFuZGxlCi0jZGVmaW5lIEVHTF9EM0RfVEVY
VFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUgMHgzMjAwCisjZGVmaW5lIEVHTF9BTkdMRV9zdXJm
YWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZSAxCisjZGVmaW5lIEVHTF9EM0RfVEVYVFVS
RV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUJMHgzMjAwCisjZW5kaWYKKworI2lmbmRlZiBFR0xfQU5H
TEVfc29mdHdhcmVfZGlzcGxheQorI2RlZmluZSBFR0xfQU5HTEVfc29mdHdhcmVfZGlzcGxheSAx
CisjZGVmaW5lIEVHTF9TT0ZUV0FSRV9ESVNQTEFZX0FOR0xFICgoRUdMTmF0aXZlRGlzcGxheVR5
cGUpLTEpCisjZW5kaWYKKworI2lmbmRlZiBFR0xfTlZfY292ZXJhZ2Vfc2FtcGxlX3Jlc29sdmUK
KyNkZWZpbmUgRUdMX05WX2NvdmVyYWdlX3NhbXBsZV9yZXNvbHZlIDEKKyNkZWZpbmUgRUdMX0NP
VkVSQUdFX1NBTVBMRV9SRVNPTFZFX05WCQkweDMxMzEKKyNkZWZpbmUgRUdMX0NPVkVSQUdFX1NB
TVBMRV9SRVNPTFZFX0RFRkFVTFRfTlYJMHgzMTMyCisjZGVmaW5lIEVHTF9DT1ZFUkFHRV9TQU1Q
TEVfUkVTT0xWRV9OT05FX05WCTB4MzEzMworI2VuZGlmCisKKyNpZm5kZWYgRUdMX0VYVF9jcmVh
dGVfY29udGV4dF9yb2J1c3RuZXNzCisjZGVmaW5lIEVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9i
dXN0bmVzcyAxCisjZGVmaW5lIEVHTF9DT05URVhUX09QRU5HTF9ST0JVU1RfQUNDRVNTX0VYVCAg
ICAgICAgICAgICAgICAweDMwQkYKKyNkZWZpbmUgRUdMX0NPTlRFWFRfT1BFTkdMX1JFU0VUX05P
VElGSUNBVElPTl9TVFJBVEVHWV9FWFQgIDB4MzEzOAorI2RlZmluZSBFR0xfTk9fUkVTRVRfTk9U
SUZJQ0FUSU9OX0VYVCAgICAgICAgICAgICAgICAgICAgICAgMHgzMUJFCisjZGVmaW5lIEVHTF9M
T1NFX0NPTlRFWFRfT05fUkVTRVRfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDMxQkYKKyNl
bmRpZgorCisjaWYgS0hST05PU19TVVBQT1JUX0lOVDY0ICAgLyogRUdMVGltZUtIUiByZXF1aXJl
cyA2NC1iaXQgdWludCBzdXBwb3J0ICovCisjaWZuZGVmIEVHTF9OVl9zeXN0ZW1fdGltZQorI2Rl
ZmluZSBFR0xfTlZfc3lzdGVtX3RpbWUgMQorCit0eXBlZGVmIGtocm9ub3NfdXRpbWVfbmFub3Nl
Y29uZHNfdCBFR0x1aW50NjROVjsKKworI2lmZGVmIEVHTF9FR0xFWFRfUFJPVE9UWVBFUworRUdM
QVBJIEVHTHVpbnQ2NE5WIEVHTEFQSUVOVFJZIGVnbEdldFN5c3RlbVRpbWVGcmVxdWVuY3lOVih2
b2lkKTsKK0VHTEFQSSBFR0x1aW50NjROViBFR0xBUElFTlRSWSBlZ2xHZXRTeXN0ZW1UaW1lTlYo
dm9pZCk7CisjZW5kaWYgLyogRUdMX0VHTEVYVF9QUk9UT1RZUEVTICovCit0eXBlZGVmIEVHTHVp
bnQ2NE5WIChFR0xBUElFTlRSWVAgUEZORUdMR0VUU1lTVEVNVElNRUZSRVFVRU5DWU5WUFJPQykg
KHZvaWQpOwordHlwZWRlZiBFR0x1aW50NjROViAoRUdMQVBJRU5UUllQIFBGTkVHTEdFVFNZU1RF
TVRJTUVOVlBST0MpICh2b2lkKTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdscGxh
dGZvcm0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbHBsYXRmb3Jt
LmgKaW5kZXggMjJlODU1ZjU2Y2FkNGRlZWYwZDVjNGIzZTVjOTk4OWE0MTUwOTYyYS4uMzQyODNm
MmU5MDcxZTc3MjIyZmRiY2ExNDk0ZWEwNjBiZjhmMzk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdscGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCkBAIC0yNSw3ICsyNSw3IEBA
CiAqLwogCiAvKiBQbGF0Zm9ybS1zcGVjaWZpYyB0eXBlcyBhbmQgZGVmaW5pdGlvbnMgZm9yIGVn
bC5oCi0gKiAkUmV2aXNpb246IDk3MjQgJCBvbiAkRGF0ZTogMjAwOS0xMi0wMiAwMjowNTozMyAt
MDgwMCAoV2VkLCAwMiBEZWMgMjAwOSkgJAorICogJFJldmlzaW9uOiAxMjMwNiAkIG9uICREYXRl
OiAyMDEwLTA4LTI1IDA5OjUxOjI4IC0wNzAwIChXZWQsIDI1IEF1ZyAyMDEwKSAkCiAgKgogICog
QWRvcHRlcnMgbWF5IG1vZGlmeSBraHJwbGF0Zm9ybS5oIGFuZCB0aGlzIGZpbGUgdG8gc3VpdCB0
aGVpciBwbGF0Zm9ybS4KICAqIFlvdSBhcmUgZW5jb3VyYWdlZCB0byBzdWJtaXQgYWxsIG1vZGlm
aWNhdGlvbnMgdG8gdGhlIEtocm9ub3MgZ3JvdXAgc28gdGhhdApAQCAtNjAsNiArNjAsMTEgQEAK
ICAqIFdpbmRvd3MgRGV2aWNlIENvbnRleHQuIFRoZXkgbXVzdCBiZSBkZWZpbmVkIGluIHBsYXRm
b3JtLXNwZWNpZmljCiAgKiBjb2RlIGJlbG93LiBUaGUgRUdMLXByZWZpeGVkIHZlcnNpb25zIG9m
IE5hdGl2ZSpUeXBlIGFyZSB0aGUgc2FtZQogICogdHlwZXMsIHJlbmFtZWQgaW4gRUdMIDEuMyBz
byBhbGwgdHlwZXMgaW4gdGhlIEFQSSBzdGFydCB3aXRoICJFR0wiLgorICoKKyAqIEtocm9ub3Mg
U1RST05HTFkgUkVDT01NRU5EUyB0aGF0IHlvdSB1c2UgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbnMK
KyAqIHByb3ZpZGVkIGJlbG93LCBzaW5jZSB0aGVzZSBjaGFuZ2VzIGFmZmVjdCBib3RoIGJpbmFy
eSBhbmQgc291cmNlCisgKiBwb3J0YWJpbGl0eSBvZiBhcHBsaWNhdGlvbnMgdXNpbmcgRUdMIHJ1
bm5pbmcgb24gZGlmZmVyZW50IEVHTAorICogaW1wbGVtZW50YXRpb25zLgogICovCiAKICNpZiBk
ZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1ZDMzJfXykgJiYgIWRlZmluZWQoX19DWUdXSU5f
XykgJiYgIWRlZmluZWQoX19TQ0lURUNIX1NOQVBfXykgLyogV2luMzIgYW5kIFdpbkNFICovCkBA
IC03OCw3ICs4MywxMyBAQCB0eXBlZGVmIGludCAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlOwogdHlw
ZWRlZiB2b2lkICpFR0xOYXRpdmVXaW5kb3dUeXBlOwogdHlwZWRlZiB2b2lkICpFR0xOYXRpdmVQ
aXhtYXBUeXBlOwogCi0jZWxpZiBkZWZpbmVkKF9fdW5peF9fKQorI2VsaWYgZGVmaW5lZChXTF9F
R0xfUExBVEZPUk0pCisKK3R5cGVkZWYgc3RydWN0IHdsX2Rpc3BsYXkgICAgICpFR0xOYXRpdmVE
aXNwbGF5VHlwZTsKK3R5cGVkZWYgc3RydWN0IHdsX2VnbF9waXhtYXAgICpFR0xOYXRpdmVQaXht
YXBUeXBlOwordHlwZWRlZiBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyAgKkVHTE5hdGl2ZVdpbmRvd1R5
cGU7CisKKyNlbGlmIGRlZmluZWQoX191bml4X18pICYmICFkZWZpbmVkKEFORFJPSUQpCiAKIC8q
IFgxMSAodGVudGF0aXZlKSAgKi8KICNpbmNsdWRlIDxYMTEvWGxpYi5oPgpAQCAtODgsNiArOTks
MTQgQEAgdHlwZWRlZiBEaXNwbGF5ICpFR0xOYXRpdmVEaXNwbGF5VHlwZTsKIHR5cGVkZWYgUGl4
bWFwICAgRUdMTmF0aXZlUGl4bWFwVHlwZTsKIHR5cGVkZWYgV2luZG93ICAgRUdMTmF0aXZlV2lu
ZG93VHlwZTsKIAorI2VsaWYgZGVmaW5lZChBTkRST0lEKQorCitzdHJ1Y3QgZWdsX25hdGl2ZV9w
aXhtYXBfdDsKKwordHlwZWRlZiBzdHJ1Y3QgQU5hdGl2ZVdpbmRvdyogICAgICAgICAgIEVHTE5h
dGl2ZVdpbmRvd1R5cGU7Cit0eXBlZGVmIHN0cnVjdCBlZ2xfbmF0aXZlX3BpeG1hcF90KiAgICAg
RUdMTmF0aXZlUGl4bWFwVHlwZTsKK3R5cGVkZWYgdm9pZCogICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZTsKKwogI2Vsc2UKICNlcnJvciAiUGxhdGZvcm0gbm90
IHJlY29nbml6ZWQiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRl
L0dMRVMyL2dsMmV4dC5oCmluZGV4IDAxODQ0ZGU0YjYyMGEyMTBlYzA3YTQzNTIwMTY4N2MyMzZi
MTQyMjUuLjUyMzNmNGExNmQzY2M1ODhmZTc0YWEzYWRlNjcyMmZmMjIwNDZiOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHQuaApAQCAtMSw3ICsx
LDcgQEAKICNpZm5kZWYgX19nbDJleHRfaF8KICNkZWZpbmUgX19nbDJleHRfaF8KIAotLyogJFJl
dmlzaW9uOiAxMDc5OCAkIG9uICREYXRlOjogMjAxMC0wMy0xOSAxNzozNDozMCAtMDcwMCAjJCAq
LworLyogJFJldmlzaW9uOiAxNTA0OSAkIG9uICREYXRlOjogMjAxMS0wNy0wNiAxNzoyODoxNiAt
MDcwMCAjJCAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtNTcsNiAr
NTcsMTUgQEAgZXh0ZXJuICJDIiB7CiB0eXBlZGVmIHZvaWQqIEdMZWdsSW1hZ2VPRVM7CiAjZW5k
aWYKIAorLyogR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCAqLworI2lmbmRlZiBHTF9PRVNfRUdM
X2ltYWdlX2V4dGVybmFsCisvKiBHTGVnbEltYWdlT0VTIGRlZmluZWQgaW4gR0xfT0VTX0VHTF9p
bWFnZSBhbHJlYWR5LiAqLworI2RlZmluZSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ2NQorI2RlZmluZSBHTF9TQU1QTEVSX0VYVEVS
TkFMX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ2NgorI2RlZmluZSBH
TF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTICAgICAgICAgICAgICAgICAgICAgICAgIDB4
OEQ2NworI2RlZmluZSBHTF9SRVFVSVJFRF9URVhUVVJFX0lNQUdFX1VOSVRTX09FUyAgICAgICAg
ICAgICAgICAgICAgIDB4OEQ2OAorI2VuZGlmCisKIC8qIEdMX09FU19lbGVtZW50X2luZGV4X3Vp
bnQgKi8KICNpZm5kZWYgR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludAogI2RlZmluZSBHTF9VTlNJ
R05FRF9JTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQwNQpA
QCAtMTgwLDYgKzE4OSw5NSBAQCB0eXBlZGVmIHZvaWQqIEdMZWdsSW1hZ2VPRVM7CiAjZW5kaWYK
IAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBBTkdMRSBleHRlbnNpb24gdG9rZW5zCisgKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCisKKy8qIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgKi8KKyNpZm5kZWYg
R0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAorI2RlZmluZSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FO
R0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENBOAorI2RlZmluZSBHTF9EUkFX
X0ZSQU1FQlVGRkVSX0FOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENBOQor
I2RlZmluZSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEUgICAgICAgICAgICAgICAg
ICAgICAgIDB4OENBNgorI2RlZmluZSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEUg
ICAgICAgICAgICAgICAgICAgICAgIDB4OENBQQorI2VuZGlmCisKKy8qIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlICovCisjaWZuZGVmIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4Q0FCCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVf
TVVMVElTQU1QTEVfQU5HTEUgICAgICAgICAgICAgMHg4RDU2CisjZGVmaW5lIEdMX01BWF9TQU1Q
TEVTX0FOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDU3CisjZW5k
aWYKKworLyogR0xfQU5HTEVfcGFja19yZXZlcnNlX3Jvd19vcmRlciAqLworI2lmbmRlZiBHTF9B
TkdMRV9wYWNrX3JldmVyc2Vfcm93X29yZGVyCisjZGVmaW5lIEdMX1BBQ0tfUkVWRVJTRV9ST1df
T1JERVJfQU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgMHg5M0E0CisjZW5kaWYKKworLyog
R0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzICovCisjaWZuZGVmIEdMX0FOR0xFX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0MworI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQzX0FOR0xFICAgICAgICAgICAgICAgICAgICAgIDB4ODNGMgorI2VuZGlmCisKKy8qIEdMX0FO
R0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSAqLworI2lmbmRlZiBHTF9BTkdMRV90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDUKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9B
TkdMRSAgICAgICAgICAgICAgICAgICAgICAweDgzRjMKKyNlbmRpZgorCisvKiBHTF9BTkdMRV90
cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UgKi8KKyNpZm5kZWYgR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlCisjZGVmaW5lIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhf
QU5HTEUgICAgICAgICAgICAgICAgMHg5M0EwCisjZW5kaWYKKworLyogR0xfQU5HTEVfdGV4dHVy
ZV91c2FnZSAqLworI2lmbmRlZiBHTF9BTkdMRV90ZXh0dXJlX3VzYWdlCisjZGVmaW5lIEdMX1RF
WFRVUkVfVVNBR0VfQU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5M0Ey
CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg5M0EzCisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBBUFBMRSBl
eHRlbnNpb24gdG9rZW5zCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIEdMX0FQUExFX3JnYl80
MjIgKi8KKyNpZm5kZWYgR0xfQVBQTEVfcmdiXzQyMgorI2RlZmluZSBHTF9SR0JfNDIyX0FQUExF
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEExRgorI2RlZmluZSBH
TF9VTlNJR05FRF9TSE9SVF84XzhfQVBQTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODVCQQorI2RlZmluZSBHTF9VTlNJR05FRF9TSE9SVF84XzhfUkVWX0FQUExFICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODVCQgorI2VuZGlmCisKKy8qIEdMX0FQUExFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlICovCisjaWZuZGVmIEdMX0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCisj
ZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1QTEVTX0FQUExFICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4Q0FCCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1Q
TEVfQVBQTEUgICAgICAgICAgICAgMHg4RDU2CisjZGVmaW5lIEdMX01BWF9TQU1QTEVTX0FQUExF
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDU3CisjZGVmaW5lIEdMX1JF
QURfRlJBTUVCVUZGRVJfQVBQTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0E4
CisjZGVmaW5lIEdMX0RSQVdfRlJBTUVCVUZGRVJfQVBQTEUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4Q0E5CisjZGVmaW5lIEdMX0RSQVdfRlJBTUVCVUZGRVJfQklORElOR19BUFBM
RSAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0E2CisjZGVmaW5lIEdMX1JFQURfRlJBTUVCVUZG
RVJfQklORElOR19BUFBMRSAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0FBCisjZW5kaWYKKwor
LyogR0xfQVBQTEVfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggKi8KKyNpZm5kZWYgR0xfQVBQTEVf
dGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKKyNkZWZpbmUgR0xfQkdSQV9FWFQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKKyNlbmRpZgorCisvKiBHTF9B
UFBMRV90ZXh0dXJlX21heF9sZXZlbCAqLworI2lmbmRlZiBHTF9BUFBMRV90ZXh0dXJlX21heF9s
ZXZlbAorI2RlZmluZSBHTF9URVhUVVJFX01BWF9MRVZFTF9BUFBMRSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODEzRAorI2VuZGlmCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgorICogQVJN
IGV4dGVuc2lvbiB0b2tlbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogR0xfQVJNX21hbGlf
c2hhZGVyX2JpbmFyeSAqLworI2lmbmRlZiBHTF9BUk1fbWFsaV9zaGFkZXJfYmluYXJ5CisjZGVm
aW5lIEdMX01BTElfU0hBREVSX0JJTkFSWV9BUk0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4RjYwCisjZW5kaWYKKworLyogR0xfQVJNX3JnYmE4ICovCisvKiBObyBuZXcgdG9rZW5z
IGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgog
ICogRVhUIGV4dGVuc2lvbiB0b2tlbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIApAQCAtMjA2LDYg
KzMwNCw5IEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xJbWFnZU9FUzsKICNkZWZpbmUgR0xfVU5TSUdO
RURfU0hPUlRfMV81XzVfNV9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgzNjYKICNl
bmRpZgogCisvKiBHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kICovCisvKiBObyBuZXcgdG9rZW5z
IGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCisKIC8qIEdMX0VYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYyAqLwogI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMKICNkZWZpbmUgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDg0RkUKQEAgLTIyOCw2ICszMjksNTggQEAgdHlwZWRlZiB2b2lkKiBH
TGVnbEltYWdlT0VTOwogI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODNGMQogI2VuZGlmCiAKKy8qIEdMX0VYVF91bnBhY2tf
c3ViaW1hZ2UgKi8KKyNpZm5kZWYgR0xfRVhUX3VucGFja19zdWJpbWFnZQorI2RlZmluZSBHTF9V
TlBBQ0tfUk9XX0xFTkdUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MENG
MgorI2RlZmluZSBHTF9VTlBBQ0tfU0tJUF9ST1dTICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4MENGMworI2RlZmluZSBHTF9VTlBBQ0tfU0tJUF9QSVhFTFMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MENGNAorI2VuZGlmCisKKy8qIEdMX0VYVF9yb2J1
c3RuZXNzICovCisjaWZuZGVmIEdMX0VYVF9yb2J1c3RuZXNzCisjZGVmaW5lIEdMX0dVSUxUWV9D
T05URVhUX1JFU0VUX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjUzCisjZGVm
aW5lIEdMX0lOTk9DRU5UX0NPTlRFWFRfUkVTRVRfRVhUICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4MjU0CisjZGVmaW5lIEdMX1VOS05PV05fQ09OVEVYVF9SRVNFVF9FWFQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4MjU1CisjZGVmaW5lIEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VT
U19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MEYzCisjZGVmaW5lIEdMX1JFU0VU
X05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQgICAgICAgICAgICAgICAgICAgICAgMHg4MjU2Cisj
ZGVmaW5lIEdMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MjUyCisjZGVmaW5lIEdMX05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4MjYxCisjZW5kaWYKKworLyogR0xfRVhUX3RleHR1cmVf
c3RvcmFnZSAqLworI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCisjZGVmaW5lIEdMX1RF
WFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTJG
CisjZGVmaW5lIEdMX0FMUEhBOF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4MDNDCisjZGVmaW5lIEdMX0xVTUlOQU5DRThfRVhUICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDQwCisjZGVmaW5lIEdMX0xVTUlOQU5DRThfQUxQ
SEE4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDQ1CisvKiBPRVNfdGV4
dHVyZV9mbG9hdCBkZXBlbmRlbnQgaW50ZXJuYWwgZm9ybWF0cyAqLworI2RlZmluZSBHTF9SR0JB
MzJGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgxNCAg
LyogcmV1c2UgdG9rZW5zIGZyb20gQVJCX3RleHR1cmVfZmxvYXQgKi8KKyNkZWZpbmUgR0xfUkdC
MzJGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MTUK
KyNkZWZpbmUgR0xfQUxQSEEzMkZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDg4MTYKKyNkZWZpbmUgR0xfTFVNSU5BTkNFMzJGX0VYVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDg4MTgKKyNkZWZpbmUgR0xfTFVNSU5BTkNFX0FMUEhB
MzJGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MTkKKy8qIE9FU190ZXh0
dXJlX2hhbGZfZmxvYXQgZGVwZW5kZW50IGludGVybmFsIGZvcm1hdHMgKi8KKyNkZWZpbmUgR0xf
UkdCQTE2Rl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4
MUEgLyogcmV1c2UgdG9rZW5zIGZyb20gQVJCX3RleHR1cmVfZmxvYXQgKi8KKyNkZWZpbmUgR0xf
UkdCMTZGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4
MUIKKyNkZWZpbmUgR0xfQUxQSEExNkZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDg4MUMKKyNkZWZpbmUgR0xfTFVNSU5BTkNFMTZGX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MUUKKyNkZWZpbmUgR0xfTFVNSU5BTkNFX0FM
UEhBMTZGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MUYKKy8qIEVYVF90
ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYgZGVwZW5kZW50IGludGVybmFsIGZvcm1hdHMgKi8K
KyNkZWZpbmUgR0xfUkdCMTBfQTJfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDgwNTkgIC8qIHJldXNlIHRva2VucyBmcm9tIEVYVF90ZXh0dXJlICovCisjZGVm
aW5lIEdMX1JHQjEwX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4MDUyCisvKiBFWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggZGVwZW5kZW50IGludGVy
bmFsIGZvcm1hdHMgKi8KKyNkZWZpbmUgR0xfQkdSQThfRVhUICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDkzQTEKKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSoKKyAqIERNUCBleHRlbnNpb24gdG9rZW5zCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIEdM
X0RNUF9zaGFkZXJfYmluYXJ5ICovCisjaWZuZGVmIEdMX0RNUF9zaGFkZXJfYmluYXJ5CisjZGVm
aW5lIEdMX1NIQURFUl9CSU5BUllfRE1QICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg5MjUwCisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBJTUcgZXh0ZW5zaW9u
IHRva2VucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjU2LDE3ICs0MDksMTggQEAgdHlwZWRl
ZiB2b2lkKiBHTGVnbEltYWdlT0VTOwogI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUFZSVENf
MkJQUFYxX0lNRyAgICAgICAgICAgICAgICAgICAgIDB4OEMwMwogI2VuZGlmCiAKKy8qIEdMX0lN
R19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgKi8KKyNpZm5kZWYgR0xfSU1HX211bHRp
c2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQorI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfU0FNUExF
U19JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEzMworI2RlZmluZSBHTF9GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0lNRyAgICAgICAgICAgICAgIDB4OTEzNAor
I2RlZmluZSBHTF9NQVhfU0FNUExFU19JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4OTEzNQorI2RlZmluZSBHTF9URVhUVVJFX1NBTVBMRVNfSU1HICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OTEzNgorI2VuZGlmCisKIC8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KgogICogTlYgZXh0ZW5zaW9uIHRva2VucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0vKiBHTF9O
Vl9mZW5jZSAqLwotI2lmbmRlZiBHTF9OVl9mZW5jZQotI2RlZmluZSBHTF9BTExfQ09NUExFVEVE
X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRGMgotI2RlZmluZSBH
TF9GRU5DRV9TVEFUVVNfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODRGMwotI2RlZmluZSBHTF9GRU5DRV9DT05ESVRJT05fTlYgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODRGNAotI2VuZGlmCi0KIC8qIEdMX05WX2NvdmVyYWdlX3NhbXBsZSAq
LwogI2lmbmRlZiBHTF9OVl9jb3ZlcmFnZV9zYW1wbGUKICNkZWZpbmUgR0xfQ09WRVJBR0VfQ09N
UE9ORU5UX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhFRDAKQEAgLTI4NSwx
MCArNDM5LDkwIEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xJbWFnZU9FUzsKICNkZWZpbmUgR0xfREVQ
VEhfQ09NUE9ORU5UMTZfTk9OTElORUFSX05WICAgICAgICAgICAgICAgICAgICAgICAweDhFMkMK
ICNlbmRpZgogCisvKiBHTF9OVl9kcmF3X2J1ZmZlcnMgKi8KKyNpZm5kZWYgR0xfTlZfZHJhd19i
dWZmZXJzCisjZGVmaW5lIEdMX01BWF9EUkFXX0JVRkZFUlNfTlYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4ODI0CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMF9OViAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI1CisjZGVmaW5lIEdMX0RSQVdfQlVG
RkVSMV9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI2CisjZGVm
aW5lIEdMX0RSQVdfQlVGRkVSMl9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4ODI3CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSM19OViAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4ODI4CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSNF9OViAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI5CisjZGVmaW5lIEdMX0RSQVdf
QlVGRkVSNV9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJBCisj
ZGVmaW5lIEdMX0RSQVdfQlVGRkVSNl9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4ODJCCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSN19OViAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4ODJDCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSOF9OViAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJECisjZGVmaW5lIEdMX0RS
QVdfQlVGRkVSOV9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJF
CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTBfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4ODJGCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTFfTlYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODMwCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTJf
TlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODMxCisjZGVmaW5lIEdM
X0RSQVdfQlVGRkVSMTNfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
ODMyCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTRfTlYgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4ODMzCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTVfTlYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODM0CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFD
SE1FTlQwX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UwCisjZGVmaW5l
IEdMX0NPTE9SX0FUVEFDSE1FTlQxX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4Q0UxCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQyX05WICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4Q0UyCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQzX05WICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UzCisjZGVmaW5lIEdMX0NPTE9SX0FU
VEFDSE1FTlQ0X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U0CisjZGVm
aW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ1X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4Q0U1CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ2X05WICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4Q0U2CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ3X05W
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U3CisjZGVmaW5lIEdMX0NPTE9S
X0FUVEFDSE1FTlQ4X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U4Cisj
ZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ5X05WICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4Q0U5CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMF9OViAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4Q0VBCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQx
MV9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VCCisjZGVmaW5lIEdMX0NP
TE9SX0FUVEFDSE1FTlQxMl9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VD
CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxM19OViAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4Q0VECisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxNF9OViAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VFCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1F
TlQxNV9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VGCisjZW5kaWYKKwor
LyogR0xfTlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzICovCisjaWZuZGVmIEdMX05WX2Zib19jb2xv
cl9hdHRhY2htZW50cworI2RlZmluZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFNfTlYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OENERgorLyogR0xfQ09MT1JfQVRUQUNITUVOVHswLTE1
fV9OViBkZWZpbmVkIGluIEdMX05WX2RyYXdfYnVmZmVycyBhbHJlYWR5LiAqLworI2VuZGlmCisK
Ky8qIEdMX05WX2ZlbmNlICovCisjaWZuZGVmIEdMX05WX2ZlbmNlCisjZGVmaW5lIEdMX0FMTF9D
T01QTEVURURfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEYyCisj
ZGVmaW5lIEdMX0ZFTkNFX1NUQVRVU19OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4NEYzCisjZGVmaW5lIEdMX0ZFTkNFX0NPTkRJVElPTl9OViAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4NEY0CisjZW5kaWYKKworLyogR0xfTlZfcmVhZF9idWZm
ZXIgKi8KKyNpZm5kZWYgR0xfTlZfcmVhZF9idWZmZXIKKyNkZWZpbmUgR0xfUkVBRF9CVUZGRVJf
TlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDMDIKKyNlbmRpZgor
CisvKiBHTF9OVl9yZWFkX2J1ZmZlcl9mcm9udCAqLworLyogTm8gbmV3IHRva2VucyBpbnRyb2R1
Y2VkIGJ5IHRoaXMgZXh0ZW5zaW9uLiAqLworCisvKiBHTF9OVl9yZWFkX2RlcHRoICovCisvKiBO
byBuZXcgdG9rZW5zIGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCisKKy8qIEdMX05W
X3JlYWRfZGVwdGhfc3RlbmNpbCAqLworLyogTm8gbmV3IHRva2VucyBpbnRyb2R1Y2VkIGJ5IHRo
aXMgZXh0ZW5zaW9uLiAqLworCisvKiBHTF9OVl9yZWFkX3N0ZW5jaWwgKi8KKy8qIE5vIG5ldyB0
b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKworLyogR0xfTlZfdGV4dHVy
ZV9jb21wcmVzc2lvbl9zM3RjX3VwZGF0ZSAqLworLyogTm8gbmV3IHRva2VucyBpbnRyb2R1Y2Vk
IGJ5IHRoaXMgZXh0ZW5zaW9uLiAqLworCisvKiBHTF9OVl90ZXh0dXJlX25wb3RfMkRfbWlwbWFw
ICovCisvKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCisK
IC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKgogICogUUNPTSBleHRlbnNpb24gdG9rZW5zCiAgKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCiAKKy8qIEdMX1FDT01fYWxwaGFfdGVzdCAqLworI2lmbmRlZiBHTF9RQ09NX2Fs
cGhhX3Rlc3QKKyNkZWZpbmUgR0xfQUxQSEFfVEVTVF9RQ09NICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDBCQzAKKyNkZWZpbmUgR0xfQUxQSEFfVEVTVF9GVU5DX1FDT00g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCQzEKKyNkZWZpbmUgR0xfQUxQSEFf
VEVTVF9SRUZfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCQzIKKyNl
bmRpZgorCiAvKiBHTF9RQ09NX2RyaXZlcl9jb250cm9sICovCiAvKiBObyBuZXcgdG9rZW5zIGlu
dHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCiAKQEAgLTM1NywyMiArNTkxLDEyIEBAIHR5
cGVkZWYgdm9pZCogR0xlZ2xJbWFnZU9FUzsKICNlbmRpZgogCiAvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoK
LSAqIEFOR0xFIGV4dGVuc2lvbiB0b2tlbnMKKyAqIFZJViBleHRlbnNpb24gdG9rZW5zCiAgKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCiAKLS8qIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgKi8KLSNpZm5k
ZWYgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotI2RlZmluZSBHTF9SRUFEX0ZSQU1FQlVGRkVS
X0FOR0xFICAgICAgICAgMHg4Q0E4Ci0jZGVmaW5lIEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUg
ICAgICAgICAweDhDQTkKLSNkZWZpbmUgR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xF
IDB4OENBNiAvLyBhbGlhcyBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HCi0jZGVmaW5lIEdMX1JFQURf
RlJBTUVCVUZGRVJfQklORElOR19BTkdMRSAweDhDQUEKLSNlbmRpZgotCi0vKiBHTF9BTkdMRV9m
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSAqLwotI2lmbmRlZiBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZQotI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfU0FNUExFU19BTkdMRSAgICAgICAg
ICAgICAgICAgICAweDhDQUIKLSNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxU
SVNBTVBMRV9BTkdMRSAgICAgMHg4RDU2Ci0jZGVmaW5lIEdMX01BWF9TQU1QTEVTX0FOR0xFICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ1NworLyogR0xfVklWX3NoYWRlcl9iaW5hcnkg
Ki8KKyNpZm5kZWYgR0xfVklWX3NoYWRlcl9iaW5hcnkKKyNkZWZpbmUgR0xfU0hBREVSX0JJTkFS
WV9WSVYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhGQzQKICNlbmRpZgog
CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSoKQEAgLTQxOSw2ICs2NDMsMTIgQEAgdHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MpIChHTGVudW0g
dGFyZ2V0LAogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFR0xJTUFHRVRBUkdFVFJF
TkRFUkJVRkZFUlNUT1JBR0VPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBp
bWFnZSk7CiAjZW5kaWYKIAorLyogR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCAqLworI2lmbmRl
ZiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsCisjZGVmaW5lIEdMX09FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwgMQorLyogZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyBkZWZpbmVkIGluIEdMX09F
U19FR0xfaW1hZ2UgYWxyZWFkeS4gKi8KKyNlbmRpZgorCiAvKiBHTF9PRVNfZWxlbWVudF9pbmRl
eF91aW50ICovCiAjaWZuZGVmIEdMX09FU19lbGVtZW50X2luZGV4X3VpbnQKICNkZWZpbmUgR0xf
T0VTX2VsZW1lbnRfaW5kZXhfdWludCAxCkBAIC02MDEsNiArODMxLDEwMSBAQCB0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05JVE9SQ09VTlRFUkRBVEFBTURQUk9DKSAo
R0x1aW50IG1vbml0bwogI2VuZGlmCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgorICogQU5HTEUgZXh0
ZW5zaW9uIGZ1bmN0aW9ucworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiBHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9ibGl0ICovCisjaWZuZGVmIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQKKyNkZWZp
bmUgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBF
UworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUgKEdM
aW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kxLCBHTGludCBk
c3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBHTGludCBkc3RZMSwgR0xiaXRmaWVsZCBt
YXNrLCBHTGVudW0gZmlsdGVyKTsKKyNlbmRpZgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xCTElURlJBTUVCVUZGRVJBTkdMRVBST0MpIChHTGludCBzcmNYMCwgR0xpbnQgc3JjWTAs
IEdMaW50IHNyY1gxLCBHTGludCBzcmNZMSwgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGlu
dCBkc3RYMSwgR0xpbnQgZHN0WTEsIEdMYml0ZmllbGQgbWFzaywgR0xlbnVtIGZpbHRlcik7Cisj
ZW5kaWYKKworLyogR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgKi8KKyNpZm5kZWYg
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKKyNkZWZpbmUgR0xfQU5HTEVfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGUgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xF
IChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFJFTkRFUkJVRkZFUlNUT1JBR0VNVUxUSVNBTVBMRUFOR0xFUFJPQykg
KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisjZW5kaWYKKworLyogR0xfQU5HTEVfcGFj
a19yZXZlcnNlX3Jvd19vcmRlciAqLworI2lmbmRlZiBHTF9BTkdMRV9wYWNrX3JldmVyc2Vfcm93
X29yZGVyCisjZGVmaW5lIEdMX0FOR0xFX3BhY2tfcmV2ZXJzZV9yb3dfb3JkZXIgMQorI2VuZGlm
CisKKy8qIEdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyAqLworI2lmbmRlZiBHTF9B
TkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMKKyNkZWZpbmUgR0xfQU5HTEVfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQzIDEKKyNlbmRpZgorCisvKiBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDUgKi8KKyNpZm5kZWYgR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Cisj
ZGVmaW5lIEdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSAxCisjZW5kaWYKKworLyog
R0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlICovCisjaWZuZGVmIEdMX0FOR0xFX3Ry
YW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQorI2RlZmluZSBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRl
cl9zb3VyY2UgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSAoR0x1aW50IHNoYWRl
ciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogc291cmNlKTsKKyNl
bmRpZgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRUUkFOU0xBVEVEU0hBREVS
U09VUkNFQU5HTEVQUk9DKSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVp
KiBsZW5ndGgsIEdMY2hhciogc291cmNlKTsKKyNlbmRpZgorCisvKiBHTF9BTkdMRV90ZXh0dXJl
X3VzYWdlICovCisjaWZuZGVmIEdMX0FOR0xFX3RleHR1cmVfdXNhZ2UKKyNkZWZpbmUgR0xfQU5H
TEVfdGV4dHVyZV91c2FnZSAxCisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBBUFBM
RSBleHRlbnNpb24gZnVuY3Rpb25zCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIEdMX0FQUExF
X3JnYl80MjIgKi8KKyNpZm5kZWYgR0xfQVBQTEVfcmdiXzQyMgorI2RlZmluZSBHTF9BUFBMRV9y
Z2JfNDIyIDEKKyNlbmRpZgorCisvKiBHTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSAq
LworI2lmbmRlZiBHTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQorI2RlZmluZSBHTF9B
UFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBF
UworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQVBQTEUgKEdMZW51bSwgR0xzaXplaSwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlc29sdmVNdWx0aXNhbXBsZUZyYW1lYnVm
ZmVyQVBQTEUgKHZvaWQpOworI2VuZGlmIC8qIEdMX0dMRVhUX1BST1RPVFlQRVMgKi8KK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVOREVSQlVGRkVSU1RPUkFHRU1VTFRJU0FNUExF
QVBQTEVQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMUkVTT0xWRU1VTFRJU0FNUExFRlJBTUVCVUZGRVJBUFBMRVBST0Mp
ICh2b2lkKTsKKyNlbmRpZgorCisvKiBHTF9BUFBMRV90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCAq
LworI2lmbmRlZiBHTF9BUFBMRV90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorI2RlZmluZSBHTF9B
UFBMRV90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCAxCisjZW5kaWYKKworLyogR0xfQVBQTEVfdGV4
dHVyZV9tYXhfbGV2ZWwgKi8KKyNpZm5kZWYgR0xfQVBQTEVfdGV4dHVyZV9tYXhfbGV2ZWwKKyNk
ZWZpbmUgR0xfQVBQTEVfdGV4dHVyZV9tYXhfbGV2ZWwgMQorI2VuZGlmCisKKy8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKgorICogQVJNIGV4dGVuc2lvbiBmdW5jdGlvbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K
KworLyogR0xfQVJNX21hbGlfc2hhZGVyX2JpbmFyeSAqLworI2lmbmRlZiBHTF9BUk1fbWFsaV9z
aGFkZXJfYmluYXJ5CisjZGVmaW5lIEdMX0FSTV9tYWxpX3NoYWRlcl9iaW5hcnkgMQorI2VuZGlm
CisKKy8qIEdMX0FSTV9yZ2JhOCAqLworI2lmbmRlZiBHTF9BUk1fcmdiYTgKKyNkZWZpbmUgR0xf
QVJNX3JnYmE4IDEKKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKICAqIEVYVCBleHRlbnNp
b24gZnVuY3Rpb25zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKQEAgLTYzMyw2ICs5NTgsMTEgQEAg
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNVUxUSURSQVdFTEVNRU5UU0VYVFBST0Mp
IChHTGVudW0gbW9kZSwgY29uc3QgR0wKICNkZWZpbmUgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEg
MQogI2VuZGlmCiAKKy8qIEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QgKi8KKyNpZm5kZWYgR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZAorI2RlZmluZSBHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9k
IDEKKyNlbmRpZgorCiAvKiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgKi8KICNp
Zm5kZWYgR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCiAjZGVmaW5lIEdMX0VYVF90
ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyAxCkBAIC02NTMsNiArOTgzLDQ0IEBAIHR5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMTVVMVElEUkFXRUxFTUVOVFNFWFRQUk9DKSAoR0xlbnVt
IG1vZGUsIGNvbnN0IEdMCiAjZGVmaW5lIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEg
MQogI2VuZGlmCiAKKy8qIEdMX0VYVF91bnBhY2tfc3ViaW1hZ2UgKi8KKyNpZm5kZWYgR0xfRVhU
X3VucGFja19zdWJpbWFnZQorI2RlZmluZSBHTF9FWFRfdW5wYWNrX3N1YmltYWdlIDEKKyNlbmRp
ZgorCisvKiBHTF9FWFRfcm9idXN0bmVzcyAqLworI2lmbmRlZiBHTF9FWFRfcm9idXN0bmVzcwor
I2RlZmluZSBHTF9FWFRfcm9idXN0bmVzcyAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwor
R0xfQVBJQ0FMTCBHTGVudW0gR0xfQVBJRU5UUlkgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhU
ICh2b2lkKTsKK0dMX0FQSUNBTEwgdm9pZCAgIEdMX0FQSUVOVFJZIGdsUmVhZG5QaXhlbHNFWFQg
KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplLCBHTHZvaWQgKmRhdGEpOworR0xf
QVBJQ0FMTCB2b2lkICAgR0xfQVBJRU5UUlkgZ2xHZXRuVW5pZm9ybWZ2RVhUIChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAqcGFyYW1zKTsK
K0dMX0FQSUNBTEwgdm9pZCAgIEdMX0FQSUVOVFJZIGdsR2V0blVuaWZvcm1pdkVYVCAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMp
OworI2VuZGlmIC8qIEdMX0dMRVhUX1BST1RPVFlQRVMgKi8KK3R5cGVkZWYgR0xlbnVtIChHTF9B
UElFTlRSWVAgUEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVTRVhUUFJPQykgKHZvaWQpOwordHlw
ZWRlZiB2b2lkICAgKEdMX0FQSUVOVFJZUCBQRk5HTFJFQUROUElYRUxTRVhUUFJPQykgKEdMaW50
IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplLCBHTHZvaWQgKmRhdGEpOwordHlwZWRlZiB2
b2lkICAgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JNRlZFWFRQUk9DKSAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQgKnBhcmFtcyk7
Cit0eXBlZGVmIHZvaWQgICAoR0xfQVBJRU5UUllQIFBGTkdMR0VUTlVOSUZPUk1JVkVYVFBST0Mp
IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQg
KnBhcmFtcyk7CisjZW5kaWYKKworLyogR0xfRVhUX3RleHR1cmVfc3RvcmFnZSAqLworI2lmbmRl
ZiBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCisjZGVmaW5lIEdMX0VYVF90ZXh0dXJlX3N0b3JhZ2Ug
MQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBUZXhTdG9yYWdlMkRFWFQgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyNlbmRpZiAv
KiBHTF9HTEVYVF9QUk9UT1RZUEVTICovCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFRFWFNUT1JBR0UyREVYVCkgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyNlbmRpZgor
CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSoKKyAqIERNUCBleHRlbnNpb24gZnVuY3Rpb25zCisgKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCisKKy8qIEdMX0RNUF9zaGFkZXJfYmluYXJ5ICovCisjaWZuZGVmIEdMX0RN
UF9zaGFkZXJfYmluYXJ5CisjZGVmaW5lIEdMX0RNUF9zaGFkZXJfYmluYXJ5IDEKKyNlbmRpZgor
CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSoKICAqIElNRyBleHRlbnNpb24gZnVuY3Rpb25zCiAgKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCkBAIC02NzcsMTAgKzEwNDUsNTEgQEAgdHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xNVUxUSURSQVdFTEVNRU5UU0VYVFBST0MpIChHTGVudW0gbW9kZSwgY29uc3Qg
R0wKICNkZWZpbmUgR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMgMQogI2VuZGlmCiAK
Ky8qIEdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgKi8KKyNpZm5kZWYgR0xf
SU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQorI2RlZmluZSBHTF9JTUdfbXVsdGlz
YW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGVJTUcgKEdMZW51bSwgR0xzaXplaSwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJ
TUcgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQsIEdMc2l6ZWkpOworI2Vu
ZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFTkRFUkJVRkZFUlNUT1JBR0VN
VUxUSVNBTVBMRUlNRykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJETVVMVElTQU1QTEVJTUcp
IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1
aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTHNpemVpIHNhbXBsZXMpOworI2VuZGlmCisKIC8q
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKgogICogTlYgZXh0ZW5zaW9uIGZ1bmN0aW9ucwogICotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLwogCisvKiBHTF9OVl9jb3ZlcmFnZV9zYW1wbGUgKi8KKyNpZm5kZWYgR0xfTlZfY292
ZXJhZ2Vfc2FtcGxlCisjZGVmaW5lIEdMX05WX2NvdmVyYWdlX3NhbXBsZSAxCisjaWZkZWYgR0xf
R0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJhZ2VN
YXNrTlYgKEdMYm9vbGVhbiBtYXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENv
dmVyYWdlT3BlcmF0aW9uTlYgKEdMZW51bSBvcGVyYXRpb24pOworI2VuZGlmCit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSQUdFTUFTS05WUFJPQykgKEdMYm9vbGVhbiBtYXNr
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09WRVJBR0VPUEVSQVRJT05OVlBS
T0MpIChHTGVudW0gb3BlcmF0aW9uKTsKKyNlbmRpZgorCisvKiBHTF9OVl9kZXB0aF9ub25saW5l
YXIgKi8KKyNpZm5kZWYgR0xfTlZfZGVwdGhfbm9ubGluZWFyCisjZGVmaW5lIEdMX05WX2RlcHRo
X25vbmxpbmVhciAxCisjZW5kaWYKKworLyogR0xfTlZfZHJhd19idWZmZXJzICovCisjaWZuZGVm
IEdMX05WX2RyYXdfYnVmZmVycworI2RlZmluZSBHTF9OVl9kcmF3X2J1ZmZlcnMgMQorI2lmZGVm
IEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdC
dWZmZXJzTlYgKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKKyNlbmRpZgordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXQlVGRkVSU05WUFJPQykgKEdMc2l6ZWkgbiwg
Y29uc3QgR0xlbnVtICpidWZzKTsKKyNlbmRpZgorCisvKiBHTF9OVl9mYm9fY29sb3JfYXR0YWNo
bWVudHMgKi8KKyNpZm5kZWYgR0xfTlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzCisjZGVmaW5lIEdM
X05WX2Zib19jb2xvcl9hdHRhY2htZW50cyAxCisjZW5kaWYKKwogLyogR0xfTlZfZmVuY2UgKi8K
ICNpZm5kZWYgR0xfTlZfZmVuY2UKICNkZWZpbmUgR0xfTlZfZmVuY2UgMQpAQCAtNzAyLDI2ICsx
MTExLDU4IEBAIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRklOSVNIRkVOQ0VOVlBS
T0MpIChHTHVpbnQgZmVuY2UpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTRVRG
RU5DRU5WUFJPQykgKEdMdWludCBmZW5jZSwgR0xlbnVtIGNvbmRpdGlvbik7CiAjZW5kaWYKIAot
LyogR0xfTlZfY292ZXJhZ2Vfc2FtcGxlICovCi0jaWZuZGVmIEdMX05WX2NvdmVyYWdlX3NhbXBs
ZQotI2RlZmluZSBHTF9OVl9jb3ZlcmFnZV9zYW1wbGUgMQorLyogR0xfTlZfcmVhZF9idWZmZXIg
Ki8KKyNpZm5kZWYgR0xfTlZfcmVhZF9idWZmZXIKKyNkZWZpbmUgR0xfTlZfcmVhZF9idWZmZXIg
MQogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbENvdmVyYWdlTWFza05WIChHTGJvb2xlYW4gbWFzayk7Ci1HTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xDb3ZlcmFnZU9wZXJhdGlvbk5WIChHTGVudW0gb3BlcmF0aW9uKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlYWRCdWZmZXJOViAoR0xlbnVtIG1vZGUpOwogI2Vu
ZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSQUdFTUFTS05WUFJPQykg
KEdMYm9vbGVhbiBtYXNrKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09WRVJB
R0VPUEVSQVRJT05OVlBST0MpIChHTGVudW0gb3BlcmF0aW9uKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMUkVBREJVRkZFUk5WUFJPQykgKEdMZW51bSBtb2RlKTsKICNlbmRpZgog
Ci0vKiBHTF9OVl9kZXB0aF9ub25saW5lYXIgKi8KLSNpZm5kZWYgR0xfTlZfZGVwdGhfbm9ubGlu
ZWFyCi0jZGVmaW5lIEdMX05WX2RlcHRoX25vbmxpbmVhciAxCisvKiBHTF9OVl9yZWFkX2J1ZmZl
cl9mcm9udCAqLworI2lmbmRlZiBHTF9OVl9yZWFkX2J1ZmZlcl9mcm9udAorI2RlZmluZSBHTF9O
Vl9yZWFkX2J1ZmZlcl9mcm9udCAxCisjZW5kaWYKKworLyogR0xfTlZfcmVhZF9kZXB0aCAqLwor
I2lmbmRlZiBHTF9OVl9yZWFkX2RlcHRoCisjZGVmaW5lIEdMX05WX3JlYWRfZGVwdGggMQorI2Vu
ZGlmCisKKy8qIEdMX05WX3JlYWRfZGVwdGhfc3RlbmNpbCAqLworI2lmbmRlZiBHTF9OVl9yZWFk
X2RlcHRoX3N0ZW5jaWwKKyNkZWZpbmUgR0xfTlZfcmVhZF9kZXB0aF9zdGVuY2lsIDEKKyNlbmRp
ZgorCisvKiBHTF9OVl9yZWFkX3N0ZW5jaWwgKi8KKyNpZm5kZWYgR0xfTlZfcmVhZF9zdGVuY2ls
CisjZGVmaW5lIEdMX05WX3JlYWRfc3RlbmNpbCAxCisjZW5kaWYKKworLyogR0xfTlZfdGV4dHVy
ZV9jb21wcmVzc2lvbl9zM3RjX3VwZGF0ZSAqLworI2lmbmRlZiBHTF9OVl90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGNfdXBkYXRlCisjZGVmaW5lIEdMX05WX3RleHR1cmVfY29tcHJlc3Npb25fczN0
Y191cGRhdGUgMQorI2VuZGlmCisKKy8qIEdMX05WX3RleHR1cmVfbnBvdF8yRF9taXBtYXAgKi8K
KyNpZm5kZWYgR0xfTlZfdGV4dHVyZV9ucG90XzJEX21pcG1hcAorI2RlZmluZSBHTF9OVl90ZXh0
dXJlX25wb3RfMkRfbWlwbWFwIDEKICNlbmRpZgogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKICAqIFFD
T00gZXh0ZW5zaW9uIGZ1bmN0aW9ucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCisvKiBHTF9RQ09N
X2FscGhhX3Rlc3QgKi8KKyNpZm5kZWYgR0xfUUNPTV9hbHBoYV90ZXN0CisjZGVmaW5lIEdMX1FD
T01fYWxwaGFfdGVzdCAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQWxwaGFGdW5jUUNPTSAoR0xlbnVtIGZ1bmMsIEdMY2xhbXBmIHJl
Zik7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQUxQSEFGVU5DUUNP
TVBST0MpIChHTGVudW0gZnVuYywgR0xjbGFtcGYgcmVmKTsKKyNlbmRpZgorCiAvKiBHTF9RQ09N
X2RyaXZlcl9jb250cm9sICovCiAjaWZuZGVmIEdMX1FDT01fZHJpdmVyX2NvbnRyb2wKICNkZWZp
bmUgR0xfUUNPTV9kcml2ZXJfY29udHJvbCAxCkBAIC03OTcsMzEgKzEyMzgsMTIgQEAgdHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkRUSUxJTkdRQ09NUFJPQykgKEdMYml0ZmllbGQg
cHJlc2VydmVNYXNrKTsKICNlbmRpZgogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKLSAqIEFOR0xFIGV4
dGVuc2lvbiBmdW5jdGlvbnMKKyAqIFZJViBleHRlbnNpb24gdG9rZW5zCiAgKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCiAKLS8qIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgKi8KLSNpZm5kZWYgR0xfQU5H
TEVfZnJhbWVidWZmZXJfYmxpdAotI2RlZmluZSBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IDEK
LSNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xCbGl0RnJhbWVidWZmZXJBTkdMRSAoR0xpbnQgc3JjWDAsIEdMaW50IHNyY1kwLCBHTGludCBz
cmNYMSwgR0xpbnQgc3JjWTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xp
bnQgZHN0WTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyKTsKLSNlbmRpZgotdHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTElURlJBTUVCVUZGRVJBTkdMRVBST0MpIChHTGludCBz
cmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0
WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQgZHN0WTEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQg
bWFzaywgR0xlbnVtIGZpbHRlcik7Ci0jZW5kaWYKLQotLyogR0xfQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUgKi8KLSNpZm5kZWYgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUK
LSNkZWZpbmUgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgMQotI2lmZGVmIEdMX0dM
RVhUX1BST1RPVFlQRVMKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMs
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpOwotI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFTkRF
UkJVRkZFUlNUT1JBR0VNVUxUSVNBTVBMRUFOR0xFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6
ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisvKiBHTF9WSVZfc2hhZGVyX2JpbmFyeSAqLwor
I2lmbmRlZiBHTF9WSVZfc2hhZGVyX2JpbmFyeQorI2RlZmluZSBHTF9WSVZfc2hhZGVyX2JpbmFy
eSAxCiAjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAppbmRleCA2ZmU2ODhjNzVl
OWNlNTc4NTFmNGYwZjVkMzEwMWU5NGRkNzRhODA3Li4zM2RkNmE1NzhlNjZjNTcwM2YzNzlmNDFk
MzUzNjhhNzdkZmU4ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2lu
Y2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKQEAgLTYsNiArNiwyMyBAQAogI2lmbmRlZiBfQ09N
UElMRVJfSU5URVJGQUNFX0lOQ0xVREVEXwogI2RlZmluZSBfQ09NUElMRVJfSU5URVJGQUNFX0lO
Q0xVREVEXwogCisjaWYgZGVmaW5lZChDT01QT05FTlRfQlVJTEQpCisjaWYgZGVmaW5lZChfV0lO
MzIpIHx8IGRlZmluZWQoX1dJTjY0KQorCisjaWYgZGVmaW5lZChDT01QSUxFUl9JTVBMRU1FTlRB
VElPTikKKyNkZWZpbmUgQ09NUElMRVJfRVhQT1JUIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2Vs
c2UKKyNkZWZpbmUgQ09NUElMRVJfRVhQT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2VuZGlm
ICAvLyBkZWZpbmVkKENPTVBJTEVSX0lNUExFTUVOVEFUSU9OKQorCisjZWxzZSAgLy8gZGVmaW5l
ZChXSU4zMikKKyNkZWZpbmUgQ09NUElMRVJfRVhQT1JUIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpCisjZW5kaWYKKworI2Vsc2UgIC8vIGRlZmluZWQoQ09NUE9ORU5UX0JV
SUxEKQorI2RlZmluZSBDT01QSUxFUl9FWFBPUlQKKyNlbmRpZgorCiAvLwogLy8gVGhpcyBpcyB0
aGUgcGxhdGZvcm0gaW5kZXBlbmRlbnQgaW50ZXJmYWNlIGJldHdlZW4gYW4gT0dMIGRyaXZlcgog
Ly8gYW5kIHRoZSBzaGFkaW5nIGxhbmd1YWdlIGNvbXBpbGVyLgpAQCAtNTksNyArNzYsOCBAQCB0
eXBlZGVmIGVudW0gewogICBTSF9GTE9BVF9NQVQzICAgICA9IDB4OEI1QiwKICAgU0hfRkxPQVRf
TUFUNCAgICAgPSAweDhCNUMsCiAgIFNIX1NBTVBMRVJfMkQgICAgID0gMHg4QjVFLAotICBTSF9T
QU1QTEVSX0NVQkUgICA9IDB4OEI2MAorICBTSF9TQU1QTEVSX0NVQkUgICA9IDB4OEI2MCwKKyAg
U0hfU0FNUExFUl8yRF9SRUNUX0FSQiA9IDB4OEI2MwogfSBTaERhdGFUeXBlOwogCiB0eXBlZGVm
IGVudW0gewpAQCAtODEsNyArOTksMTEgQEAgdHlwZWRlZiBlbnVtIHsKICAgU0hfQVRUUklCVVRF
U19VTklGT1JNUyAgICAgPSAweDAwMDgsCiAgIFNIX0xJTkVfRElSRUNUSVZFUyAgICAgICAgID0g
MHgwMDEwLAogICBTSF9TT1VSQ0VfUEFUSCAgICAgICAgICAgICA9IDB4MDAyMCwKLSAgU0hfTUFQ
X0xPTkdfVkFSSUFCTEVfTkFNRVMgPSAweDAwNDAKKyAgU0hfTUFQX0xPTkdfVkFSSUFCTEVfTkFN
RVMgPSAweDAwNDAsCisgIFNIX1VOUk9MTF9GT1JfTE9PUF9XSVRIX0lOVEVHRVJfSU5ERVggPSAw
eDAwODAsCisKKyAgLy8gVGhpcyBpcyBuZWVkZWQgb25seSBhcyBhIHdvcmthcm91bmQgZm9yIGNl
cnRhaW4gT3BlbkdMIGRyaXZlciBidWdzLgorICBTSF9FTVVMQVRFX0JVSUxUX0lOX0ZVTkNUSU9O
UyA9IDB4MDEwMAogfSBTaENvbXBpbGVPcHRpb25zOwogCiAvLwpAQCAtODksMTIgKzExMSwxMiBA
QCB0eXBlZGVmIGVudW0gewogLy8gY29tcGlsZXIgb3BlcmF0aW9ucy4KIC8vIElmIHRoZSBmdW5j
dGlvbiBzdWNjZWVkcywgdGhlIHJldHVybiB2YWx1ZSBpcyBub256ZXJvLCBlbHNlIHplcm8uCiAv
LwotaW50IFNoSW5pdGlhbGl6ZSgpOworQ09NUElMRVJfRVhQT1JUIGludCBTaEluaXRpYWxpemUo
KTsKIC8vCiAvLyBEcml2ZXIgc2hvdWxkIGNhbGwgdGhpcyBhdCBzaHV0ZG93bi4KIC8vIElmIHRo
ZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIHJldHVybiB2YWx1ZSBpcyBub256ZXJvLCBlbHNlIHpl
cm8uCiAvLwotaW50IFNoRmluYWxpemUoKTsKK0NPTVBJTEVSX0VYUE9SVCBpbnQgU2hGaW5hbGl6
ZSgpOwogCiAvLwogLy8gSW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGJ1aWx0LWluIHJlc291cmNl
cyAoY29uc3RhbnRzIGFuZCBleHRlbnNpb25zKS4KQEAgLTExNSwxMiArMTM3LDE0IEBAIHR5cGVk
ZWYgc3RydWN0CiAgICAgLy8gRXh0ZW5zaW9ucy4KICAgICAvLyBTZXQgdG8gMSB0byBlbmFibGUg
dGhlIGV4dGVuc2lvbiwgZWxzZSAwLgogICAgIGludCBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXM7
CisgICAgaW50IE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWw7CisgICAgaW50IEFSQl90ZXh0dXJlX3Jl
Y3RhbmdsZTsKIH0gU2hCdWlsdEluUmVzb3VyY2VzOwogCiAvLwogLy8gSW5pdGlhbGl6ZSBidWls
dC1pbiByZXNvdXJjZXMgd2l0aCBtaW5pbXVtIGV4cGVjdGVkIHZhbHVlcy4KIC8vCi12b2lkIFNo
SW5pdEJ1aWx0SW5SZXNvdXJjZXMoU2hCdWlsdEluUmVzb3VyY2VzKiByZXNvdXJjZXMpOworQ09N
UElMRVJfRVhQT1JUIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJj
ZXMqIHJlc291cmNlcyk7CiAKIC8vCiAvLyBTaEhhbmRsZSBoZWxkIGJ5IGJ1dCBvcGFxdWUgdG8g
dGhlIGRyaXZlci4gIEl0IGlzIGFsbG9jYXRlZCwKQEAgLTE0MywxMCArMTY3LDEyIEBAIHR5cGVk
ZWYgdm9pZCogU2hIYW5kbGU7CiAvLyBvdXRwdXQ6IFNwZWNpZmllcyB0aGUgb3V0cHV0IGNvZGUg
dHlwZSAtIFNIX0VTU0xfT1VUUFVULCBTSF9HTFNMX09VVFBVVCwKIC8vICAgICAgICAgb3IgU0hf
SExTTF9PVVRQVVQuCiAvLyByZXNvdXJjZXM6IFNwZWNpZmllcyB0aGUgYnVpbHQtaW4gcmVzb3Vy
Y2VzLgotU2hIYW5kbGUgU2hDb25zdHJ1Y3RDb21waWxlcihTaFNoYWRlclR5cGUgdHlwZSwgU2hT
aGFkZXJTcGVjIHNwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0
cHV0IG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdElu
UmVzb3VyY2VzKiByZXNvdXJjZXMpOwotdm9pZCBTaERlc3RydWN0KFNoSGFuZGxlIGhhbmRsZSk7
CitDT01QSUxFUl9FWFBPUlQgU2hIYW5kbGUgU2hDb25zdHJ1Y3RDb21waWxlcigKKyAgICBTaFNo
YWRlclR5cGUgdHlwZSwKKyAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICBTaFNoYWRlck91dHB1
dCBvdXRwdXQsCisgICAgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzKiByZXNvdXJjZXMpOworQ09N
UElMRVJfRVhQT1JUIHZvaWQgU2hEZXN0cnVjdChTaEhhbmRsZSBoYW5kbGUpOwogCiAvLwogLy8g
Q29tcGlsZXMgdGhlIGdpdmVuIHNoYWRlciBzb3VyY2UuCkBAIC0xNzMsNyArMTk5LDcgQEAgdm9p
ZCBTaERlc3RydWN0KFNoSGFuZGxlIGhhbmRsZSk7CiAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICBDYW4gYmUgcXVlcmllZCBieSBjYWxsaW5nIFNoR2V0QWN0aXZlQXR0cmliKCkgYW5kCiAvLyAg
ICAgICAgICAgICAgICAgICAgICAgICBTaEdldEFjdGl2ZVVuaWZvcm0oKS4KIC8vCi1pbnQgU2hD
b21waWxlKAorQ09NUElMRVJfRVhQT1JUIGludCBTaENvbXBpbGUoCiAgICAgY29uc3QgU2hIYW5k
bGUgaGFuZGxlLAogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclN0cmluZ3NbXSwKICAgICBj
b25zdCBpbnQgbnVtU3RyaW5ncywKQEAgLTIwMSw3ICsyMjcsOSBAQCBpbnQgU2hDb21waWxlKAog
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG51bGwgdGVybWluYXRpb24gY2hhcmFj
dGVyLgogLy8gCiAvLyBwYXJhbXM6IFJlcXVlc3RlZCBwYXJhbWV0ZXIKLXZvaWQgU2hHZXRJbmZv
KGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwgU2hTaGFkZXJJbmZvIHBuYW1lLCBpbnQqIHBhcmFtcyk7
CitDT01QSUxFUl9FWFBPUlQgdm9pZCBTaEdldEluZm8oY29uc3QgU2hIYW5kbGUgaGFuZGxlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVySW5mbyBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHBhcmFtcyk7CiAKIC8vIFJldHVybnMgbnVs
LXRlcm1pbmF0ZWQgaW5mb3JtYXRpb24gbG9nIGZvciBhIGNvbXBpbGVkIHNoYWRlci4KIC8vIFBh
cmFtZXRlcnM6CkBAIC0yMTEsNyArMjM5LDcgQEAgdm9pZCBTaEdldEluZm8oY29uc3QgU2hIYW5k
bGUgaGFuZGxlLCBTaFNoYWRlckluZm8gcG5hbWUsIGludCogcGFyYW1zKTsKIC8vICAgICAgICAg
IHRvIGFjY29tb2RhdGUgdGhlIGluZm9ybWF0aW9uIGxvZy4gVGhlIHNpemUgb2YgdGhlIGJ1ZmZl
ciByZXF1aXJlZAogLy8gICAgICAgICAgdG8gc3RvcmUgdGhlIHJldHVybmVkIGluZm9ybWF0aW9u
IGxvZyBjYW4gYmUgb2J0YWluZWQgYnkgY2FsbGluZwogLy8gICAgICAgICAgU2hHZXRJbmZvIHdp
dGggU0hfSU5GT19MT0dfTEVOR1RILgotdm9pZCBTaEdldEluZm9Mb2coY29uc3QgU2hIYW5kbGUg
aGFuZGxlLCBjaGFyKiBpbmZvTG9nKTsKK0NPTVBJTEVSX0VYUE9SVCB2b2lkIFNoR2V0SW5mb0xv
Zyhjb25zdCBTaEhhbmRsZSBoYW5kbGUsIGNoYXIqIGluZm9Mb2cpOwogCiAvLyBSZXR1cm5zIG51
bGwtdGVybWluYXRlZCBvYmplY3QgY29kZSBmb3IgYSBjb21waWxlZCBzaGFkZXIuCiAvLyBQYXJh
bWV0ZXJzOgpAQCAtMjIxLDcgKzI0OSw3IEBAIHZvaWQgU2hHZXRJbmZvTG9nKGNvbnN0IFNoSGFu
ZGxlIGhhbmRsZSwgY2hhciogaW5mb0xvZyk7CiAvLyAgICAgICAgICBhY2NvbW9kYXRlIHRoZSBv
YmplY3QgY29kZS4gVGhlIHNpemUgb2YgdGhlIGJ1ZmZlciByZXF1aXJlZCB0bwogLy8gICAgICAg
ICAgc3RvcmUgdGhlIHJldHVybmVkIG9iamVjdCBjb2RlIGNhbiBiZSBvYnRhaW5lZCBieSBjYWxs
aW5nCiAvLyAgICAgICAgICBTaEdldEluZm8gd2l0aCBTSF9PQkpFQ1RfQ09ERV9MRU5HVEguCi12
b2lkIFNoR2V0T2JqZWN0Q29kZShjb25zdCBTaEhhbmRsZSBoYW5kbGUsIGNoYXIqIG9iakNvZGUp
OworQ09NUElMRVJfRVhQT1JUIHZvaWQgU2hHZXRPYmplY3RDb2RlKGNvbnN0IFNoSGFuZGxlIGhh
bmRsZSwgY2hhciogb2JqQ29kZSk7CiAKIC8vIFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYW4g
YWN0aXZlIGF0dHJpYnV0ZSB2YXJpYWJsZS4KIC8vIFBhcmFtZXRlcnM6CkBAIC0yNDIsMTMgKzI3
MCwxMyBAQCB2b2lkIFNoR2V0T2JqZWN0Q29kZShjb25zdCBTaEhhbmRsZSBoYW5kbGUsIGNoYXIq
IG9iakNvZGUpOwogLy8gICAgICAgICAgICAgbWVtb3J5IChTSF9NQVBQRURfTkFNRV9NQVhfTEVO
R1RIKSwgb3IgTlVMTCBpZiBkb24ndCBjYXJlCiAvLyAgICAgICAgICAgICBhYm91dCB0aGUgbWFw
cGVkIG5hbWUuIElmIHRoZSBuYW1lIGlzIG5vdCBtYXBwZWQsIHRoZW4gbmFtZSBhbmQKIC8vICAg
ICAgICAgICAgIG1hcHBlZE5hbWUgYXJlIHRoZSBzYW1lLgotdm9pZCBTaEdldEFjdGl2ZUF0dHJp
Yihjb25zdCBTaEhhbmRsZSBoYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50KiBsZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgIGludCogc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgU2hEYXRhVHlwZSogdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY2hhciogbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciogbWFwcGVkTmFtZSk7CitDT01QSUxFUl9FWFBPUlQgdm9pZCBTaEdldEFjdGl2
ZUF0dHJpYihjb25zdCBTaEhhbmRsZSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQqIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCogc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
RGF0YVR5cGUqIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciog
bWFwcGVkTmFtZSk7CiAKIC8vIFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYW4gYWN0aXZlIHVu
aWZvcm0gdmFyaWFibGUuCiAvLyBQYXJhbWV0ZXJzOgpAQCAtMjY5LDEzICsyOTcsMTMgQEAgdm9p
ZCBTaEdldEFjdGl2ZUF0dHJpYihjb25zdCBTaEhhbmRsZSBoYW5kbGUsCiAvLyAgICAgICAgICAg
ICBtZW1vcnkgKFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEgpLCBvciBOVUxMIGlmIGRvbid0IGNh
cmUKIC8vICAgICAgICAgICAgIGFib3V0IHRoZSBtYXBwZWQgbmFtZS4gSWYgdGhlIG5hbWUgaXMg
bm90IG1hcHBlZCwgdGhlbiBuYW1lIGFuZAogLy8gICAgICAgICAgICAgbWFwcGVkTmFtZSBhcmUg
dGhlIHNhbWUuCi12b2lkIFNoR2V0QWN0aXZlVW5pZm9ybShjb25zdCBTaEhhbmRsZSBoYW5kbGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpbnQqIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCogc2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFNoRGF0YVR5cGUqIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyKiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogbWFwcGVk
TmFtZSk7CitDT01QSUxFUl9FWFBPUlQgdm9pZCBTaEdldEFjdGl2ZVVuaWZvcm0oY29uc3QgU2hI
YW5kbGUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hEYXRhVHlwZSogdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG1hcHBlZE5hbWUp
OwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vZGVidWcuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9kZWJ1Zy5jcHAKaW5kZXggNGRkNzMyN2U3OTY2OGVmYmQxODA1MTNlOGZmOTA4NDhk
OWQ0MzdlOS4uODFhMTgzZThmMjEzNmY1MTAzZThlZDYwMDI0NzUxZjhiODA3YzNmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAKQEAgLTEsOTcgKzEs
MTAzIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBkZWJ1Zy5jcHA6IERlYnVnZ2luZyB1dGls
aXRpZXMuCi0KLSNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKLQotI2luY2x1ZGUgPHN0ZGlvLmg+
Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jaW5jbHVkZSA8ZDNkOS5oPgotI2luY2x1ZGUgPHdpbmRv
d3MuaD4KLQotbmFtZXNwYWNlIGdsCi17Ci0KLXR5cGVkZWYgdm9pZCAoV0lOQVBJICpQZXJmT3V0
cHV0RnVuY3Rpb24pKEQzRENPTE9SLCBMUENXU1RSKTsKLQotc3RhdGljIHZvaWQgb3V0cHV0KGJv
b2wgdHJhY2VGaWxlRGVidWdPbmx5LCBQZXJmT3V0cHV0RnVuY3Rpb24gcGVyZkZ1bmMsIGNvbnN0
IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJhcmcpCi17Ci0jaWYgIWRlZmluZWQoQU5HTEVfRElT
QUJMRV9QRVJGKQotICAgIGlmIChwZXJmQWN0aXZlKCkpCi0gICAgewotICAgICAgICBjaGFyIG1l
c3NhZ2VbNDA5Nl07Ci0gICAgICAgIGludCBsZW4gPSB2c3ByaW50Zl9zKG1lc3NhZ2UsIGZvcm1h
dCwgdmFyYXJnKTsKLSAgICAgICAgaWYgKGxlbiA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRoZXJlIGFyZSBubyBBU0NJSSB2YXJp
YW50cyBvZiB0aGVzZSBEM0RQRVJGIGZ1bmN0aW9ucy4KLSAgICAgICAgd2NoYXJfdCB3aWRlTWVz
c2FnZVs0MDk2XTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkKLSAgICAg
ICAgewotICAgICAgICAgICAgd2lkZU1lc3NhZ2VbaV0gPSBtZXNzYWdlW2ldOwotICAgICAgICB9
Ci0gICAgICAgIHdpZGVNZXNzYWdlW2xlbl0gPSAwOwotCi0gICAgICAgIHBlcmZGdW5jKDAsIHdp
ZGVNZXNzYWdlKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEFOR0xFX0RJU0FCTEVf
VFJBQ0UpCi0jaWYgZGVmaW5lZChOREVCVUcpCi0gICAgaWYgKHRyYWNlRmlsZURlYnVnT25seSkK
LSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIEZJTEUqIGZpbGUg
PSBmb3BlbihUUkFDRV9PVVRQVVRfRklMRSwgImEiKTsKLSAgICBpZiAoZmlsZSkKLSAgICB7Ci0g
ICAgICAgIHZmcHJpbnRmKGZpbGUsIGZvcm1hdCwgdmFyYXJnKTsKLSAgICAgICAgZmNsb3NlKGZp
bGUpOwotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIHRyYWNlKGJvb2wgdHJhY2VGaWxlRGVidWdP
bmx5LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLXsKLSAgICB2YV9saXN0IHZhcmFyZzsKLSAg
ICB2YV9zdGFydCh2YXJhcmcsIGZvcm1hdCk7Ci0gICAgb3V0cHV0KHRyYWNlRmlsZURlYnVnT25s
eSwgRDNEUEVSRl9TZXRNYXJrZXIsIGZvcm1hdCwgdmFyYXJnKTsKLSAgICB2YV9lbmQodmFyYXJn
KTsKLX0KLQotYm9vbCBwZXJmQWN0aXZlKCkKLXsKLSNpZiBkZWZpbmVkKEFOR0xFX0RJU0FCTEVf
UEVSRikKLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIHN0YXRpYyBib29sIGFjdGl2ZSA9
IEQzRFBFUkZfR2V0U3RhdHVzKCkgIT0gMDsKLSAgICByZXR1cm4gYWN0aXZlOwotI2VuZGlmCi19
Ci0KLVNjb3BlZFBlcmZFdmVudEhlbHBlcjo6U2NvcGVkUGVyZkV2ZW50SGVscGVyKGNvbnN0IGNo
YXIqIGZvcm1hdCwgLi4uKQotewotICAgIHZhX2xpc3QgdmFyYXJnOwotICAgIHZhX3N0YXJ0KHZh
cmFyZywgZm9ybWF0KTsKLSAgICBvdXRwdXQodHJ1ZSwgcmVpbnRlcnByZXRfY2FzdDxQZXJmT3V0
cHV0RnVuY3Rpb24+KEQzRFBFUkZfQmVnaW5FdmVudCksIGZvcm1hdCwgdmFyYXJnKTsKLSAgICB2
YV9lbmQodmFyYXJnKTsKLX0KLQotU2NvcGVkUGVyZkV2ZW50SGVscGVyOjp+U2NvcGVkUGVyZkV2
ZW50SGVscGVyKCkKLXsKLSNpZiAhZGVmaW5lZChBTkdMRV9ESVNBQkxFX1BFUkYpCi0gICAgaWYg
KHBlcmZBY3RpdmUoKSkKLSAgICB7Ci0gICAgICAgIEQzRFBFUkZfRW5kRXZlbnQoKTsKLSAgICB9
Ci0jZW5kaWYKLX0KLX0KKy8vDQorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
DQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisvLw0KKw0KKy8vIGRlYnVnLmNwcDog
RGVidWdnaW5nIHV0aWxpdGllcy4NCisNCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiDQorDQor
I2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0ZGFyZy5oPg0KKyNpbmNsdWRlIDxkM2Q5
Lmg+DQorI2luY2x1ZGUgPHdpbmRvd3MuaD4NCisNCituYW1lc3BhY2UgZ2wNCit7DQorDQordHlw
ZWRlZiB2b2lkIChXSU5BUEkgKlBlcmZPdXRwdXRGdW5jdGlvbikoRDNEQ09MT1IsIExQQ1dTVFIp
Ow0KKw0KK3N0YXRpYyB2b2lkIG91dHB1dChib29sIHRyYWNlRmlsZURlYnVnT25seSwgUGVyZk91
dHB1dEZ1bmN0aW9uIHBlcmZGdW5jLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmFyYXJn
KQ0KK3sNCisjaWYgIWRlZmluZWQoQU5HTEVfRElTQUJMRV9QRVJGKQ0KKyAgICBpZiAocGVyZkFj
dGl2ZSgpKQ0KKyAgICB7DQorICAgICAgICBjaGFyIG1lc3NhZ2VbNDA5Nl07DQorICAgICAgICBp
bnQgbGVuID0gdnNwcmludGZfcyhtZXNzYWdlLCBmb3JtYXQsIHZhcmFyZyk7DQorICAgICAgICBp
ZiAobGVuIDwgMCkNCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9
DQorDQorICAgICAgICAvLyBUaGVyZSBhcmUgbm8gQVNDSUkgdmFyaWFudHMgb2YgdGhlc2UgRDNE
UEVSRiBmdW5jdGlvbnMuDQorICAgICAgICB3Y2hhcl90IHdpZGVNZXNzYWdlWzQwOTZdOw0KKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkNCisgICAgICAgIHsNCisgICAgICAg
ICAgICB3aWRlTWVzc2FnZVtpXSA9IG1lc3NhZ2VbaV07DQorICAgICAgICB9DQorICAgICAgICB3
aWRlTWVzc2FnZVtsZW5dID0gMDsNCisNCisgICAgICAgIHBlcmZGdW5jKDAsIHdpZGVNZXNzYWdl
KTsNCisgICAgfQ0KKyNlbmRpZg0KKw0KKyNpZiAhZGVmaW5lZChBTkdMRV9ESVNBQkxFX1RSQUNF
KQ0KKyNpZiBkZWZpbmVkKE5ERUJVRykNCisgICAgaWYgKHRyYWNlRmlsZURlYnVnT25seSkNCisg
ICAgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorI2VuZGlmDQorDQorICAgIEZJTEUqIGZp
bGUgPSBmb3BlbihUUkFDRV9PVVRQVVRfRklMRSwgImEiKTsNCisgICAgaWYgKGZpbGUpDQorICAg
IHsNCisgICAgICAgIHZmcHJpbnRmKGZpbGUsIGZvcm1hdCwgdmFyYXJnKTsNCisgICAgICAgIGZj
bG9zZShmaWxlKTsNCisgICAgfQ0KKyNlbmRpZg0KK30NCisNCit2b2lkIHRyYWNlKGJvb2wgdHJh
Y2VGaWxlRGVidWdPbmx5LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikNCit7DQorICAgIHZhX2xp
c3QgdmFyYXJnOw0KKyAgICB2YV9zdGFydCh2YXJhcmcsIGZvcm1hdCk7DQorI2lmIGRlZmluZWQo
QU5HTEVfRElTQUJMRV9QRVJGKQ0KKyAgICBvdXRwdXQodHJhY2VGaWxlRGVidWdPbmx5LCBOVUxM
LCBmb3JtYXQsIHZhcmFyZyk7DQorI2Vsc2UNCisgICAgb3V0cHV0KHRyYWNlRmlsZURlYnVnT25s
eSwgRDNEUEVSRl9TZXRNYXJrZXIsIGZvcm1hdCwgdmFyYXJnKTsNCisjZW5kaWYNCisgICAgdmFf
ZW5kKHZhcmFyZyk7DQorfQ0KKw0KK2Jvb2wgcGVyZkFjdGl2ZSgpDQorew0KKyNpZiBkZWZpbmVk
KEFOR0xFX0RJU0FCTEVfUEVSRikNCisgICAgcmV0dXJuIGZhbHNlOw0KKyNlbHNlDQorICAgIHN0
YXRpYyBib29sIGFjdGl2ZSA9IEQzRFBFUkZfR2V0U3RhdHVzKCkgIT0gMDsNCisgICAgcmV0dXJu
IGFjdGl2ZTsNCisjZW5kaWYNCit9DQorDQorU2NvcGVkUGVyZkV2ZW50SGVscGVyOjpTY29wZWRQ
ZXJmRXZlbnRIZWxwZXIoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pDQorew0KKyNpZiAhZGVmaW5l
ZChBTkdMRV9ESVNBQkxFX1BFUkYpDQorICAgIHZhX2xpc3QgdmFyYXJnOw0KKyAgICB2YV9zdGFy
dCh2YXJhcmcsIGZvcm1hdCk7DQorICAgIG91dHB1dCh0cnVlLCByZWludGVycHJldF9jYXN0PFBl
cmZPdXRwdXRGdW5jdGlvbj4oRDNEUEVSRl9CZWdpbkV2ZW50KSwgZm9ybWF0LCB2YXJhcmcpOw0K
KyAgICB2YV9lbmQodmFyYXJnKTsNCisjZW5kaWYNCit9DQorDQorU2NvcGVkUGVyZkV2ZW50SGVs
cGVyOjp+U2NvcGVkUGVyZkV2ZW50SGVscGVyKCkNCit7DQorI2lmICFkZWZpbmVkKEFOR0xFX0RJ
U0FCTEVfUEVSRikNCisgICAgaWYgKHBlcmZBY3RpdmUoKSkNCisgICAgew0KKyAgICAgICAgRDNE
UEVSRl9FbmRFdmVudCgpOw0KKyAgICB9DQorI2VuZGlmDQorfQ0KK30NCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3ZlcnNpb24uaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVyc2lvbi5oCmluZGV4IDQ3NjMzMzJlNzIwZDQ3MGNl
NDYyYTlhODQ0NzMyMjAzM2EyZTMzMGIuLjBmOTJjMmMyYzkzODQwZDNlMjkyOTg0MWFlNjM1Mzli
MDQzNmE3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
dmVyc2lvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVyc2lv
bi5oCkBAIC0xLDcgKzEsNyBAQAotI2RlZmluZSBNQUpPUl9WRVJTSU9OIDAKKyNkZWZpbmUgTUFK
T1JfVkVSU0lPTiAxCiAjZGVmaW5lIE1JTk9SX1ZFUlNJT04gMAogI2RlZmluZSBCVUlMRF9WRVJT
SU9OIDAKLSNkZWZpbmUgQlVJTERfUkVWSVNJT04gNjk2CisjZGVmaW5lIEJVSUxEX1JFVklTSU9O
IDkzOQogCiAjZGVmaW5lIFNUUklOR0lGWSh4KSAjeAogI2RlZmluZSBNQUNST19TVFJJTkdJRlko
eCkgU1RSSU5HSUZZKHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvQmFzZVR5cGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvQmFzZVR5cGVzLmgKaW5kZXggOWY0YTg2MDIwNDk5ODkwMGM4YzI5NWQ1ZmU0ZTY5ZmE1ZTY1
ZTIyNC4uNTViMWY5YTE1ZGVkNmRhMDY1MzIxYTBmYzdkMzZiZGNiZDQ5OTliMiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CYXNlVHlwZXMuaApAQCAtNDIs
NiArNDIsOCBAQCBlbnVtIFRCYXNpY1R5cGUKICAgICBFYnRHdWFyZFNhbXBsZXJCZWdpbiwgIC8v
IG5vbiB0eXBlOiAgc2VlIGltcGxlbWVudGF0aW9uIG9mIElzU2FtcGxlcigpCiAgICAgRWJ0U2Ft
cGxlcjJELAogICAgIEVidFNhbXBsZXJDdWJlLAorICAgIEVidFNhbXBsZXJFeHRlcm5hbE9FUywg
IC8vIE9ubHkgdmFsaWQgaWYgT0VTX0VHTF9pbWFnZV9leHRlcm5hbCBleGlzdHMuCisgICAgRWJ0
U2FtcGxlcjJEUmVjdCwgICAgICAgLy8gT25seSB2YWxpZCBpZiBHTF9BUkJfdGV4dHVyZV9yZWN0
YW5nbGUgZXhpc3RzLgogICAgIEVidEd1YXJkU2FtcGxlckVuZCwgICAgLy8gbm9uIHR5cGU6ICBz
ZWUgaW1wbGVtZW50YXRpb24gb2YgSXNTYW1wbGVyKCkKICAgICBFYnRTdHJ1Y3QsCiAgICAgRWJ0
QWRkcmVzcywgICAgICAgICAgICAvLyBzaG91bGQgYmUgZGVwcmVjYXRlZD8/CkBAIC01Nyw2ICs1
OSw4IEBAIGlubGluZSBjb25zdCBjaGFyKiBnZXRCYXNpY1N0cmluZyhUQmFzaWNUeXBlIHQpCiAg
ICAgY2FzZSBFYnRCb29sOiAgICAgICAgICAgICAgcmV0dXJuICJib29sIjsgICAgICAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRWJ0U2FtcGxlcjJEOiAgICAgICAgIHJldHVybiAic2FtcGxlcjJE
IjsgICAgICAgICBicmVhazsKICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOiAgICAgICByZXR1cm4g
InNhbXBsZXJDdWJlIjsgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxP
RVM6IHJldHVybiAic2FtcGxlckV4dGVybmFsT0VTIjsgYnJlYWs7CisgICAgY2FzZSBFYnRTYW1w
bGVyMkRSZWN0OiAgICAgcmV0dXJuICJzYW1wbGVyMkRSZWN0IjsgICAgIGJyZWFrOwogICAgIGNh
c2UgRWJ0U3RydWN0OiAgICAgICAgICAgIHJldHVybiAic3RydWN0dXJlIjsgICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICByZXR1cm4gInVua25vd24gdHlwZSI7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc5NTBi
OTkwMGNhNzViZjUwYjc5ZjEzMjU5ZWI5MDhiZTRiOWQ5MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5jcHAKQEAgLTAsMCArMSw0MzUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJj
b21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIgorCisjaW5jbHVkZSAiY29tcGlsZXIv
U3ltYm9sVGFibGUuaCIKKworbmFtZXNwYWNlIHsKKworLy8gd2UgdXNlIG1hY3JvcyBoZXJlIGlu
c3RlYWQgb2YgZnVuY3Rpb24gZGVmaW5pdGlvbnMgdG8gd29yayBhcm91bmQgbW9yZSBHTFNMCisv
LyBjb21waWxlciBidWdzLCBpbiBwYXJ0aWN1bGFyIG9uIE5WSURJQSBoYXJkd2FyZSBvbiBNYWMg
T1NYLiBNYWNyb3MgYXJlCisvLyBwcm9ibGVtYXRpYyBiZWNhdXNlIGlmIHRoZSBhcmd1bWVudCBo
YXMgc2lkZS1lZmZlY3RzIHRoZXkgd2lsbCBiZSByZXBlYXRlZGx5CisvLyBldmFsdWF0ZWQuIFRo
aXMgaXMgdW5saWtlbHkgdG8gc2hvdyB1cCBpbiByZWFsIHNoYWRlcnMsIGJ1dCBpcyBzb21ldGhp
bmcgdG8KKy8vIGNvbnNpZGVyLgorY29uc3QgY2hhcioga0Z1bmN0aW9uRW11bGF0aW9uVmVydGV4
U291cmNlW10gPSB7CisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIGF0YW4oZmxvYXQsIGZs
b2F0KSIsCisgICAgInZlYzIgd2ViZ2xfYXRhbl9lbXUodmVjMiB5LCB2ZWMyIHgpIHsgcmV0dXJu
IHZlYzIoYXRhbih5WzBdLCB4WzBdKSwgYXRhbih5WzFdLCB4WzFdKSk7IH0iLAorICAgICJ2ZWMz
IHdlYmdsX2F0YW5fZW11KHZlYzMgeSwgdmVjMyB4KSB7IHJldHVybiB2ZWMzKGF0YW4oeVswXSwg
eFswXSksIGF0YW4oeVsxXSwgeFsxXSksIGF0YW4oeVsyXSwgeFsyXSkpOyB9IiwKKyAgICAidmVj
NCB3ZWJnbF9hdGFuX2VtdSh2ZWM0IHksIHZlYzQgeCkgeyByZXR1cm4gdmVjNChhdGFuKHlbMF0s
IHhbMF0pLCBhdGFuKHlbMV0sIHhbMV0pLCBhdGFuKHlbMl0sIHhbMl0pLCBhdGFuKHlbM10sIHhb
M10pKTsgfSIsCisKKyAgICAiI2Vycm9yIG5vIGVtdWxhdGlvbiBmb3IgY29zKGZsb2F0KSIsCisg
ICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIGNvcyh2ZWMyKSIsCisgICAgIiNlcnJvciBubyBl
bXVsYXRpb24gZm9yIGNvcyh2ZWMzKSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIGNv
cyh2ZWM0KSIsCisKKyAgICAiI2RlZmluZSB3ZWJnbF9kaXN0YW5jZV9lbXUoeCwgeSkgKCh4KSA+
PSAoeSkgPyAoeCkgLSAoeSkgOiAoeSkgLSAoeCkpIiwKKyAgICAiI2Vycm9yIG5vIGVtdWxhdGlv
biBmb3IgZGlzdGFuY2UodmVjMiwgdmVjMikiLAorICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZv
ciBkaXN0YW5jZSh2ZWMzLCB2ZWMzKSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIGRp
c3RhbmNlKHZlYzQsIHZlYzQpIiwKKworICAgICIjZGVmaW5lIHdlYmdsX2RvdF9lbXUoeCwgeSkg
KCh4KSAqICh5KSkiLAorICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciBkb3QodmVjMiwgdmVj
MikiLAorICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciBkb3QodmVjMywgdmVjMykiLAorICAg
ICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciBkb3QodmVjNCwgdmVjNCkiLAorCisgICAgIiNkZWZp
bmUgd2ViZ2xfbGVuZ3RoX2VtdSh4KSAoKHgpID49IDAuMCA/ICh4KSA6IC0oeCkpIiwKKyAgICAi
I2Vycm9yIG5vIGVtdWxhdGlvbiBmb3IgbGVuZ3RoKHZlYzIpIiwKKyAgICAiI2Vycm9yIG5vIGVt
dWxhdGlvbiBmb3IgbGVuZ3RoKHZlYzMpIiwKKyAgICAiI2Vycm9yIG5vIGVtdWxhdGlvbiBmb3Ig
bGVuZ3RoKHZlYzQpIiwKKworICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciBtb2QoZmxvYXQs
IGZsb2F0KSIsCisgICAgInZlYzIgd2ViZ2xfbW9kX2VtdSh2ZWMyIHgsIHZlYzIgeSkgeyByZXR1
cm4gdmVjMihtb2QoeFswXSwgeVswXSksIG1vZCh4WzFdLCB5WzFdKSk7IH0iLAorICAgICJ2ZWMz
IHdlYmdsX21vZF9lbXUodmVjMyB4LCB2ZWMzIHkpIHsgcmV0dXJuIHZlYzMobW9kKHhbMF0sIHlb
MF0pLCBtb2QoeFsxXSwgeVsxXSksIG1vZCh4WzJdLCB5WzJdKSk7IH0iLAorICAgICJ2ZWM0IHdl
YmdsX21vZF9lbXUodmVjNCB4LCB2ZWM0IHkpIHsgcmV0dXJuIHZlYzQobW9kKHhbMF0sIHlbMF0p
LCBtb2QoeFsxXSwgeVsxXSksIG1vZCh4WzJdLCB5WzJdKSwgbW9kKHhbM10sIHlbM10pKTsgfSIs
CisKKyAgICAiI2RlZmluZSB3ZWJnbF9ub3JtYWxpemVfZW11KHgpICgoeCkgPT0gMC4wID8gMC4w
IDogKCh4KSA+IDAuMCA/IDEuMCA6IC0xLjApKSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24g
Zm9yIG5vcm1hbGl6ZSh2ZWMyKSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIG5vcm1h
bGl6ZSh2ZWMzKSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIG5vcm1hbGl6ZSh2ZWM0
KSIsCisKKyAgICAiI2RlZmluZSB3ZWJnbF9yZWZsZWN0X2VtdShJLCBOKSAoKEkpIC0gMi4wICog
KE4pICogKEkpICogKE4pKSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIHJlZmxlY3Qo
dmVjMiwgdmVjMikiLAorICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciByZWZsZWN0KHZlYzMs
IHZlYzMpIiwKKyAgICAiI2Vycm9yIG5vIGVtdWxhdGlvbiBmb3IgcmVmbGVjdCh2ZWM0LCB2ZWM0
KSIKK307CisKK2NvbnN0IGNoYXIqIGtGdW5jdGlvbkVtdWxhdGlvbkZyYWdtZW50U291cmNlW10g
PSB7CisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIGF0YW4oZmxvYXQsIGZsb2F0KSIsCisg
ICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIGF0YW4odmVjMiwgdmVjMikiLAorICAgICIjZXJy
b3Igbm8gZW11bGF0aW9uIGZvciBhdGFuKHZlYzMsIHZlYzMpIiwKKyAgICAiI2Vycm9yIG5vIGVt
dWxhdGlvbiBmb3IgYXRhbih2ZWM0LCB2ZWM0KSIsCisKKyAgICAid2ViZ2xfZW11X3ByZWNpc2lv
biBmbG9hdCB3ZWJnbF9jb3NfZW11KHdlYmdsX2VtdV9wcmVjaXNpb24gZmxvYXQgYSkgeyByZXR1
cm4gY29zKGEpOyB9IiwKKyAgICAid2ViZ2xfZW11X3ByZWNpc2lvbiB2ZWMyIHdlYmdsX2Nvc19l
bXUod2ViZ2xfZW11X3ByZWNpc2lvbiB2ZWMyIGEpIHsgcmV0dXJuIGNvcyhhKTsgfSIsCisgICAg
IndlYmdsX2VtdV9wcmVjaXNpb24gdmVjMyB3ZWJnbF9jb3NfZW11KHdlYmdsX2VtdV9wcmVjaXNp
b24gdmVjMyBhKSB7IHJldHVybiBjb3MoYSk7IH0iLAorICAgICJ3ZWJnbF9lbXVfcHJlY2lzaW9u
IHZlYzQgd2ViZ2xfY29zX2VtdSh3ZWJnbF9lbXVfcHJlY2lzaW9uIHZlYzQgYSkgeyByZXR1cm4g
Y29zKGEpOyB9IiwKKworICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciBkaXN0YW5jZShmbG9h
dCwgZmxvYXQpIiwKKyAgICAiI2Vycm9yIG5vIGVtdWxhdGlvbiBmb3IgZGlzdGFuY2UodmVjMiwg
dmVjMikiLAorICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciBkaXN0YW5jZSh2ZWMzLCB2ZWMz
KSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIGRpc3RhbmNlKHZlYzQsIHZlYzQpIiwK
KworICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciBkb3QoZmxvYXQsIGZsb2F0KSIsCisgICAg
IiNlcnJvciBubyBlbXVsYXRpb24gZm9yIGRvdCh2ZWMyLCB2ZWMyKSIsCisgICAgIiNlcnJvciBu
byBlbXVsYXRpb24gZm9yIGRvdCh2ZWMzLCB2ZWMzKSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRp
b24gZm9yIGRvdCh2ZWM0LCB2ZWM0KSIsCisKKyAgICAiI2Vycm9yIG5vIGVtdWxhdGlvbiBmb3Ig
bGVuZ3RoKGZsb2F0KSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIGxlbmd0aCh2ZWMy
KSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIGxlbmd0aCh2ZWMzKSIsCisgICAgIiNl
cnJvciBubyBlbXVsYXRpb24gZm9yIGxlbmd0aCh2ZWM0KSIsCisKKyAgICAiI2Vycm9yIG5vIGVt
dWxhdGlvbiBmb3IgbW9kKGZsb2F0LCBmbG9hdCkiLAorICAgICIjZXJyb3Igbm8gZW11bGF0aW9u
IGZvciBtb2QodmVjMiwgdmVjMikiLAorICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciBtb2Qo
dmVjMywgdmVjMykiLAorICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciBtb2QodmVjNCwgdmVj
NCkiLAorCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9yIG5vcm1hbGl6ZShmbG9hdCkiLAor
ICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciBub3JtYWxpemUodmVjMikiLAorICAgICIjZXJy
b3Igbm8gZW11bGF0aW9uIGZvciBub3JtYWxpemUodmVjMykiLAorICAgICIjZXJyb3Igbm8gZW11
bGF0aW9uIGZvciBub3JtYWxpemUodmVjNCkiLAorCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24g
Zm9yIHJlZmxlY3QoZmxvYXQsIGZsb2F0KSIsCisgICAgIiNlcnJvciBubyBlbXVsYXRpb24gZm9y
IHJlZmxlY3QodmVjMiwgdmVjMikiLAorICAgICIjZXJyb3Igbm8gZW11bGF0aW9uIGZvciByZWZs
ZWN0KHZlYzMsIHZlYzMpIiwKKyAgICAiI2Vycm9yIG5vIGVtdWxhdGlvbiBmb3IgcmVmbGVjdCh2
ZWM0LCB2ZWM0KSIKK307CisKK2NvbnN0IGJvb2wga0Z1bmN0aW9uRW11bGF0aW9uVmVydGV4TWFz
a1tdID0geworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIC8vIFdvcmsgYXJvdW5kIEFUSSBk
cml2ZXIgYnVncyBpbiBNYWMuCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkF0YW4xXzEKKyAgICBm
YWxzZSwgLy8gVEZ1bmN0aW9uQXRhbjJfMgorICAgIGZhbHNlLCAvLyBURnVuY3Rpb25BdGFuM18z
CisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkF0YW40XzQKKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9u
Q29zMQorICAgIGZhbHNlLCAvLyBURnVuY3Rpb25Db3MyCisgICAgZmFsc2UsIC8vIFRGdW5jdGlv
bkNvczMKKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uQ29zNAorICAgIHRydWUsICAvLyBURnVuY3Rp
b25EaXN0YW5jZTFfMQorICAgIGZhbHNlLCAvLyBURnVuY3Rpb25EaXN0YW5jZTJfMgorICAgIGZh
bHNlLCAvLyBURnVuY3Rpb25EaXN0YW5jZTNfMworICAgIGZhbHNlLCAvLyBURnVuY3Rpb25EaXN0
YW5jZTRfNAorICAgIHRydWUsICAvLyBURnVuY3Rpb25Eb3QxXzEKKyAgICBmYWxzZSwgLy8gVEZ1
bmN0aW9uRG90Ml8yCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkRvdDNfMworICAgIGZhbHNlLCAv
LyBURnVuY3Rpb25Eb3Q0XzQKKyAgICB0cnVlLCAgLy8gVEZ1bmN0aW9uTGVuZ3RoMQorICAgIGZh
bHNlLCAvLyBURnVuY3Rpb25MZW5ndGgyCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkxlbmd0aDMK
KyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uTGVuZ3RoNAorICAgIGZhbHNlLCAvLyBURnVuY3Rpb25N
b2QxXzEKKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uTW9kMl8yCisgICAgZmFsc2UsIC8vIFRGdW5j
dGlvbk1vZDNfMworICAgIGZhbHNlLCAvLyBURnVuY3Rpb25Nb2Q0XzQKKyAgICB0cnVlLCAgLy8g
VEZ1bmN0aW9uTm9ybWFsaXplMQorICAgIGZhbHNlLCAvLyBURnVuY3Rpb25Ob3JtYWxpemUyCisg
ICAgZmFsc2UsIC8vIFRGdW5jdGlvbk5vcm1hbGl6ZTMKKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9u
Tm9ybWFsaXplNAorICAgIHRydWUsICAvLyBURnVuY3Rpb25SZWZsZWN0MV8xCisgICAgZmFsc2Us
IC8vIFRGdW5jdGlvblJlZmxlY3QyXzIKKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uUmVmbGVjdDNf
MworICAgIGZhbHNlLCAvLyBURnVuY3Rpb25SZWZsZWN0NF80CisjZWxzZQorICAgIC8vIFdvcmsg
YXJvdW5kIEQzRCBkcml2ZXIgYnVnIGluIFdpbi4KKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uQXRh
bjFfMQorICAgIHRydWUsICAvLyBURnVuY3Rpb25BdGFuMl8yCisgICAgdHJ1ZSwgIC8vIFRGdW5j
dGlvbkF0YW4zXzMKKyAgICB0cnVlLCAgLy8gVEZ1bmN0aW9uQXRhbjRfNAorICAgIGZhbHNlLCAv
LyBURnVuY3Rpb25Db3MxCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkNvczIKKyAgICBmYWxzZSwg
Ly8gVEZ1bmN0aW9uQ29zMworICAgIGZhbHNlLCAvLyBURnVuY3Rpb25Db3M0CisgICAgZmFsc2Us
IC8vIFRGdW5jdGlvbkRpc3RhbmNlMV8xCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkRpc3RhbmNl
Ml8yCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkRpc3RhbmNlM18zCisgICAgZmFsc2UsIC8vIFRG
dW5jdGlvbkRpc3RhbmNlNF80CisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkRvdDFfMQorICAgIGZh
bHNlLCAvLyBURnVuY3Rpb25Eb3QyXzIKKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uRG90M18zCisg
ICAgZmFsc2UsIC8vIFRGdW5jdGlvbkRvdDRfNAorICAgIGZhbHNlLCAvLyBURnVuY3Rpb25MZW5n
dGgxCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkxlbmd0aDIKKyAgICBmYWxzZSwgLy8gVEZ1bmN0
aW9uTGVuZ3RoMworICAgIGZhbHNlLCAvLyBURnVuY3Rpb25MZW5ndGg0CisgICAgZmFsc2UsIC8v
IFRGdW5jdGlvbk1vZDFfMQorICAgIHRydWUsICAvLyBURnVuY3Rpb25Nb2QyXzIKKyAgICB0cnVl
LCAgLy8gVEZ1bmN0aW9uTW9kM18zCisgICAgdHJ1ZSwgIC8vIFRGdW5jdGlvbk1vZDRfNAorICAg
IGZhbHNlLCAvLyBURnVuY3Rpb25Ob3JtYWxpemUxCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbk5v
cm1hbGl6ZTIKKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uTm9ybWFsaXplMworICAgIGZhbHNlLCAv
LyBURnVuY3Rpb25Ob3JtYWxpemU0CisgICAgZmFsc2UsIC8vIFRGdW5jdGlvblJlZmxlY3QxXzEK
KyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uUmVmbGVjdDJfMgorICAgIGZhbHNlLCAvLyBURnVuY3Rp
b25SZWZsZWN0M18zCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvblJlZmxlY3Q0XzQKKyNlbmRpZgor
ICAgIGZhbHNlICAvLyBURnVuY3Rpb25Vbmtub3duCit9OworCitjb25zdCBib29sIGtGdW5jdGlv
bkVtdWxhdGlvbkZyYWdtZW50TWFza1tdID0geworICAgIGZhbHNlLCAvLyBURnVuY3Rpb25BdGFu
MV8xCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkF0YW4yXzIKKyAgICBmYWxzZSwgLy8gVEZ1bmN0
aW9uQXRhbjNfMworICAgIGZhbHNlLCAvLyBURnVuY3Rpb25BdGFuNF80CisjaWYgZGVmaW5lZChf
X0FQUExFX18pCisgICAgLy8gV29yayBhcm91bmQgYSBBVEkgZHJpdmVyIGJ1ZyBpbiBNYWMgdGhh
dCBjYXVzZXMgY3Jhc2hlcy4KKyAgICB0cnVlLCAgLy8gVEZ1bmN0aW9uQ29zMQorICAgIHRydWUs
ICAvLyBURnVuY3Rpb25Db3MyCisgICAgdHJ1ZSwgIC8vIFRGdW5jdGlvbkNvczMKKyAgICB0cnVl
LCAgLy8gVEZ1bmN0aW9uQ29zNAorI2Vsc2UKKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uQ29zMQor
ICAgIGZhbHNlLCAvLyBURnVuY3Rpb25Db3MyCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkNvczMK
KyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uQ29zNAorI2VuZGlmCisgICAgZmFsc2UsIC8vIFRGdW5j
dGlvbkRpc3RhbmNlMV8xCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkRpc3RhbmNlMl8yCisgICAg
ZmFsc2UsIC8vIFRGdW5jdGlvbkRpc3RhbmNlM18zCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkRp
c3RhbmNlNF80CisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbkRvdDFfMQorICAgIGZhbHNlLCAvLyBU
RnVuY3Rpb25Eb3QyXzIKKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uRG90M18zCisgICAgZmFsc2Us
IC8vIFRGdW5jdGlvbkRvdDRfNAorICAgIGZhbHNlLCAvLyBURnVuY3Rpb25MZW5ndGgxCisgICAg
ZmFsc2UsIC8vIFRGdW5jdGlvbkxlbmd0aDIKKyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uTGVuZ3Ro
MworICAgIGZhbHNlLCAvLyBURnVuY3Rpb25MZW5ndGg0CisgICAgZmFsc2UsIC8vIFRGdW5jdGlv
bk1vZDFfMQorICAgIGZhbHNlLCAvLyBURnVuY3Rpb25Nb2QyXzIKKyAgICBmYWxzZSwgLy8gVEZ1
bmN0aW9uTW9kM18zCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbk1vZDRfNAorICAgIGZhbHNlLCAv
LyBURnVuY3Rpb25Ob3JtYWxpemUxCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvbk5vcm1hbGl6ZTIK
KyAgICBmYWxzZSwgLy8gVEZ1bmN0aW9uTm9ybWFsaXplMworICAgIGZhbHNlLCAvLyBURnVuY3Rp
b25Ob3JtYWxpemU0CisgICAgZmFsc2UsIC8vIFRGdW5jdGlvblJlZmxlY3QxXzEKKyAgICBmYWxz
ZSwgLy8gVEZ1bmN0aW9uUmVmbGVjdDJfMgorICAgIGZhbHNlLCAvLyBURnVuY3Rpb25SZWZsZWN0
M18zCisgICAgZmFsc2UsIC8vIFRGdW5jdGlvblJlZmxlY3Q0XzQKKyAgICBmYWxzZSAgLy8gVEZ1
bmN0aW9uVW5rbm93bgorfTsKKworY2xhc3MgQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uTWFya2Vy
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgeworcHVibGljOgorICAgIEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbk1hcmtlcihCdWlsdEluRnVuY3Rpb25FbXVsYXRvciYgZW11bGF0b3IpCisgICAg
ICAgIDogbUVtdWxhdG9yKGVtdWxhdG9yKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5KiBub2RlKQorICAgIHsKKyAg
ICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KSB7CisgICAgICAgICAgICBib29sIG5lZWRUb0Vt
dWxhdGUgPSBtRW11bGF0b3IuU2V0RnVuY3Rpb25DYWxsZWQoCisgICAgICAgICAgICAgICAgbm9k
ZS0+Z2V0T3AoKSwgbm9kZS0+Z2V0T3BlcmFuZCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAg
aWYgKG5lZWRUb0VtdWxhdGUpCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0VXNlRW11bGF0ZWRG
dW5jdGlvbigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0
ZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAg
ICAgICAgLy8gSGVyZSB3ZSBoYW5kbGUgYWxsIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgaW5zdGVh
ZCBvZiB0aGUgb25lcyB3ZQorICAgICAgICAgICAgLy8gY3VycmVudGx5IGlkZW50aWZpZWQgYXMg
cHJvYmxlbWF0aWMuCisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEVPcExlc3NUaGFuOgorICAgICAgICAgICAgICAgIGNhc2UgRU9wR3Jl
YXRlclRoYW46CisgICAgICAgICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgorICAgICAg
ICAgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKKyAgICAgICAgICAgICAgICBjYXNl
IEVPcFZlY3RvckVxdWFsOgorICAgICAgICAgICAgICAgIGNhc2UgRU9wVmVjdG9yTm90RXF1YWw6
CisgICAgICAgICAgICAgICAgY2FzZSBFT3BNb2Q6CisgICAgICAgICAgICAgICAgY2FzZSBFT3BQ
b3c6CisgICAgICAgICAgICAgICAgY2FzZSBFT3BBdGFuOgorICAgICAgICAgICAgICAgIGNhc2Ug
RU9wTWluOgorICAgICAgICAgICAgICAgIGNhc2UgRU9wTWF4OgorICAgICAgICAgICAgICAgIGNh
c2UgRU9wQ2xhbXA6CisgICAgICAgICAgICAgICAgY2FzZSBFT3BNaXg6CisgICAgICAgICAgICAg
ICAgY2FzZSBFT3BTdGVwOgorICAgICAgICAgICAgICAgIGNhc2UgRU9wU21vb3RoU3RlcDoKKyAg
ICAgICAgICAgICAgICBjYXNlIEVPcERpc3RhbmNlOgorICAgICAgICAgICAgICAgIGNhc2UgRU9w
RG90OgorICAgICAgICAgICAgICAgIGNhc2UgRU9wQ3Jvc3M6CisgICAgICAgICAgICAgICAgY2Fz
ZSBFT3BGYWNlRm9yd2FyZDoKKyAgICAgICAgICAgICAgICBjYXNlIEVPcFJlZmxlY3Q6CisgICAg
ICAgICAgICAgICAgY2FzZSBFT3BSZWZyYWN0OgorICAgICAgICAgICAgICAgIGNhc2UgRU9wTXVs
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH07CisgICAgICAg
ICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UmIHNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2Uo
KTsKKyAgICAgICAgICAgIC8vIFJpZ2h0IG5vdyB3ZSBvbmx5IGhhbmRsZSBidWlsdC1pbiBmdW5j
dGlvbnMgd2l0aCB0d28gcGFyYW1ldGVycy4KKyAgICAgICAgICAgIGlmIChzZXF1ZW5jZS5zaXpl
KCkgIT0gMikKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCogcGFyYW0xID0gc2VxdWVuY2VbMF0tPmdldEFzVHlwZWQoKTsKKyAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCogcGFyYW0yID0gc2VxdWVuY2VbMV0tPmdldEFzVHlwZWQoKTsKKyAgICAg
ICAgICAgIGlmICghcGFyYW0xIHx8ICFwYXJhbTIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICBib29sIG5lZWRUb0VtdWxhdGUgPSBtRW11bGF0b3IuU2V0RnVuY3Rp
b25DYWxsZWQoCisgICAgICAgICAgICAgICAgbm9kZS0+Z2V0T3AoKSwgcGFyYW0xLT5nZXRUeXBl
KCksIHBhcmFtMi0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIGlmIChuZWVkVG9FbXVsYXRlKQor
ICAgICAgICAgICAgICAgIG5vZGUtPnNldFVzZUVtdWxhdGVkRnVuY3Rpb24oKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3ImIG1FbXVsYXRvcjsKK307CisKK30gIC8vIGFub255bW91cyBuYW1lcHNh
Y2UKKworQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKFNo
U2hhZGVyVHlwZSBzaGFkZXJUeXBlKQoreworICAgIGlmIChzaGFkZXJUeXBlID09IFNIX0ZSQUdN
RU5UX1NIQURFUikgeworICAgICAgICBtRnVuY3Rpb25NYXNrID0ga0Z1bmN0aW9uRW11bGF0aW9u
RnJhZ21lbnRNYXNrOworICAgICAgICBtRnVuY3Rpb25Tb3VyY2UgPSBrRnVuY3Rpb25FbXVsYXRp
b25GcmFnbWVudFNvdXJjZTsKKyAgICB9IGVsc2UgeworICAgICAgICBtRnVuY3Rpb25NYXNrID0g
a0Z1bmN0aW9uRW11bGF0aW9uVmVydGV4TWFzazsKKyAgICAgICAgbUZ1bmN0aW9uU291cmNlID0g
a0Z1bmN0aW9uRW11bGF0aW9uVmVydGV4U291cmNlOworICAgIH0KK30KKworYm9vbCBCdWlsdElu
RnVuY3Rpb25FbXVsYXRvcjo6U2V0RnVuY3Rpb25DYWxsZWQoCisgICAgVE9wZXJhdG9yIG9wLCBj
b25zdCBUVHlwZSYgcGFyYW0pCit7CisgICAgVEJ1aWx0SW5GdW5jdGlvbiBmdW5jdGlvbiA9IElk
ZW50aWZ5RnVuY3Rpb24ob3AsIHBhcmFtKTsKKyAgICByZXR1cm4gU2V0RnVuY3Rpb25DYWxsZWQo
ZnVuY3Rpb24pOworfQorCitib29sIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpTZXRGdW5jdGlv
bkNhbGxlZCgKKyAgICBUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlJiBwYXJhbTEsIGNvbnN0IFRU
eXBlJiBwYXJhbTIpCit7CisgICAgVEJ1aWx0SW5GdW5jdGlvbiBmdW5jdGlvbiA9IElkZW50aWZ5
RnVuY3Rpb24ob3AsIHBhcmFtMSwgcGFyYW0yKTsKKyAgICByZXR1cm4gU2V0RnVuY3Rpb25DYWxs
ZWQoZnVuY3Rpb24pOworfQorCitib29sIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpTZXRGdW5j
dGlvbkNhbGxlZCgKKyAgICBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6VEJ1aWx0SW5GdW5jdGlv
biBmdW5jdGlvbikgeworICAgIGlmIChmdW5jdGlvbiA9PSBURnVuY3Rpb25Vbmtub3duIHx8IG1G
dW5jdGlvbk1hc2tbZnVuY3Rpb25dID09IGZhbHNlKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRnVuY3Rpb25zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChtRnVuY3Rpb25zW2ldID09IGZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIG1GdW5jdGlvbnMucHVzaF9iYWNrKGZ1bmN0aW9uKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6T3V0cHV0RW11bGF0
ZWRGdW5jdGlvbkRlZmluaXRpb24oCisgICAgVEluZm9TaW5rQmFzZSYgb3V0LCBib29sIHdpdGhQ
cmVjaXNpb24pIGNvbnN0Cit7CisgICAgaWYgKG1GdW5jdGlvbnMuc2l6ZSgpID09IDApCisgICAg
ICAgIHJldHVybjsKKyAgICBvdXQgPDwgIi8vIEJFR0lOOiBHZW5lcmF0ZWQgY29kZSBmb3IgYnVp
bHQtaW4gZnVuY3Rpb24gZW11bGF0aW9uXG5cbiI7CisgICAgaWYgKHdpdGhQcmVjaXNpb24pIHsK
KyAgICAgICAgb3V0IDw8ICIjaWYgZGVmaW5lZChHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSClc
biIKKyAgICAgICAgICAgIDw8ICIjZGVmaW5lIHdlYmdsX2VtdV9wcmVjaXNpb24gaGlnaHBcbiIK
KyAgICAgICAgICAgIDw8ICIjZWxzZVxuIgorICAgICAgICAgICAgPDwgIiNkZWZpbmUgd2ViZ2xf
ZW11X3ByZWNpc2lvbiBtZWRpdW1wXG4iCisgICAgICAgICAgICA8PCAiI2VuZGlmXG5cbiI7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIHdlYmdsX2VtdV9wcmVjaXNpb25c
blxuIjsKKyAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRnVuY3Rpb25zLnNpemUo
KTsgKytpKSB7CisgICAgICAgIG91dCA8PCBtRnVuY3Rpb25Tb3VyY2VbbUZ1bmN0aW9uc1tpXV0g
PDwgIlxuXG4iOworICAgIH0KKyAgICBvdXQgPDwgIi8vIEVORDogR2VuZXJhdGVkIGNvZGUgZm9y
IGJ1aWx0LWluIGZ1bmN0aW9uIGVtdWxhdGlvblxuXG4iOworfQorCitCdWlsdEluRnVuY3Rpb25F
bXVsYXRvcjo6VEJ1aWx0SW5GdW5jdGlvbgorQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OklkZW50
aWZ5RnVuY3Rpb24oCisgICAgVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSYgcGFyYW0pCit7Cisg
ICAgaWYgKHBhcmFtLmdldE5vbWluYWxTaXplKCkgPiA0KQorICAgICAgICByZXR1cm4gVEZ1bmN0
aW9uVW5rbm93bjsKKyAgICB1bnNpZ25lZCBpbnQgZnVuY3Rpb24gPSBURnVuY3Rpb25Vbmtub3du
OworICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBFT3BDb3M6CisgICAgICAgICAgICBm
dW5jdGlvbiA9IFRGdW5jdGlvbkNvczE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BMZW5ndGg6CisgICAgICAgICAgICBmdW5jdGlvbiA9IFRGdW5jdGlvbkxlbmd0aDE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BOb3JtYWxpemU6CisgICAgICAgICAg
ICBmdW5jdGlvbiA9IFRGdW5jdGlvbk5vcm1hbGl6ZTE7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoZnVuY3Rp
b24gPT0gVEZ1bmN0aW9uVW5rbm93bikKKyAgICAgICAgcmV0dXJuIFRGdW5jdGlvblVua25vd247
CisgICAgaWYgKHBhcmFtLmlzVmVjdG9yKCkpCisgICAgICAgIGZ1bmN0aW9uICs9IHBhcmFtLmdl
dE5vbWluYWxTaXplKCkgLSAxOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUQnVpbHRJbkZ1bmN0
aW9uPihmdW5jdGlvbik7Cit9CisKK0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpUQnVpbHRJbkZ1
bmN0aW9uCitCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6SWRlbnRpZnlGdW5jdGlvbigKKyAgICBU
T3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlJiBwYXJhbTEsIGNvbnN0IFRUeXBlJiBwYXJhbTIpCit7
CisgICAgLy8gUmlnaHQgbm93IGZvciBhbGwgdGhlIGVtdWxhdGVkIGZ1bmN0aW9ucyB3aXRoIHR3
byBwYXJhbWV0ZXJzLCB0aGUgdHdvCisgICAgLy8gcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIHR5
cGUuCisgICAgaWYgKHBhcmFtMS5pc1ZlY3RvcigpICE9IHBhcmFtMi5pc1ZlY3RvcigpIHx8Cisg
ICAgICAgIHBhcmFtMS5nZXROb21pbmFsU2l6ZSgpICE9IHBhcmFtMi5nZXROb21pbmFsU2l6ZSgp
IHx8CisgICAgICAgIHBhcmFtMS5nZXROb21pbmFsU2l6ZSgpID4gNCkKKyAgICAgICAgcmV0dXJu
IFRGdW5jdGlvblVua25vd247CisKKyAgICB1bnNpZ25lZCBpbnQgZnVuY3Rpb24gPSBURnVuY3Rp
b25Vbmtub3duOworICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBFT3BBdGFuOgorICAg
ICAgICAgICAgZnVuY3Rpb24gPSBURnVuY3Rpb25BdGFuMV8xOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wRGlzdGFuY2U6CisgICAgICAgICAgICBmdW5jdGlvbiA9IFRGdW5j
dGlvbkRpc3RhbmNlMV8xOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wRG90
OgorICAgICAgICAgICAgZnVuY3Rpb24gPSBURnVuY3Rpb25Eb3QxXzE7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFT3BNb2Q6CisgICAgICAgICAgICBmdW5jdGlvbiA9IFRGdW5j
dGlvbk1vZDFfMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFJlZmxlY3Q6
CisgICAgICAgICAgICBmdW5jdGlvbiA9IFRGdW5jdGlvblJlZmxlY3QxXzE7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBpZiAoZnVuY3Rpb24gPT0gVEZ1bmN0aW9uVW5rbm93bikKKyAgICAgICAgcmV0dXJuIFRGdW5j
dGlvblVua25vd247CisgICAgaWYgKHBhcmFtMS5pc1ZlY3RvcigpKQorICAgICAgICBmdW5jdGlv
biArPSBwYXJhbTEuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFRCdWlsdEluRnVuY3Rpb24+KGZ1bmN0aW9uKTsKK30KKwordm9pZCBCdWlsdEluRnVuY3Rpb25F
bXVsYXRvcjo6TWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRpb24oCisgICAgVEludGVybU5v
ZGUqIHJvb3QpCit7CisgICAgQVNTRVJUKHJvb3QpOworCisgICAgQnVpbHRJbkZ1bmN0aW9uRW11
bGF0aW9uTWFya2VyIG1hcmtlcigqdGhpcyk7CisgICAgcm9vdC0+dHJhdmVyc2UoJm1hcmtlcik7
Cit9CisKK3ZvaWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkNsZWFudXAoKQoreworICAgIG1G
dW5jdGlvbnMuY2xlYXIoKTsKK30KKworLy9zdGF0aWMKK1RTdHJpbmcgQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3I6OkdldEVtdWxhdGVkRnVuY3Rpb25OYW1lKAorICAgIGNvbnN0IFRTdHJpbmcmIG5h
bWUpCit7CisgICAgQVNTRVJUKG5hbWVbbmFtZS5sZW5ndGgoKSAtIDFdID09ICcoJyk7CisgICAg
cmV0dXJuICJ3ZWJnbF8iICsgbmFtZS5zdWJzdHIoMCwgbmFtZS5sZW5ndGgoKSAtIDEpICsgIl9l
bXUoIjsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzdiNjY1
MzVkY2NkYzY3ZWQ4OTZkOGZjNTJhMjhiNjc0MjczNWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIENPTVBJTElFUl9C
VUlMVF9JTl9GVU5DVElPTl9FTVVMQVRPUl9IXworI2RlZmluZSBDT01QSUxJRVJfQlVJTFRfSU5f
RlVOQ1RJT05fRU1VTEFUT1JfSF8KKworI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgor
CisjaW5jbHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIKKyNpbmNsdWRlICJjb21waWxlci9pbnRl
cm1lZGlhdGUuaCIKKworLy8KKy8vIFRoaXMgY2xhc3MgZGVjaWRlcyB3aGljaCBidWlsdC1pbiBm
dW5jdGlvbnMgbmVlZCB0byBiZSByZXBsYWNlZCB3aXRoIHRoZQorLy8gZW11bGF0ZWQgb25lcy4K
Ky8vIEl0J3Mgb25seSBhIHdvcmthcm91bmQgZm9yIE9wZW5HTCBkcml2ZXIgYnVncywgYW5kIGlz
bid0IG5lZWRlZCBpbiBnZW5lcmFsLgorLy8KK2NsYXNzIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
IHsKK3B1YmxpYzoKKyAgICBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcihTaFNoYWRlclR5cGUgc2hh
ZGVyVHlwZSk7CisgICAgLy8gUmVjb3JkcyB0aGF0IGEgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRo
ZSBzaGFkZXIgYW5kIG1pZ2h0IG5lZWRzIHRvIGJlCisgICAgLy8gZW11bGF0ZWQuICBJZiB0aGUg
ZnVuY3Rpb24ncyBncm91cCBpcyBub3QgaW4gbUZ1bmN0aW9uR3JvdXBGaWx0ZXIsIHRoaXMKKyAg
ICAvLyBiZWNvbWVzIGFuIG5vLW9wLgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZnVuY3Rp
b24gY2FsbCBuZWVkcyB0byBiZSByZXBsYWNlZCB3aXRoIGFuIGVtdWxhdGVkCisgICAgLy8gb25l
LgorICAgIGJvb2wgU2V0RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSYg
cGFyYW0pOworICAgIGJvb2wgU2V0RnVuY3Rpb25DYWxsZWQoCisgICAgICAgIFRPcGVyYXRvciBv
cCwgY29uc3QgVFR5cGUmIHBhcmFtMSwgY29uc3QgVFR5cGUmIHBhcmFtMik7CisKKyAgICAvLyBP
dXRwdXQgZnVuY3Rpb24gZW11bGF0aW9uIGRlZmluaXRpb24uICBUaGlzIHNob3VsZCBiZSBiZWZv
cmUgYW55IG90aGVyCisgICAgLy8gc2hhZGVyIHNvdXJjZS4KKyAgICB2b2lkIE91dHB1dEVtdWxh
dGVkRnVuY3Rpb25EZWZpbml0aW9uKFRJbmZvU2lua0Jhc2UmIG91dCwgYm9vbCB3aXRoUHJlY2lz
aW9uKSBjb25zdDsKKworICAgIHZvaWQgTWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRpb24o
VEludGVybU5vZGUqIHJvb3QpOworCisgICAgdm9pZCBDbGVhbnVwKCk7CisKKyAgICAvLyAibmFt
ZSgiIGJlY29tZXMgIndlYmdsX25hbWVfZW11KCIuCisgICAgc3RhdGljIFRTdHJpbmcgR2V0RW11
bGF0ZWRGdW5jdGlvbk5hbWUoY29uc3QgVFN0cmluZyYgbmFtZSk7CisKK3ByaXZhdGU6CisgICAg
Ly8KKyAgICAvLyBCdWlsdC1pbiBmdW5jdGlvbnMuCisgICAgLy8KKyAgICBlbnVtIFRCdWlsdElu
RnVuY3Rpb24geworICAgICAgICBURnVuY3Rpb25BdGFuMV8xID0gMCwgIC8vIGZsb2F0IGF0YW4o
ZmxvYXQsIGZsb2F0KTsKKyAgICAgICAgVEZ1bmN0aW9uQXRhbjJfMiwgIC8vIHZlYzIgYXRhbih2
ZWMyLCB2ZWMyKTsKKyAgICAgICAgVEZ1bmN0aW9uQXRhbjNfMywgIC8vIHZlYzMgYXRhbih2ZWMz
LCB2ZWMyKTsKKyAgICAgICAgVEZ1bmN0aW9uQXRhbjRfNCwgIC8vIHZlYzQgYXRhbih2ZWM0LCB2
ZWMyKTsKKworICAgICAgICBURnVuY3Rpb25Db3MxLCAgLy8gZmxvYXQgY29zKGZsb2F0KTsKKyAg
ICAgICAgVEZ1bmN0aW9uQ29zMiwgIC8vIHZlYzIgY29zKHZlYzIpOworICAgICAgICBURnVuY3Rp
b25Db3MzLCAgLy8gdmVjMyBjb3ModmVjMyk7CisgICAgICAgIFRGdW5jdGlvbkNvczQsICAvLyB2
ZWM0IGNvcyh2ZWM0KTsKKworICAgICAgICBURnVuY3Rpb25EaXN0YW5jZTFfMSwgIC8vIGZsb2F0
IGRpc3RhbmNlKGZsb2F0LCBmbG9hdCk7CisgICAgICAgIFRGdW5jdGlvbkRpc3RhbmNlMl8yLCAg
Ly8gdmVjMiBkaXN0YW5jZSh2ZWMyLCB2ZWMyKTsKKyAgICAgICAgVEZ1bmN0aW9uRGlzdGFuY2Uz
XzMsICAvLyB2ZWMzIGRpc3RhbmNlKHZlYzMsIHZlYzMpOworICAgICAgICBURnVuY3Rpb25EaXN0
YW5jZTRfNCwgIC8vIHZlYzQgZGlzdGFuY2UodmVjNCwgdmVjNCk7CisKKyAgICAgICAgVEZ1bmN0
aW9uRG90MV8xLCAgLy8gZmxvYXQgZG90KGZsb2F0LCBmbG9hdCk7CisgICAgICAgIFRGdW5jdGlv
bkRvdDJfMiwgIC8vIHZlYzIgZG90KHZlYzIsIHZlYzIpOworICAgICAgICBURnVuY3Rpb25Eb3Qz
XzMsICAvLyB2ZWMzIGRvdCh2ZWMzLCB2ZWMzKTsKKyAgICAgICAgVEZ1bmN0aW9uRG90NF80LCAg
Ly8gdmVjNCBkb3QodmVjNCwgdmVjNCk7CisKKyAgICAgICAgVEZ1bmN0aW9uTGVuZ3RoMSwgIC8v
IGZsb2F0IGxlbmd0aChmbG9hdCk7CisgICAgICAgIFRGdW5jdGlvbkxlbmd0aDIsICAvLyBmbG9h
dCBsZW5ndGgodmVjMik7CisgICAgICAgIFRGdW5jdGlvbkxlbmd0aDMsICAvLyBmbG9hdCBsZW5n
dGgodmVjMyk7CisgICAgICAgIFRGdW5jdGlvbkxlbmd0aDQsICAvLyBmbG9hdCBsZW5ndGgodmVj
NCk7CisKKyAgICAgICAgVEZ1bmN0aW9uTW9kMV8xLCAgLy8gZmxvYXQgbW9kKGZsb2F0LCBmbG9h
dCk7CisgICAgICAgIFRGdW5jdGlvbk1vZDJfMiwgIC8vIHZlYzIgbW9kKHZlYzIsIHZlYzIpOwor
ICAgICAgICBURnVuY3Rpb25Nb2QzXzMsICAvLyB2ZWMzIG1vZCh2ZWMzLCB2ZWMzKTsKKyAgICAg
ICAgVEZ1bmN0aW9uTW9kNF80LCAgLy8gdmVjNCBtb2QodmVjNCwgdmVjNCk7CisKKyAgICAgICAg
VEZ1bmN0aW9uTm9ybWFsaXplMSwgIC8vIGZsb2F0IG5vcm1hbGl6ZShmbG9hdCk7CisgICAgICAg
IFRGdW5jdGlvbk5vcm1hbGl6ZTIsICAvLyB2ZWMyIG5vcm1hbGl6ZSh2ZWMyKTsKKyAgICAgICAg
VEZ1bmN0aW9uTm9ybWFsaXplMywgIC8vIHZlYzMgbm9ybWFsaXplKHZlYzMpOworICAgICAgICBU
RnVuY3Rpb25Ob3JtYWxpemU0LCAgLy8gdmVjNCBub3JtYWxpemUodmVjNCk7CisKKyAgICAgICAg
VEZ1bmN0aW9uUmVmbGVjdDFfMSwgIC8vIGZsb2F0IHJlZmxlY3QoZmxvYXQsIGZsb2F0KTsKKyAg
ICAgICAgVEZ1bmN0aW9uUmVmbGVjdDJfMiwgIC8vIHZlYzIgcmVmbGVjdCh2ZWMyLCB2ZWMyKTsK
KyAgICAgICAgVEZ1bmN0aW9uUmVmbGVjdDNfMywgIC8vIHZlYzMgcmVmbGVjdCh2ZWMzLCB2ZWMz
KTsKKyAgICAgICAgVEZ1bmN0aW9uUmVmbGVjdDRfNCwgIC8vIHZlYzQgcmVmbGVjdCh2ZWM0LCB2
ZWM0KTsKKworICAgICAgICBURnVuY3Rpb25Vbmtub3duCisgICAgfTsKKworICAgIFRCdWlsdElu
RnVuY3Rpb24gSWRlbnRpZnlGdW5jdGlvbihUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlJiBwYXJh
bSk7CisgICAgVEJ1aWx0SW5GdW5jdGlvbiBJZGVudGlmeUZ1bmN0aW9uKAorICAgICAgICBUT3Bl
cmF0b3Igb3AsIGNvbnN0IFRUeXBlJiBwYXJhbTEsIGNvbnN0IFRUeXBlJiBwYXJhbTIpOworCisg
ICAgYm9vbCBTZXRGdW5jdGlvbkNhbGxlZChUQnVpbHRJbkZ1bmN0aW9uIGZ1bmN0aW9uKTsKKwor
ICAgIHN0ZDo6dmVjdG9yPFRCdWlsdEluRnVuY3Rpb24+IG1GdW5jdGlvbnM7CisKKyAgICBjb25z
dCBib29sKiBtRnVuY3Rpb25NYXNrOyAgLy8gYSBib29sZWFuIGZsYWcgZm9yIGVhY2ggZnVuY3Rp
b24uCisgICAgY29uc3QgY2hhcioqIG1GdW5jdGlvblNvdXJjZTsKK307CisKKyNlbmRpZiAgLy8g
Q09NUElMSUVSX0JVSUxUX0lOX0ZVTkNUSU9OX0VNVUxBVE9SX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAppbmRleCA1ZDg2YTNlYzA5
NWVmNWVlOGYwNTViZGY2YjRhYmZhMWQ3ZDJiMmM4Li4yMjc2NGJkY2ZiYTU2NjJhYjM1MGZkOTky
NmU3ZmVjYmM1NzBlYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9Db21waWxlci5jcHAKQEAgLTEsOSArMSwxMiBAQAogLy8KLS8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KIC8vCiAKKyNpbmNsdWRlICJjb21waWxlci9CdWlsdEluRnVuY3Rpb25F
bXVsYXRvci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIgorI2luY2x1
ZGUgImNvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaCIKICNpbmNsdWRlICJjb21waWxlci9Jbml0aWFs
aXplLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKICNpbmNsdWRlICJjb21w
aWxlci9TaEhhbmRsZS5oIgpAQCAtMTgsNiArMjEsNyBAQCBib29sIEluaXRpYWxpemVTeW1ib2xU
YWJsZSgKIHsKICAgICBUSW50ZXJtZWRpYXRlIGludGVybWVkaWF0ZShpbmZvU2luayk7CiAgICAg
VEV4dGVuc2lvbkJlaGF2aW9yIGV4dEJlaGF2aW9yOworICAgIEluaXRFeHRlbnNpb25CZWhhdmlv
cihyZXNvdXJjZXMsIGV4dEJlaGF2aW9yKTsKICAgICAvLyBUaGUgYnVpbHRpbnMgZGVsaWJlcmF0
ZWx5IGRvbid0IHNwZWNpZnkgcHJlY2lzaW9ucyBmb3IgdGhlIGZ1bmN0aW9uCiAgICAgLy8gYXJn
dW1lbnRzIGFuZCByZXR1cm4gdHlwZXMuIEZvciB0aGF0IHJlYXNvbiB3ZSBkb24ndCB0cnkgdG8g
Y2hlY2sgdGhlbS4KICAgICBUUGFyc2VDb250ZXh0IHBhcnNlQ29udGV4dChzeW1ib2xUYWJsZSwg
ZXh0QmVoYXZpb3IsIGludGVybWVkaWF0ZSwgdHlwZSwgc3BlYywgMCwgZmFsc2UsIE5VTEwsIGlu
Zm9TaW5rKTsKQEAgLTg0LDcgKzg4LDggQEAgVFNoSGFuZGxlQmFzZTo6flRTaEhhbmRsZUJhc2Uo
KSB7CiAKIFRDb21waWxlcjo6VENvbXBpbGVyKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNw
ZWMgc3BlYykKICAgICA6IHNoYWRlclR5cGUodHlwZSksCi0gICAgICBzaGFkZXJTcGVjKHNwZWMp
IAorICAgICAgc2hhZGVyU3BlYyhzcGVjKSwKKyAgICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
KHR5cGUpCiB7CiB9CiAKQEAgLTE0NywxMyArMTUyLDI0IEBAIGJvb2wgVENvbXBpbGVyOjpjb21w
aWxlKGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclN0cmluZ3NbXSwKICAgICAgICAgVEludGVybU5v
ZGUqIHJvb3QgPSBwYXJzZUNvbnRleHQudHJlZVJvb3Q7CiAgICAgICAgIHN1Y2Nlc3MgPSBpbnRl
cm1lZGlhdGUucG9zdFByb2Nlc3Mocm9vdCk7CiAKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAg
ICAgICAgICBzdWNjZXNzID0gZGV0ZWN0UmVjdXJzaW9uKHJvb3QpOworCiAgICAgICAgIGlmIChz
dWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX1ZBTElEQVRFX0xPT1BfSU5ERVhJTkcpKQog
ICAgICAgICAgICAgc3VjY2VzcyA9IHZhbGlkYXRlTGltaXRhdGlvbnMocm9vdCk7CiAKKyAgICAg
ICAgLy8gVW5yb2xsIGZvci1sb29wIG1hcmt1cCBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgdmFsaWRh
dGVMaW1pdGF0aW9ucyBwYXNzLgorICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlv
bnMgJiBTSF9VTlJPTExfRk9SX0xPT1BfV0lUSF9JTlRFR0VSX0lOREVYKSkKKyAgICAgICAgICAg
IEZvckxvb3BVbnJvbGw6Ok1hcmtGb3JMb29wc1dpdGhJbnRlZ2VySW5kaWNlc0ZvclVucm9sbGlu
Zyhyb290KTsKKworICAgICAgICAvLyBCdWlsdC1pbiBmdW5jdGlvbiBlbXVsYXRpb24gbmVlZHMg
dG8gaGFwcGVuIGFmdGVyIHZhbGlkYXRlTGltaXRhdGlvbnMgcGFzcy4KKyAgICAgICAgaWYgKHN1
Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfRU1VTEFURV9CVUlMVF9JTl9GVU5DVElPTlMp
KQorICAgICAgICAgICAgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuTWFya0J1aWx0SW5GdW5jdGlv
bnNGb3JFbXVsYXRpb24ocm9vdCk7CisKICAgICAgICAgLy8gQ2FsbCBtYXBMb25nVmFyaWFibGVO
YW1lcygpIGJlZm9yZSBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKCkgc28gaW4KICAgICAgICAgLy8g
Y29sbGVjdEF0dHJpYnNVbmlmb3JtcygpIHdlIGFscmVhZHkgaGF2ZSB0aGUgbWFwcGVkIHN5bWJv
bCBuYW1lcyBhbmQKICAgICAgICAgLy8gd2UgY291bGQgY29tcG9zaXRlIG1hcHBlZCBhbmQgb3Jp
Z2luYWwgdmFyaWFibGUgbmFtZXMuCi0gICAgICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX01B
UF9MT05HX1ZBUklBQkxFX05BTUVTKQorICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9w
dGlvbnMgJiBTSF9NQVBfTE9OR19WQVJJQUJMRV9OQU1FUykpCiAgICAgICAgICAgICBtYXBMb25n
VmFyaWFibGVOYW1lcyhyb290KTsKIAogICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9w
dGlvbnMgJiBTSF9BVFRSSUJVVEVTX1VOSUZPUk1TKSkKQEAgLTE5Myw2ICsyMDksMjcgQEAgdm9p
ZCBUQ29tcGlsZXI6OmNsZWFyUmVzdWx0cygpCiAKICAgICBhdHRyaWJzLmNsZWFyKCk7CiAgICAg
dW5pZm9ybXMuY2xlYXIoKTsKKworICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLkNsZWFudXAo
KTsKK30KKworYm9vbCBUQ29tcGlsZXI6OmRldGVjdFJlY3Vyc2lvbihUSW50ZXJtTm9kZSogcm9v
dCkKK3sKKyAgICBEZXRlY3RSZWN1cnNpb24gZGV0ZWN0OworICAgIHJvb3QtPnRyYXZlcnNlKCZk
ZXRlY3QpOworICAgIHN3aXRjaCAoZGV0ZWN0LmRldGVjdFJlY3Vyc2lvbigpKSB7CisgICAgICAg
IGNhc2UgRGV0ZWN0UmVjdXJzaW9uOjprRXJyb3JOb25lOgorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGNhc2UgRGV0ZWN0UmVjdXJzaW9uOjprRXJyb3JNaXNzaW5nTWFpbjoKKyAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJNaXNzaW5nIG1h
aW4oKSIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIERldGVjdFJl
Y3Vyc2lvbjo6a0Vycm9yUmVjdXJzaW9uOgorICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhFcnJvciwgIkZ1bmN0aW9uIHJlY3Vyc2lvbiBkZXRlY3RlZCIpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAKIGJvb2wgVENv
bXBpbGVyOjp2YWxpZGF0ZUxpbWl0YXRpb25zKFRJbnRlcm1Ob2RlKiByb290KSB7CkBAIC0yMTUs
MTAgKzI1MiwxNSBAQCB2b2lkIFRDb21waWxlcjo6bWFwTG9uZ1ZhcmlhYmxlTmFtZXMoVEludGVy
bU5vZGUqIHJvb3QpCiAKIGludCBUQ29tcGlsZXI6OmdldE1hcHBlZE5hbWVNYXhMZW5ndGgoKSBj
b25zdAogewotICAgIHJldHVybiBNQVhfSURFTlRJRklFUl9OQU1FX1NJWkUgKyAxOworICAgIHJl
dHVybiBNQVhfU0hPUlRFTkVEX0lERU5USUZJRVJfU0laRSArIDE7CiB9CiAKIGNvbnN0IFRFeHRl
bnNpb25CZWhhdmlvciYgVENvbXBpbGVyOjpnZXRFeHRlbnNpb25CZWhhdmlvcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGV4dGVuc2lvbkJlaGF2aW9yOwogfQorCitjb25zdCBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvciYgVENvbXBpbGVyOjpnZXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNDM1NGZjNzk0YmUwZDQzMzY5OGJlZmEwMDMyMTg1ZDE3ZmM3NjZiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Rl
dGVjdFJlY3Vyc2lvbi5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
KyNpbmNsdWRlICJjb21waWxlci9EZXRlY3RSZWN1cnNpb24uaCIKKworRGV0ZWN0UmVjdXJzaW9u
OjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSkKKyAgICA6
IG5hbWUoZm5hbWUpLAorICAgICAgdmlzaXQoUHJlVmlzaXQpCit7Cit9CisKK2NvbnN0IFRTdHJp
bmcmIERldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjpnZXROYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbmFtZTsKK30KKwordm9pZCBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6
YWRkQ2FsbGVlKAorICAgIERldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlKiBjYWxsZWUpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChjYWxsZWVzW2ldID09IGNhbGxlZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgY2FsbGVlcy5wdXNoX2JhY2soY2FsbGVlKTsKK30KKworYm9vbCBEZXRlY3RSZWN1cnNp
b246OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0UmVjdXJzaW9uKCkKK3sKKyAgICBBU1NFUlQodmlzaXQg
PT0gUHJlVmlzaXQpOworICAgIHZpc2l0ID0gSW5WaXNpdDsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNhbGxlZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChjYWxsZWVzW2ld
LT52aXNpdCkgeworICAgICAgICAgICAgY2FzZSBJblZpc2l0OgorICAgICAgICAgICAgICAgIC8v
IGN5Y2xlIGRldGVjdGVkLCBpLmUuLCByZWN1cnNpb24gZGV0ZWN0ZWQuCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjYXNlIFBvc3RWaXNpdDoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUHJlVmlzaXQ6IHsKKyAgICAgICAgICAgICAg
ICBib29sIHJlY3Vyc2lvbiA9IGNhbGxlZXNbaV0tPmRldGVjdFJlY3Vyc2lvbigpOworICAgICAg
ICAgICAgICAgIGlmIChyZWN1cnNpb24pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorICAgIHZpc2l0ID0gUG9zdFZpc2l0OworICAgIHJldHVy
biBmYWxzZTsKK30KKworRGV0ZWN0UmVjdXJzaW9uOjpEZXRlY3RSZWN1cnNpb24oKQorICAgIDog
Y3VycmVudEZ1bmN0aW9uKE5VTEwpCit7Cit9CisKK0RldGVjdFJlY3Vyc2lvbjo6fkRldGVjdFJl
Y3Vyc2lvbigpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIGRlbGV0ZSBmdW5jdGlvbnNbaV07Cit9CisKK2Jvb2wgRGV0ZWN0UmVjdXJz
aW9uOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkK
K3sKKyAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgeworICAgICAgICBjYXNlIEVPcFBy
b3RvdHlwZToKKyAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorICAgICAgICAg
ICAgLy8gRG9uJ3QgYWRkIEZ1bmN0aW9uTm9kZSBoZXJlIGJlY2F1c2Ugbm9kZS0+Z2V0TmFtZSgp
IGlzIHRoZQorICAgICAgICAgICAgLy8gdW5tYW5nbGVkIGZ1bmN0aW9uIG5hbWUuCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BGdW5jdGlvbjogeworICAgICAgICAgICAgLy8g
RnVuY3Rpb24gZGVmaW5pdGlvbi4KKyAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkg
eworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZShu
b2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RnVuY3Rpb24gPT0g
TlVMTCkgeworICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBuZXcgRnVuY3Rp
b25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy5w
dXNoX2JhY2soY3VycmVudEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEVPcEZ1bmN0
aW9uQ2FsbDogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KKyAgICAgICAgICAgIGlm
ICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50RnVu
Y3Rpb24gIT0gTlVMTCk7CisgICAgICAgICAgICAgICAgRnVuY3Rpb25Ob2RlKiBmdW5jID0gZmlu
ZEZ1bmN0aW9uQnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGZ1
bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBmdW5jID0gbmV3IEZ1bmN0aW9uTm9k
ZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMucHVzaF9i
YWNrKGZ1bmMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjdXJyZW50RnVu
Y3Rpb24tPmFkZENhbGxlZShmdW5jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0RldGVjdFJlY3Vyc2lvbjo6RXJyb3JDb2RlIERldGVj
dFJlY3Vyc2lvbjo6ZGV0ZWN0UmVjdXJzaW9uKCkKK3sKKyAgICBGdW5jdGlvbk5vZGUqIG1haW4g
PSBmaW5kRnVuY3Rpb25CeU5hbWUoIm1haW4oIik7CisgICAgaWYgKG1haW4gPT0gTlVMTCkKKyAg
ICAgICAgcmV0dXJuIGtFcnJvck1pc3NpbmdNYWluOworICAgIGlmIChtYWluLT5kZXRlY3RSZWN1
cnNpb24oKSkKKyAgICAgICAgcmV0dXJuIGtFcnJvclJlY3Vyc2lvbjsKKyAgICByZXR1cm4ga0Vy
cm9yTm9uZTsKK30KKworRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGUqIERldGVjdFJlY3Vy
c2lvbjo6ZmluZEZ1bmN0aW9uQnlOYW1lKAorICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUpCit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgaWYgKGZ1bmN0aW9uc1tpXS0+Z2V0TmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb25zW2ldOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJiYWM3OWRjOWNlNmUyMzNiNGMwMWNlZWQ2OTQ0ODg4YjliMmViNDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0
ZWN0UmVjdXJzaW9uLmgKQEAgLTAsMCArMSw2MCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lm
bmRlZiBDT01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCisjZGVmaW5lIENPTVBJTEVSX0RFVEVD
VF9SRUNVUlNJT05fSF8KKworI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCisjaW5j
bHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvVmFyaWFi
bGVJbmZvLmgiCisKKy8vIFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlY3QgZnVu
Y3Rpb24gcmVjdXJzaW9uLgorY2xhc3MgRGV0ZWN0UmVjdXJzaW9uIDogcHVibGljIFRJbnRlcm1U
cmF2ZXJzZXIgeworcHVibGljOgorICAgIGVudW0gRXJyb3JDb2RlIHsKKyAgICAgICAga0Vycm9y
TWlzc2luZ01haW4sCisgICAgICAgIGtFcnJvclJlY3Vyc2lvbiwKKyAgICAgICAga0Vycm9yTm9u
ZQorICAgIH07CisKKyAgICBEZXRlY3RSZWN1cnNpb24oKTsKKyAgICB+RGV0ZWN0UmVjdXJzaW9u
KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dy
ZWdhdGUqKTsKKworICAgIEVycm9yQ29kZSBkZXRlY3RSZWN1cnNpb24oKTsKKworcHJpdmF0ZToK
KyAgICBjbGFzcyBGdW5jdGlvbk5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgRnVuY3Rpb25O
b2RlKGNvbnN0IFRTdHJpbmcmIGZuYW1lKTsKKworICAgICAgICBjb25zdCBUU3RyaW5nJiBnZXRO
YW1lKCkgY29uc3Q7CisKKyAgICAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBhbHJlYWR5IGluIHRo
ZSBjYWxsZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCisgICAgICAgIHZvaWQgYWRkQ2Fs
bGVlKEZ1bmN0aW9uTm9kZSogY2FsbGVlKTsKKworICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBy
ZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMgYXJlIGRldGVjdGVkLgorICAgICAgICBib29sIGRldGVj
dFJlY3Vyc2lvbigpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gbWFuZ2xlZCBmdW5jdGlv
biBuYW1lIGlzIHVuaXF1ZS4KKyAgICAgICAgVFN0cmluZyBuYW1lOworCisgICAgICAgIC8vIGZ1
bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvbi4KKyAgICAg
ICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOworCisgICAgICAgIFZpc2l0IHZpc2l0
OworICAgIH07CisKKyAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5jdGlvbkJ5TmFtZShjb25zdCBU
U3RyaW5nJiBuYW1lKTsKKworICAgIFRWZWN0b3I8RnVuY3Rpb25Ob2RlKj4gZnVuY3Rpb25zOwor
ICAgIEZ1bmN0aW9uTm9kZSogY3VycmVudEZ1bmN0aW9uOworfTsKKworI2VuZGlmICAvLyBDT01Q
SUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvRXh0ZW5zaW9uQmVoYXZpb3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9FeHRlbnNpb25CZWhhdmlvci5oCmluZGV4IGFiNWEwYTUzYmM4
NWY2OWFlMDlhZDhhOGYyYzFmMjg4OWI4MDZkNjcuLmU5YmJhNGIyMzU1M2QzMGEzZjZlZjRmY2U3
NWI4MmI1NTJlNTMzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9FeHRlbnNpb25CZWhhdmlvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9FeHRlbnNpb25CZWhhdmlvci5oCkBAIC0xMyw3ICsxMyw4IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICAgRUJoUmVxdWlyZSwKICAgICBFQmhFbmFibGUsCiAgICAgRUJoV2FybiwK
LSAgICBFQmhEaXNhYmxlCisgICAgRUJoRGlzYWJsZSwKKyAgICBFQmhVbmRlZmluZWQsCiB9IFRC
ZWhhdmlvcjsKIAogaW5saW5lIGNvbnN0IGNoYXIqIGdldEJlaGF2aW9yU3RyaW5nKFRCZWhhdmlv
ciBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zv
ckxvb3BVbnJvbGwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zv
ckxvb3BVbnJvbGwuY3BwCmluZGV4IGQ2MzFhZjQ0ZmM2MmJlMWM0MzM2OWIyYmYwMDYwMGQ2ZWM5
NjUwOWYuLmZkYzNmNDQ0MzFlMDE0ZGQ2YmU4MzVjZTMwNTYyNjVlMzEyMjU5MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9s
bC5jcHAKQEAgLTYsNiArNiwzOSBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvRm9yTG9vcFVucm9s
bC5oIgogCituYW1lc3BhY2UgeworCitjbGFzcyBJbnRlZ2VyRm9yTG9vcFVucm9sbE1hcmtlciA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsKK3B1YmxpYzoKKworICAgIHZpcnR1YWwgYm9vbCB2
aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29wKiBub2RlKQorICAgIHsKKyAgICAgICAgLy8gVGhp
cyBpcyBjYWxsZWQgYWZ0ZXIgVmFsaWRhdGVMaW1pdGF0aW9ucyBwYXNzLCBzbyBhbGwgdGhlIEFT
U0VSVAorICAgICAgICAvLyBzaG91bGQgbmV2ZXIgZmFpbC4KKyAgICAgICAgLy8gU2VlIFZhbGlk
YXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRm9yTG9vcEluaXQoKS4KKyAgICAgICAgQVNTRVJUKG5v
ZGUpOworICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VHlwZSgpID09IEVMb29wRm9yKTsKKyAgICAg
ICAgQVNTRVJUKG5vZGUtPmdldEluaXQoKSk7CisgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGRl
Y2wgPSBub2RlLT5nZXRJbml0KCktPmdldEFzQWdncmVnYXRlKCk7CisgICAgICAgIEFTU0VSVChk
ZWNsICYmIGRlY2wtPmdldE9wKCkgPT0gRU9wRGVjbGFyYXRpb24pOworICAgICAgICBUSW50ZXJt
U2VxdWVuY2UmIGRlY2xTZXEgPSBkZWNsLT5nZXRTZXF1ZW5jZSgpOworICAgICAgICBBU1NFUlQo
ZGVjbFNlcS5zaXplKCkgPT0gMSk7CisgICAgICAgIFRJbnRlcm1CaW5hcnkqIGRlY2xJbml0ID0g
ZGVjbFNlcVswXS0+Z2V0QXNCaW5hcnlOb2RlKCk7CisgICAgICAgIEFTU0VSVChkZWNsSW5pdCAm
JiBkZWNsSW5pdC0+Z2V0T3AoKSA9PSBFT3BJbml0aWFsaXplKTsKKyAgICAgICAgQVNTRVJUKGRl
Y2xJbml0LT5nZXRMZWZ0KCkpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBkZWNs
SW5pdC0+Z2V0TGVmdCgpLT5nZXRBc1N5bWJvbE5vZGUoKTsKKyAgICAgICAgQVNTRVJUKHN5bWJv
bCk7CisgICAgICAgIFRCYXNpY1R5cGUgdHlwZSA9IHN5bWJvbC0+Z2V0QmFzaWNUeXBlKCk7Cisg
ICAgICAgIEFTU0VSVCh0eXBlID09IEVidEludCB8fCB0eXBlID09IEVidEZsb2F0KTsKKyAgICAg
ICAgaWYgKHR5cGUgPT0gRWJ0SW50KQorICAgICAgICAgICAgbm9kZS0+c2V0VW5yb2xsRmxhZyh0
cnVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCit9OworCit9ICAvLyBhbm9ueW1v
dXMgbmFtZXBzYWNlCisKIHZvaWQgRm9yTG9vcFVucm9sbDo6RmlsbExvb3BJbmRleEluZm8oVElu
dGVybUxvb3AqIG5vZGUsIFRMb29wSW5kZXhJbmZvJiBpbmZvKQogewogICAgIEFTU0VSVChub2Rl
LT5nZXRUeXBlKCkgPT0gRUxvb3BGb3IpOwpAQCAtMTA5LDYgKzE0MiwxNiBAQCB2b2lkIEZvckxv
b3BVbnJvbGw6OlBvcCgpCiAgICAgbUxvb3BJbmRleFN0YWNrLnBvcF9iYWNrKCk7CiB9CiAKKy8v
IHN0YXRpYwordm9pZCBGb3JMb29wVW5yb2xsOjpNYXJrRm9yTG9vcHNXaXRoSW50ZWdlckluZGlj
ZXNGb3JVbnJvbGxpbmcoCisgICAgVEludGVybU5vZGUqIHJvb3QpCit7CisgICAgQVNTRVJUKHJv
b3QpOworCisgICAgSW50ZWdlckZvckxvb3BVbnJvbGxNYXJrZXIgbWFya2VyOworICAgIHJvb3Qt
PnRyYXZlcnNlKCZtYXJrZXIpOworfQorCiBpbnQgRm9yTG9vcFVucm9sbDo6Z2V0TG9vcEluY3Jl
bWVudChUSW50ZXJtTG9vcCogbm9kZSkKIHsKICAgICBUSW50ZXJtTm9kZSogZXhwciA9IG5vZGUt
PmdldEV4cHJlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvRm9yTG9vcFVucm9sbC5oCmluZGV4IGIyYjJiNThjMTFjMjYyYzFhOTI1OTNjZDc0
NDg4YjdjZWFiODU5MjEuLmU4MDBlMjViMWYwYzFhNDg3YTM3MzFhZWU3MzE2MjJjYjIyOGZlMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29w
VW5yb2xsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxv
b3BVbnJvbGwuaApAQCAtMzYsNiArMzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBQdXNoKFRMb29w
SW5kZXhJbmZvJiBpbmZvKTsKICAgICB2b2lkIFBvcCgpOwogCisgICAgc3RhdGljIHZvaWQgTWFy
a0Zvckxvb3BzV2l0aEludGVnZXJJbmRpY2VzRm9yVW5yb2xsaW5nKFRJbnRlcm1Ob2RlKiByb290
KTsKKwogcHJpdmF0ZToKICAgICBpbnQgZ2V0TG9vcEluY3JlbWVudChUSW50ZXJtTG9vcCogbm9k
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9J
bml0aWFsaXplLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0
aWFsaXplLmNwcAppbmRleCA3NGEyZGUzNmU2NjNiMDI2OGUwZWViZDIwNmFhNjcyYjZhOWI3MTdi
Li5mM2ExOWRjMTM0MWZjYzg3YTlhNjkwMDc2OTk4NzdkZDJjMDczNDEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCkBAIC0x
OSw3ICsxOSw3IEBACiAvLyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBi
eSBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KIC8vCiAvLz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oKQorc3RhdGljIFRT
dHJpbmcgQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJl
c291cmNlcykKIHsKICAgICBUU3RyaW5nIHM7CiAKQEAgLTMxMSw2ICszMTEsMjYgQEAgc3RhdGlj
IFRTdHJpbmcgQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbigpCiAgICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzQgbm90KGJ2ZWM0IHgpOyIpKTsKIAogICAgIC8vCisgICAgLy8gVGV4dHVyZSBGdW5jdGlv
bnMuCisgICAgLy8KKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1wbGVy
MkQgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
dGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOworICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxlciwgdmVj
NCBjb29yZCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZUN1YmUoc2Ft
cGxlckN1YmUgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOworCisgICAgaWYgKHJlc291cmNlcy5P
RVNfRUdMX2ltYWdlX2V4dGVybmFsKSB7CisgICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
dGV4dHVyZTJEKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWMyIGNvb3JkKTsiKSk7Cisg
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyRXh0ZXJu
YWxPRVMgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOworICAgICAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFsT0VTIHNhbXBsZXIsIHZlYzQgY29v
cmQpOyIpKTsKKyAgICB9CisKKyAgICBpZiAocmVzb3VyY2VzLkFSQl90ZXh0dXJlX3JlY3Rhbmds
ZSkgeworICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3Qoc2FtcGxl
cjJEUmVjdCBzYW1wbGVyLCB2ZWMyIGNvb3JkKTsiKSk7CisgICAgICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzQgdGV4dHVyZTJEUmVjdFByb2ooc2FtcGxlcjJEUmVjdCBzYW1wbGVyLCB2ZWMzIGNv
b3JkKTsiKSk7CisgICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUmVjdFBy
b2ooc2FtcGxlcjJEUmVjdCBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7CisgICAgfQorCisgICAg
Ly8KICAgICAvLyBOb2lzZSBmdW5jdGlvbnMuCiAgICAgLy8KICAgICAvL3MuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IG5vaXNlMShmbG9hdCB4KTsiKSk7CkBAIC0zNTMsMTEgKzM3Myw2IEBAIHN0YXRp
YyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnNWZXJ0ZXgoY29uc3QgU2hCdWlsdEluUmVzb3VyY2Vz
JiByZXNvdXJjZXMpCiAgICAgLy8KICAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KICAgICAvLwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEKHNhbXBsZXIyRCBzYW1wbGVyLCB2
ZWMyIGNvb3JkKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9q
KHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3ViZShzYW1wbGVyQ3ViZSBzYW1w
bGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0KICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1
cmUyRExvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjMiBjb29yZCwgZmxvYXQgbG9kKTsiKSk7CiAg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzYW1w
bGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsKICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQsIGZsb2F0
IGxvZCk7IikpOwpAQCAtMzc4LDExICszOTMsNiBAQCBzdGF0aWMgVFN0cmluZyBCdWlsdEluRnVu
Y3Rpb25zRnJhZ21lbnQoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCiAgICAg
Ly8KICAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzQgdGV4dHVyZTJEKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVy
LCB2ZWMzIGNvb3JkKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQ
cm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjNCB0ZXh0dXJlQ3ViZShzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsi
KSk7Ci0KICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1wbGVyMkQgc2Ft
cGxlciwgdmVjMiBjb29yZCwgZmxvYXQgYmlhcyk7IikpOwogICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxlciwgdmVjMyBjb29yZCwgZmxvYXQg
Ymlhcyk7IikpOwogICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1w
bGVyMkQgc2FtcGxlciwgdmVjNCBjb29yZCwgZmxvYXQgYmlhcyk7IikpOwpAQCAtNDg4LDE0ICs0
OTgsMTQgQEAgdm9pZCBUQnVpbHRJbnM6OmluaXRpYWxpemUoU2hTaGFkZXJUeXBlIHR5cGUsIFNo
U2hhZGVyU3BlYyBzcGVjLAogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU0hfRlJBR01F
TlRfU0hBREVSOgogICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soRGVmYXVsdFByZWNp
c2lvbkZyYWdtZW50KCkpOwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJ
bkZ1bmN0aW9uc0NvbW1vbigpKTsKKyAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1
aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdz
LnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zRnJhZ21lbnQocmVzb3VyY2VzKSk7CiAgICAgICAg
IGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhTdGFuZGFyZFVuaWZvcm1zKCkpOwogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgU0hfVkVSVEVYX1NIQURFUjoKICAgICAgICAgYnVpbHRJblN0cmlu
Z3MucHVzaF9iYWNrKERlZmF1bHRQcmVjaXNpb25WZXJ0ZXgoKSk7Ci0gICAgICAgIGJ1aWx0SW5T
dHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKCkpOworICAgICAgICBidWls
dEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihyZXNvdXJjZXMpKTsK
ICAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNWZXJ0ZXgo
cmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhTdGFuZGFyZFVu
aWZvcm1zKCkpOwogICAgICAgICBicmVhazsKQEAgLTYxMiw3ICs2MjIsNyBAQCB2b2lkIElkZW50
aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLAogICAgIHN3
aXRjaCh0eXBlKSB7CiAgICAgY2FzZSBTSF9GUkFHTUVOVF9TSEFERVI6IHsKICAgICAgICAgICAg
IC8vIFNldCB1cCBnbF9GcmFnRGF0YS4gIFRoZSBhcnJheSBzaXplLgotICAgICAgICAgICAgVFR5
cGUgZnJhZ0RhdGEoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0NvbG9yLCAgIDQsIGZhbHNl
LCB0cnVlKTsKKyAgICAgICAgICAgIFRUeXBlIGZyYWdEYXRhKEVidEZsb2F0LCBFYnBNZWRpdW0s
IEV2cUZyYWdEYXRhLCA0LCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBmcmFnRGF0YS5zZXRB
cnJheVNpemUocmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsKICAgICAgICAgICAgIHN5bWJvbFRh
YmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0RhdGEiKSwg
ICAgZnJhZ0RhdGEpKTsKICAgICAgICAgfQpAQCAtNjI1LDUgKzYzNSw5IEBAIHZvaWQgSW5pdEV4
dGVuc2lvbkJlaGF2aW9yKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRCZWhhdmlvcikK
IHsKICAgICBpZiAocmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykKLSAgICAgICAg
ZXh0QmVoYXZpb3JbIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJdID0gRUJoRGlzYWJsZTsK
KyAgICAgICAgZXh0QmVoYXZpb3JbIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJdID0gRUJo
VW5kZWZpbmVkOworICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkKKyAg
ICAgICAgZXh0QmVoYXZpb3JbIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiXSA9IEVCaFVuZGVm
aW5lZDsKKyAgICBpZiAocmVzb3VyY2VzLkFSQl90ZXh0dXJlX3JlY3RhbmdsZSkKKyAgICAgICAg
ZXh0QmVoYXZpb3JbIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSJdID0gRUJoVW5kZWZpbmVkOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL01hcExv
bmdWYXJpYWJsZU5hbWVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAKaW5kZXggYzliNmExMmIyY2E3NTYxYjgxMmQwMmFj
YjhkMTdkNWJlNDQ4NDgzYy4uM2M1ZDM1NmRhMDQzYTMwM2FlZjBmNzE3NTFjYTdhYjQxNWQ5OTEz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL01hcExv
bmdWYXJpYWJsZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xMCwyMCArMTAsMjAgQEAgbmFtZXNwYWNl
IHsKIAogVFN0cmluZyBtYXBMb25nTmFtZShpbnQgaWQsIGNvbnN0IFRTdHJpbmcmIG5hbWUsIGJv
b2wgaXNWYXJ5aW5nKQogewotICAgIEFTU0VSVChuYW1lLnNpemUoKSA+IE1BWF9JREVOVElGSUVS
X05BTUVfU0laRSk7CisgICAgQVNTRVJUKG5hbWUuc2l6ZSgpID4gTUFYX1NIT1JURU5FRF9JREVO
VElGSUVSX1NJWkUpOwogICAgIFRTdHJpbmdTdHJlYW0gc3RyZWFtOwogICAgIHN0cmVhbSA8PCAi
d2ViZ2xfIjsKICAgICBpZiAoaXNWYXJ5aW5nKQogICAgICAgICBzdHJlYW0gPDwgInYiOwogICAg
IHN0cmVhbSA8PCBpZCA8PCAiXyI7Ci0gICAgc3RyZWFtIDw8IG5hbWUuc3Vic3RyKDAsIE1BWF9J
REVOVElGSUVSX05BTUVfU0laRSAtIHN0cmVhbS5zdHIoKS5zaXplKCkpOworICAgIHN0cmVhbSA8
PCBuYW1lLnN1YnN0cigwLCBNQVhfU0hPUlRFTkVEX0lERU5USUZJRVJfU0laRSAtIHN0cmVhbS5z
dHIoKS5zaXplKCkpOwogICAgIHJldHVybiBzdHJlYW0uc3RyKCk7CiB9CiAKIH0gIC8vIGFub255
bW91cyBuYW1lc3BhY2UKIAogTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6Ok1hcExvbmdWYXJpYWJsZU5h
bWVzKAotICAgIFRNYXA8VFN0cmluZywgVFN0cmluZz4mIHZhcnlpbmdMb25nTmFtZU1hcCkKKyAg
ICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+JiB2YXJ5aW5nTG9uZ05hbWVNYXAp
CiAgICAgOiBtVmFyeWluZ0xvbmdOYW1lTWFwKHZhcnlpbmdMb25nTmFtZU1hcCkKIHsKIH0KQEAg
LTMxLDEyICszMSwxMyBAQCBNYXBMb25nVmFyaWFibGVOYW1lczo6TWFwTG9uZ1ZhcmlhYmxlTmFt
ZXMoCiB2b2lkIE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9s
KiBzeW1ib2wpCiB7CiAgICAgQVNTRVJUKHN5bWJvbCAhPSBOVUxMKTsKLSAgICBpZiAoc3ltYm9s
LT5nZXRTeW1ib2woKS5zaXplKCkgPiBNQVhfSURFTlRJRklFUl9OQU1FX1NJWkUpIHsKKyAgICBp
ZiAoc3ltYm9sLT5nZXRTeW1ib2woKS5zaXplKCkgPiBNQVhfU0hPUlRFTkVEX0lERU5USUZJRVJf
U0laRSkgewogICAgICAgICBzd2l0Y2ggKHN5bWJvbC0+Z2V0UXVhbGlmaWVyKCkpIHsKICAgICAg
ICAgICBjYXNlIEV2cVZhcnlpbmdJbjoKICAgICAgICAgICBjYXNlIEV2cVZhcnlpbmdPdXQ6CiAg
ICAgICAgICAgY2FzZSBFdnFJbnZhcmlhbnRWYXJ5aW5nSW46CiAgICAgICAgICAgY2FzZSBFdnFJ
bnZhcmlhbnRWYXJ5aW5nT3V0OgorICAgICAgICAgIGNhc2UgRXZxVW5pZm9ybToKICAgICAgICAg
ICAgIHN5bWJvbC0+c2V0U3ltYm9sKAogICAgICAgICAgICAgICAgIG1hcFZhcnlpbmdMb25nTmFt
ZShzeW1ib2wtPmdldFN5bWJvbCgpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ4LDMwICs0
OSw2IEBAIHZvaWQgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1i
b2wqIHN5bWJvbCkKICAgICB9CiB9CiAKLXZvaWQgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6OnZpc2l0
Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiopCi17Ci19Ci0KLWJvb2wgTWFwTG9u
Z1ZhcmlhYmxlTmFtZXM6OnZpc2l0QmluYXJ5KFZpc2l0LCBUSW50ZXJtQmluYXJ5KikKLXsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNYXBMb25nVmFyaWFibGVOYW1lczo6dmlzaXRVbmFy
eShWaXNpdCwgVEludGVybVVuYXJ5KikKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBN
YXBMb25nVmFyaWFibGVOYW1lczo6dmlzaXRTZWxlY3Rpb24oVmlzaXQsIFRJbnRlcm1TZWxlY3Rp
b24qKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIE1hcExvbmdWYXJpYWJsZU5hbWVz
Ojp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopCi17Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KIGJvb2wgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6OnZpc2l0TG9vcChWaXNpdCwg
VEludGVybUxvb3AqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmdldEluaXQoKSkKQEAgLTc5LDIw
ICs1NiwxNSBAQCBib29sIE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2aXNpdExvb3AoVmlzaXQsIFRJ
bnRlcm1Mb29wKiBub2RlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1hcExvbmdWYXJp
YWJsZU5hbWVzOjp2aXNpdEJyYW5jaChWaXNpdCwgVEludGVybUJyYW5jaCopCi17Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIFRTdHJpbmcgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6Om1hcFZhcnlpbmdM
b25nTmFtZShjb25zdCBUU3RyaW5nJiBuYW1lKQogewotICAgIFRNYXA8VFN0cmluZywgVFN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbVZhcnlpbmdMb25nTmFtZU1hcC5maW5kKG5hbWUpOwor
ICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbVZhcnlpbmdMb25nTmFtZU1hcC5maW5kKG5hbWUuY19zdHIoKSk7CiAgICAgaWYgKGl0ICE9
IG1WYXJ5aW5nTG9uZ05hbWVNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiAoKml0KS5zZWNvbmQ7
CisgICAgICAgIHJldHVybiAoKml0KS5zZWNvbmQuY19zdHIoKTsKIAogICAgIGludCBpZCA9IG1W
YXJ5aW5nTG9uZ05hbWVNYXAuc2l6ZSgpOwogICAgIFRTdHJpbmcgbWFwcGVkTmFtZSA9IG1hcExv
bmdOYW1lKGlkLCBuYW1lLCB0cnVlKTsKICAgICBtVmFyeWluZ0xvbmdOYW1lTWFwLmluc2VydCgK
LSAgICAgICAgVE1hcDxUU3RyaW5nLCBUU3RyaW5nPjo6dmFsdWVfdHlwZShuYW1lLCBtYXBwZWRO
YW1lKSk7CisgICAgICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz46OnZhbHVl
X3R5cGUobmFtZS5jX3N0cigpLCBtYXBwZWROYW1lLmNfc3RyKCkpKTsKICAgICByZXR1cm4gbWFw
cGVkTmFtZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgKaW5kZXggNTQwOTA5ZWE5YWJlM2JiNzQw
ZWYwZDBmYjVhNDlkMWQwNzdlZDE5Mi4uMDg2ZjJiOWU4YjBmNDMwNzJlNTAzMDdlYTc3MWJlYTk3
ZjJmNGNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L01hcExvbmdWYXJpYWJsZU5hbWVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgKQEAgLTEzLDI3ICsxMywyMSBAQAogI2lu
Y2x1ZGUgImNvbXBpbGVyL1ZhcmlhYmxlSW5mby5oIgogCiAvLyBUaGlzIHNpemUgZG9lcyBub3Qg
aW5jbHVkZSAnXDAnIGluIHRoZSBlbmQuCi0jZGVmaW5lIE1BWF9JREVOVElGSUVSX05BTUVfU0la
RSAzMgorI2RlZmluZSBNQVhfU0hPUlRFTkVEX0lERU5USUZJRVJfU0laRSAzMgogCiAvLyBUcmF2
ZXJzZXMgaW50ZXJtZWRpYXRlIHRyZWUgdG8gbWFwIGF0dHJpYnV0ZXMgYW5kIHVuaWZvcm1zIG5h
bWVzIHRoYXQgYXJlCi0vLyBsb25nZXIgdGhhbiBNQVhfSURFTlRJRklFUl9OQU1FX1NJWkUgdG8g
TUFYX0lERU5USUZJRVJfTkFNRV9TSVpFLgorLy8gbG9uZ2VyIHRoYW4gTUFYX1NIT1JURU5FRF9J
REVOVElGSUVSX1NJWkUgdG8gTUFYX1NIT1JURU5FRF9JREVOVElGSUVSX1NJWkUuCiBjbGFzcyBN
YXBMb25nVmFyaWFibGVOYW1lcyA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsKIHB1YmxpYzoK
LSAgICBNYXBMb25nVmFyaWFibGVOYW1lcyhUTWFwPFRTdHJpbmcsIFRTdHJpbmc+JiB2YXJ5aW5n
TG9uZ05hbWVNYXApOworICAgIE1hcExvbmdWYXJpYWJsZU5hbWVzKHN0ZDo6bWFwPHN0ZDo6c3Ry
aW5nLCBzdGQ6OnN0cmluZz4mIHZhcnlpbmdMb25nTmFtZU1hcCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCopOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENv
bnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlz
aXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRV
bmFyeShWaXNpdCwgVEludGVybVVuYXJ5Kik7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0U2VsZWN0
aW9uKFZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uKik7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0QWdn
cmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKik7CiAgICAgdmlydHVhbCBib29sIHZpc2l0
TG9vcChWaXNpdCwgVEludGVybUxvb3AqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCcmFuY2go
VmlzaXQsIFRJbnRlcm1CcmFuY2gqKTsKIAogcHJpdmF0ZToKICAgICBUU3RyaW5nIG1hcFZhcnlp
bmdMb25nTmFtZShjb25zdCBUU3RyaW5nJiBuYW1lKTsKIAotICAgIFRNYXA8VFN0cmluZywgVFN0
cmluZz4mIG1WYXJ5aW5nTG9uZ05hbWVNYXA7CisgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0
ZDo6c3RyaW5nPiYgbVZhcnlpbmdMb25nTmFtZU1hcDsKIH07CiAKICNlbmRpZiAgLy8gQ09NUElM
RVJfTUFQX0xPTkdfVkFSSUFCTEVfTkFNRVNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCmluZGV4IGEwZmViMDdl
YjM1MmQwYjYxZTMxMjcwOTZjNjVhMDRjMTg1ZGMzY2UuLjU1MmZhNTA2NmRlMmZmMjU4ZmFhM2Jk
NGRiNjMyY2FjNWEyOTdhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcApAQCAtMzA1LDI1ICszMDUsMjggQEAg
Ym9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmlu
YXJ5KiBub2RlKQogCiBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRVbmFyeShWaXNpdCB2aXNp
dCwgVEludGVybVVuYXJ5KiBub2RlKQogeworICAgIFRTdHJpbmcgcHJlU3RyaW5nOworICAgIFRT
dHJpbmcgcG9zdFN0cmluZyA9ICIpIjsKKwogICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKICAg
ICB7Ci0gICAgICAgIGNhc2UgRU9wTmVnYXRpdmU6IHdyaXRlVHJpcGxldCh2aXNpdCwgIigtIiwg
TlVMTCwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wVmVjdG9yTG9naWNhbE5vdDogd3Jp
dGVUcmlwbGV0KHZpc2l0LCAibm90KCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNl
IEVPcExvZ2ljYWxOb3Q6IHdyaXRlVHJpcGxldCh2aXNpdCwgIighIiwgTlVMTCwgIikiKTsgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wTmVnYXRpdmU6IHByZVN0cmluZyA9ICIoLSI7IGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcFZlY3RvckxvZ2ljYWxOb3Q6IHByZVN0cmluZyA9ICJub3QoIjsgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDogcHJlU3RyaW5nID0gIighIjsgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBFT3BQb3N0SW5jcmVtZW50OiB3cml0ZVRyaXBsZXQodmlzaXQsICIo
IiwgTlVMTCwgIisrKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BQb3N0RGVjcmVtZW50OiB3
cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgTlVMTCwgIi0tKSIpOyBicmVhazsKLSAgICAgICAgY2Fz
ZSBFT3BQcmVJbmNyZW1lbnQ6IHdyaXRlVHJpcGxldCh2aXNpdCwgIigrKyIsIE5VTEwsICIpIik7
IGJyZWFrOwotICAgICAgICBjYXNlIEVPcFByZURlY3JlbWVudDogd3JpdGVUcmlwbGV0KHZpc2l0
LCAiKC0tIiwgTlVMTCwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUG9zdEluY3JlbWVu
dDogcHJlU3RyaW5nID0gIigiOyBwb3N0U3RyaW5nID0gIisrKSI7IGJyZWFrOworICAgICAgICBj
YXNlIEVPcFBvc3REZWNyZW1lbnQ6IHByZVN0cmluZyA9ICIoIjsgcG9zdFN0cmluZyA9ICItLSki
OyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BQcmVJbmNyZW1lbnQ6IHByZVN0cmluZyA9ICIoKysi
OyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BQcmVEZWNyZW1lbnQ6IHByZVN0cmluZyA9ICIoLS0i
OyBicmVhazsKIAogICAgICAgICBjYXNlIEVPcENvbnZJbnRUb0Jvb2w6CiAgICAgICAgIGNhc2Ug
RU9wQ29udkZsb2F0VG9Cb29sOgogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRPcGVyYW5k
KCktPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNhc2UgMTogd3JpdGVUcmlwbGV0KHZpc2l0LCAiYm9vbCgiLCBOVUxMLCAiKSIpOyAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiB3cml0ZVRyaXBsZXQodmlzaXQsICJidmVj
MigiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6IHdyaXRlVHJp
cGxldCh2aXNpdCwgImJ2ZWMzKCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgNDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiYnZlYzQoIiwgTlVMTCwgIikiKTsgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSAxOiBwcmVTdHJpbmcgPSAgImJvb2woIjsgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgMjogcHJlU3RyaW5nID0gImJ2ZWMyKCI7IGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMzogcHJlU3RyaW5nID0gImJ2ZWMzKCI7IGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgNDogcHJlU3RyaW5nID0gImJ2ZWM0KCI7IGJyZWFrOwogICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTMzMSwxMCArMzM0LDEwIEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNp
dFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkqIG5vZGUpCiAgICAgICAgIGNhc2UgRU9w
Q29udkludFRvRmxvYXQ6CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wZXJhbmQoKS0+
Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSAxOiB3cml0ZVRyaXBsZXQodmlzaXQsICJmbG9hdCgiLCBOVUxMLCAiKSIpOyAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiB3cml0ZVRyaXBsZXQodmlzaXQsICJ2ZWMyKCIs
IE5VTEwsICIpIik7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzogd3JpdGVUcmlwbGV0
KHZpc2l0LCAidmVjMygiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDQ6IHdyaXRlVHJpcGxldCh2aXNpdCwgInZlYzQoIiwgTlVMTCwgIikiKTsgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSAxOiBwcmVTdHJpbmcgPSAiZmxvYXQoIjsgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgMjogcHJlU3RyaW5nID0gInZlYzIoIjsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAzOiBwcmVTdHJpbmcgPSAidmVjMygiOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDQ6IHByZVN0cmluZyA9ICJ2ZWM0KCI7IGJyZWFrOwogICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
QEAgLTM0Miw0OSArMzQ1LDUzIEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdFVuYXJ5KFZp
c2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkqIG5vZGUpCiAgICAgICAgIGNhc2UgRU9wQ29udkJvb2xU
b0ludDoKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0T3BlcmFuZCgpLT5nZXRUeXBlKCku
Z2V0Tm9taW5hbFNpemUoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6
IHdyaXRlVHJpcGxldCh2aXNpdCwgImludCgiLCBOVUxMLCAiKSIpOyAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAyOiB3cml0ZVRyaXBsZXQodmlzaXQsICJpdmVjMigiLCBOVUxMLCAiKSIp
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6IHdyaXRlVHJpcGxldCh2aXNpdCwgIml2
ZWMzKCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDogd3JpdGVU
cmlwbGV0KHZpc2l0LCAiaXZlYzQoIiwgTlVMTCwgIikiKTsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAxOiBwcmVTdHJpbmcgPSAiaW50KCI7ICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIDI6IHByZVN0cmluZyA9ICJpdmVjMigiOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IDM6IHByZVN0cmluZyA9ICJpdmVjMygiOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6
IHByZVN0cmluZyA9ICJpdmVjNCgiOyBicmVhazsKICAgICAgICAgICAgICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgY2FzZSBFT3BSYWRpYW5zOiB3cml0ZVRyaXBsZXQodmlzaXQsICJyYWRpYW5zKCIsIE5VTEws
ICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcERlZ3JlZXM6IHdyaXRlVHJpcGxldCh2aXNp
dCwgImRlZ3JlZXMoIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wU2luOiB3
cml0ZVRyaXBsZXQodmlzaXQsICJzaW4oIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRU9wQ29zOiB3cml0ZVRyaXBsZXQodmlzaXQsICJjb3MoIiwgTlVMTCwgIikiKTsgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRU9wVGFuOiB3cml0ZVRyaXBsZXQodmlzaXQsICJ0YW4oIiwgTlVMTCwg
IikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wQXNpbjogd3JpdGVUcmlwbGV0KHZpc2l0LCAi
YXNpbigiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BBY29zOiB3cml0ZVRy
aXBsZXQodmlzaXQsICJhY29zKCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVP
cEF0YW46IHdyaXRlVHJpcGxldCh2aXNpdCwgImF0YW4oIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBFT3BFeHA6IHdyaXRlVHJpcGxldCh2aXNpdCwgImV4cCgiLCBOVUxMLCAi
KSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BMb2c6IHdyaXRlVHJpcGxldCh2aXNpdCwgImxv
ZygiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BFeHAyOiB3cml0ZVRyaXBs
ZXQodmlzaXQsICJleHAyKCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcExv
ZzI6IHdyaXRlVHJpcGxldCh2aXNpdCwgImxvZzIoIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgRU9wU3FydDogd3JpdGVUcmlwbGV0KHZpc2l0LCAic3FydCgiLCBOVUxMLCAiKSIp
OyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BJbnZlcnNlU3FydDogd3JpdGVUcmlwbGV0KHZpc2l0
LCAiaW52ZXJzZXNxcnQoIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFT3BB
YnM6IHdyaXRlVHJpcGxldCh2aXNpdCwgImFicygiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAg
ICAgY2FzZSBFT3BTaWduOiB3cml0ZVRyaXBsZXQodmlzaXQsICJzaWduKCIsIE5VTEwsICIpIik7
IGJyZWFrOwotICAgICAgICBjYXNlIEVPcEZsb29yOiB3cml0ZVRyaXBsZXQodmlzaXQsICJmbG9v
cigiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BDZWlsOiB3cml0ZVRyaXBs
ZXQodmlzaXQsICJjZWlsKCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcEZy
YWN0OiB3cml0ZVRyaXBsZXQodmlzaXQsICJmcmFjdCgiLCBOVUxMLCAiKSIpOyBicmVhazsKLQot
ICAgICAgICBjYXNlIEVPcExlbmd0aDogd3JpdGVUcmlwbGV0KHZpc2l0LCAibGVuZ3RoKCIsIE5V
TEwsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcE5vcm1hbGl6ZTogd3JpdGVUcmlwbGV0
KHZpc2l0LCAibm9ybWFsaXplKCIsIE5VTEwsICIpIik7IGJyZWFrOwotCi0gICAgICAgIGNhc2Ug
RU9wREZkeDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiZEZkeCgiLCBOVUxMLCAiKSIpOyBicmVhazsK
LSAgICAgICAgY2FzZSBFT3BERmR5OiB3cml0ZVRyaXBsZXQodmlzaXQsICJkRmR5KCIsIE5VTEws
ICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcEZ3aWR0aDogd3JpdGVUcmlwbGV0KHZpc2l0
LCAiZndpZHRoKCIsIE5VTEwsICIpIik7IGJyZWFrOwotCi0gICAgICAgIGNhc2UgRU9wQW55OiB3
cml0ZVRyaXBsZXQodmlzaXQsICJhbnkoIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRU9wQWxsOiB3cml0ZVRyaXBsZXQodmlzaXQsICJhbGwoIiwgTlVMTCwgIikiKTsgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wUmFkaWFuczogcHJlU3RyaW5nID0gInJhZGlhbnMoIjsgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wRGVncmVlczogcHJlU3RyaW5nID0gImRlZ3JlZXMoIjsgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wU2luOiBwcmVTdHJpbmcgPSAic2luKCI7IGJyZWFrOworICAgICAg
ICBjYXNlIEVPcENvczogcHJlU3RyaW5nID0gImNvcygiOyBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BUYW46IHByZVN0cmluZyA9ICJ0YW4oIjsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQXNpbjog
cHJlU3RyaW5nID0gImFzaW4oIjsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQWNvczogcHJlU3Ry
aW5nID0gImFjb3MoIjsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQXRhbjogcHJlU3RyaW5nID0g
ImF0YW4oIjsgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFT3BFeHA6IHByZVN0cmluZyA9ICJleHAo
IjsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9nOiBwcmVTdHJpbmcgPSAibG9nKCI7IGJyZWFr
OworICAgICAgICBjYXNlIEVPcEV4cDI6IHByZVN0cmluZyA9ICJleHAyKCI7IGJyZWFrOworICAg
ICAgICBjYXNlIEVPcExvZzI6IHByZVN0cmluZyA9ICJsb2cyKCI7IGJyZWFrOworICAgICAgICBj
YXNlIEVPcFNxcnQ6IHByZVN0cmluZyA9ICJzcXJ0KCI7IGJyZWFrOworICAgICAgICBjYXNlIEVP
cEludmVyc2VTcXJ0OiBwcmVTdHJpbmcgPSAiaW52ZXJzZXNxcnQoIjsgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBFT3BBYnM6IHByZVN0cmluZyA9ICJhYnMoIjsgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wU2lnbjogcHJlU3RyaW5nID0gInNpZ24oIjsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wRmxv
b3I6IHByZVN0cmluZyA9ICJmbG9vcigiOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDZWlsOiBw
cmVTdHJpbmcgPSAiY2VpbCgiOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BGcmFjdDogcHJlU3Ry
aW5nID0gImZyYWN0KCI7IGJyZWFrOworCisgICAgICAgIGNhc2UgRU9wTGVuZ3RoOiBwcmVTdHJp
bmcgPSAibGVuZ3RoKCI7IGJyZWFrOworICAgICAgICBjYXNlIEVPcE5vcm1hbGl6ZTogcHJlU3Ry
aW5nID0gIm5vcm1hbGl6ZSgiOyBicmVhazsKKworICAgICAgICBjYXNlIEVPcERGZHg6IHByZVN0
cmluZyA9ICJkRmR4KCI7IGJyZWFrOworICAgICAgICBjYXNlIEVPcERGZHk6IHByZVN0cmluZyA9
ICJkRmR5KCI7IGJyZWFrOworICAgICAgICBjYXNlIEVPcEZ3aWR0aDogcHJlU3RyaW5nID0gImZ3
aWR0aCgiOyBicmVhazsKKworICAgICAgICBjYXNlIEVPcEFueTogcHJlU3RyaW5nID0gImFueSgi
OyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BBbGw6IHByZVN0cmluZyA9ICJhbGwoIjsgYnJlYWs7
CiAKICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgYnJlYWs7CiAgICAgfQogCisgICAg
aWYgKHZpc2l0ID09IFByZVZpc2l0ICYmIG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSkK
KyAgICAgICAgcHJlU3RyaW5nID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkdldEVtdWxhdGVk
RnVuY3Rpb25OYW1lKHByZVN0cmluZyk7CisgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCBwcmVTdHJp
bmcuY19zdHIoKSwgTlVMTCwgcG9zdFN0cmluZy5jX3N0cigpKTsKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC00MjksNiArNDM2LDggQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QWdn
cmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKiBub2RlKQogewogICAgIGJvb2wg
dmlzaXRDaGlsZHJlbiA9IHRydWU7CiAgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2luaygp
OworICAgIFRTdHJpbmcgcHJlU3RyaW5nOworICAgIGJvb2wgZGVsYXllZFdyaXRlID0gZmFsc2U7
CiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAgIHsKICAgICAgICAgY2FzZSBFT3BTZXF1
ZW5jZTogewpAQCAtNDU3LDggKzQ2Niw4IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFn
Z3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKICAgICAgICAgY2Fz
ZSBFT3BQcm90b3R5cGU6IHsKICAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgog
ICAgICAgICAgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsKLSAgICAgICAgICAgIFRTdHJp
bmcgcmV0dXJuVHlwZSA9IGdldFR5cGVOYW1lKG5vZGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAg
ICBvdXQgPDwgcmV0dXJuVHlwZSA8PCAiICIgPDwgbm9kZS0+Z2V0TmFtZSgpOworICAgICAgICAg
ICAgd3JpdGVWYXJpYWJsZVR5cGUobm9kZS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIG91dCA8
PCAiICIgPDwgbm9kZS0+Z2V0TmFtZSgpOwogCiAgICAgICAgICAgICBvdXQgPDwgIigiOwogICAg
ICAgICAgICAgd3JpdGVGdW5jdGlvblBhcmFtZXRlcnMobm9kZS0+Z2V0U2VxdWVuY2UoKSk7CkBA
IC01NzUsMzQgKzU4NCwzOCBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUo
VmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqIG5vZGUpCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIEVPcExlc3NUaGFuOiB3cml0ZVRyaXBsZXQo
dmlzaXQsICJsZXNzVGhhbigiLCAiLCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BH
cmVhdGVyVGhhbjogd3JpdGVUcmlwbGV0KHZpc2l0LCAiZ3JlYXRlclRoYW4oIiwgIiwgIiwgIiki
KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDogd3JpdGVUcmlwbGV0KHZp
c2l0LCAibGVzc1RoYW5FcXVhbCgiLCAiLCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBF
T3BHcmVhdGVyVGhhbkVxdWFsOiB3cml0ZVRyaXBsZXQodmlzaXQsICJncmVhdGVyVGhhbkVxdWFs
KCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcFZlY3RvckVxdWFsOiB3cml0
ZVRyaXBsZXQodmlzaXQsICJlcXVhbCgiLCAiLCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2Fz
ZSBFT3BWZWN0b3JOb3RFcXVhbDogd3JpdGVUcmlwbGV0KHZpc2l0LCAibm90RXF1YWwoIiwgIiwg
IiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW46IHByZVN0cmluZyA9ICJs
ZXNzVGhhbigiOyBkZWxheWVkV3JpdGUgPSB0cnVlOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BH
cmVhdGVyVGhhbjogcHJlU3RyaW5nID0gImdyZWF0ZXJUaGFuKCI7IGRlbGF5ZWRXcml0ZSA9IHRy
dWU7IGJyZWFrOworICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6IHByZVN0cmluZyA9ICJs
ZXNzVGhhbkVxdWFsKCI7IGRlbGF5ZWRXcml0ZSA9IHRydWU7IGJyZWFrOworICAgICAgICBjYXNl
IEVPcEdyZWF0ZXJUaGFuRXF1YWw6IHByZVN0cmluZyA9ICJncmVhdGVyVGhhbkVxdWFsKCI7IGRl
bGF5ZWRXcml0ZSA9IHRydWU7IGJyZWFrOworICAgICAgICBjYXNlIEVPcFZlY3RvckVxdWFsOiBw
cmVTdHJpbmcgPSAiZXF1YWwoIjsgZGVsYXllZFdyaXRlID0gdHJ1ZTsgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wVmVjdG9yTm90RXF1YWw6IHByZVN0cmluZyA9ICJub3RFcXVhbCgiOyBkZWxheWVk
V3JpdGUgPSB0cnVlOyBicmVhazsKICAgICAgICAgY2FzZSBFT3BDb21tYTogd3JpdGVUcmlwbGV0
KHZpc2l0LCBOVUxMLCAiLCAiLCBOVUxMKTsgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBFT3BNb2Q6
IHdyaXRlVHJpcGxldCh2aXNpdCwgIm1vZCgiLCAiLCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAg
Y2FzZSBFT3BQb3c6IHdyaXRlVHJpcGxldCh2aXNpdCwgInBvdygiLCAiLCAiLCAiKSIpOyBicmVh
azsKLSAgICAgICAgY2FzZSBFT3BBdGFuOiB3cml0ZVRyaXBsZXQodmlzaXQsICJhdGFuKCIsICIs
ICIsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcE1pbjogd3JpdGVUcmlwbGV0KHZpc2l0
LCAibWluKCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcE1heDogd3JpdGVU
cmlwbGV0KHZpc2l0LCAibWF4KCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVP
cENsYW1wOiB3cml0ZVRyaXBsZXQodmlzaXQsICJjbGFtcCgiLCAiLCAiLCAiKSIpOyBicmVhazsK
LSAgICAgICAgY2FzZSBFT3BNaXg6IHdyaXRlVHJpcGxldCh2aXNpdCwgIm1peCgiLCAiLCAiLCAi
KSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BTdGVwOiB3cml0ZVRyaXBsZXQodmlzaXQsICJz
dGVwKCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcFNtb290aFN0ZXA6IHdy
aXRlVHJpcGxldCh2aXNpdCwgInNtb290aHN0ZXAoIiwgIiwgIiwgIikiKTsgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBFT3BEaXN0YW5jZTogd3JpdGVUcmlwbGV0KHZpc2l0LCAiZGlzdGFuY2UoIiwg
IiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRG90OiB3cml0ZVRyaXBsZXQodmlz
aXQsICJkb3QoIiwgIiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wQ3Jvc3M6IHdy
aXRlVHJpcGxldCh2aXNpdCwgImNyb3NzKCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAgICBj
YXNlIEVPcEZhY2VGb3J3YXJkOiB3cml0ZVRyaXBsZXQodmlzaXQsICJmYWNlZm9yd2FyZCgiLCAi
LCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BSZWZsZWN0OiB3cml0ZVRyaXBsZXQo
dmlzaXQsICJyZWZsZWN0KCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcFJl
ZnJhY3Q6IHdyaXRlVHJpcGxldCh2aXNpdCwgInJlZnJhY3QoIiwgIiwgIiwgIikiKTsgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRU9wTXVsOiB3cml0ZVRyaXBsZXQodmlzaXQsICJtYXRyaXhDb21wTXVs
dCgiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNb2Q6IHByZVN0cmluZyA9
ICJtb2QoIjsgZGVsYXllZFdyaXRlID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUG93
OiBwcmVTdHJpbmcgPSAicG93KCI7IGRlbGF5ZWRXcml0ZSA9IHRydWU7IGJyZWFrOworICAgICAg
ICBjYXNlIEVPcEF0YW46IHByZVN0cmluZyA9ICJhdGFuKCI7IGRlbGF5ZWRXcml0ZSA9IHRydWU7
IGJyZWFrOworICAgICAgICBjYXNlIEVPcE1pbjogcHJlU3RyaW5nID0gIm1pbigiOyBkZWxheWVk
V3JpdGUgPSB0cnVlOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNYXg6IHByZVN0cmluZyA9ICJt
YXgoIjsgZGVsYXllZFdyaXRlID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ2xhbXA6
IHByZVN0cmluZyA9ICJjbGFtcCgiOyBkZWxheWVkV3JpdGUgPSB0cnVlOyBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BNaXg6IHByZVN0cmluZyA9ICJtaXgoIjsgZGVsYXllZFdyaXRlID0gdHJ1ZTsg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wU3RlcDogcHJlU3RyaW5nID0gInN0ZXAoIjsgZGVsYXll
ZFdyaXRlID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wU21vb3RoU3RlcDogcHJlU3Ry
aW5nID0gInNtb290aHN0ZXAoIjsgZGVsYXllZFdyaXRlID0gdHJ1ZTsgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBFT3BEaXN0YW5jZTogcHJlU3RyaW5nID0gImRpc3RhbmNlKCI7IGRlbGF5ZWRXcml0
ZSA9IHRydWU7IGJyZWFrOworICAgICAgICBjYXNlIEVPcERvdDogcHJlU3RyaW5nID0gImRvdCgi
OyBkZWxheWVkV3JpdGUgPSB0cnVlOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDcm9zczogcHJl
U3RyaW5nID0gImNyb3NzKCI7IGRlbGF5ZWRXcml0ZSA9IHRydWU7IGJyZWFrOworICAgICAgICBj
YXNlIEVPcEZhY2VGb3J3YXJkOiBwcmVTdHJpbmcgPSAiZmFjZWZvcndhcmQoIjsgZGVsYXllZFdy
aXRlID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUmVmbGVjdDogcHJlU3RyaW5nID0g
InJlZmxlY3QoIjsgZGVsYXllZFdyaXRlID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
UmVmcmFjdDogcHJlU3RyaW5nID0gInJlZnJhY3QoIjsgZGVsYXllZFdyaXRlID0gdHJ1ZTsgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wTXVsOiBwcmVTdHJpbmcgPSAibWF0cml4Q29tcE11bHQoIjsg
ZGVsYXllZFdyaXRlID0gdHJ1ZTsgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsgYnJlYWs7CiAgICAgfQorICAgIGlmIChkZWxheWVkV3JpdGUgJiYgdmlzaXQgPT0gUHJl
VmlzaXQgJiYgbm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKQorICAgICAgICBwcmVTdHJp
bmcgPSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6R2V0RW11bGF0ZWRGdW5jdGlvbk5hbWUocHJl
U3RyaW5nKTsKKyAgICBpZiAoZGVsYXllZFdyaXRlKQorICAgICAgICB3cml0ZVRyaXBsZXQodmlz
aXQsIHByZVN0cmluZy5jX3N0cigpLCAiLCAiLCAiKSIpOwogICAgIHJldHVybiB2aXNpdENoaWxk
cmVuOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvT3V0cHV0SExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
T3V0cHV0SExTTC5jcHAKaW5kZXggYWZhOGYwNDZiYjM2NjI5MjlkMTk5YmZjNzU1ZjZmZmViNDYw
ZDA2Zi4uYjNhMDBkMzBkYzQ0M2RlN2ExNGM4ZTVhOWY5MGU4YmZmNzI2ODk4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcApA
QCAtNDUsOSArNDUsMTIgQEAgT3V0cHV0SExTTDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZj
b250ZXh0KSA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgdHJ1ZSwgdHIKICAgICBtVXNlc1BvaW50
U2l6ZSA9IGZhbHNlOwogICAgIG1Vc2VzWG9yID0gZmFsc2U7CiAgICAgbVVzZXNNb2QxID0gZmFs
c2U7Ci0gICAgbVVzZXNNb2QyID0gZmFsc2U7Ci0gICAgbVVzZXNNb2QzID0gZmFsc2U7Ci0gICAg
bVVzZXNNb2Q0ID0gZmFsc2U7CisgICAgbVVzZXNNb2QydiA9IGZhbHNlOworICAgIG1Vc2VzTW9k
MmYgPSBmYWxzZTsKKyAgICBtVXNlc01vZDN2ID0gZmFsc2U7CisgICAgbVVzZXNNb2QzZiA9IGZh
bHNlOworICAgIG1Vc2VzTW9kNHYgPSBmYWxzZTsKKyAgICBtVXNlc01vZDRmID0gZmFsc2U7CiAg
ICAgbVVzZXNGYWNlZm9yd2FyZDEgPSBmYWxzZTsKICAgICBtVXNlc0ZhY2Vmb3J3YXJkMiA9IGZh
bHNlOwogICAgIG1Vc2VzRmFjZWZvcndhcmQzID0gZmFsc2U7CkBAIC0xMzYsNyArMTM5LDcgQEAg
dm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1SZWZlcmVuY2VkVW5pZm9ybXMuZmluZChuYW1lLmNfc3RyKCkpICE9IG1S
ZWZlcmVuY2VkVW5pZm9ybXMuZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3JtICIgKyB0eXBlU3RyaW5nKHR5cGUp
ICsgIiAiICsgZGVjb3JhdGUobmFtZSkgKyBhcnJheVN0cmluZyh0eXBlKSArICI7XG4iOworICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybXMgKz0gInVuaWZvcm0gIiArIHR5cGVTdHJpbmco
dHlwZSkgKyAiICIgKyBkZWNvcmF0ZVVuaWZvcm0obmFtZSwgdHlwZS5pc0FycmF5KCkpICsgYXJy
YXlTdHJpbmcodHlwZSkgKyAiO1xuIjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxVmFyeWlu
Z0luIHx8IHF1YWxpZmllciA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4pCkBAIC0xODUsNyArMTg4
LDcgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogCiAgICAgICAgIGlmIChtVXNlc0ZyYWdD
b29yZCkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJ1bmlmb3JtIGZsb2F0NCBkeF9W
aWV3cG9ydDtcbiIKKyAgICAgICAgICAgIG91dCA8PCAidW5pZm9ybSBmbG9hdDQgZHhfQ29vcmQ7
XG4iCiAgICAgICAgICAgICAgICAgICAgInVuaWZvcm0gZmxvYXQyIGR4X0RlcHRoO1xuIjsKICAg
ICAgICAgfQogCkBAIC0zMDAsNyArMzAzLDcgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQog
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1SZWZlcmVuY2VkVW5p
Zm9ybXMuZmluZChuYW1lLmNfc3RyKCkpICE9IG1SZWZlcmVuY2VkVW5pZm9ybXMuZW5kKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1zICs9
ICJ1bmlmb3JtICIgKyB0eXBlU3RyaW5nKHR5cGUpICsgIiAiICsgZGVjb3JhdGUobmFtZSkgKyBh
cnJheVN0cmluZyh0eXBlKSArICI7XG4iOworICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9y
bXMgKz0gInVuaWZvcm0gIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZVVuaWZv
cm0obmFtZSwgdHlwZS5pc0FycmF5KCkpICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiO1xuIjsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBl
bHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKQpAQCAtNDc5LDggKzQ4MiwxNyBAQCB2
b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgICAgICAgICAifVxuIgogICAgICAgICAg
ICAgICAgIlxuIjsKICAgICB9Ci0gICAgCi0gICAgaWYgKG1Vc2VzTW9kMikKKworICAgIGlmICht
VXNlc01vZDJ2KQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJmbG9hdDIgbW9kKGZsb2F0MiB4LCBm
bG9hdDIgeSlcbiIKKyAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAiICAgIHJl
dHVybiB4IC0geSAqIGZsb29yKHggLyB5KTtcbiIKKyAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICAgICAiXG4iOworICAgIH0KKworICAgIGlmIChtVXNlc01vZDJmKQogICAgIHsKICAg
ICAgICAgb3V0IDw8ICJmbG9hdDIgbW9kKGZsb2F0MiB4LCBmbG9hdCB5KVxuIgogICAgICAgICAg
ICAgICAgIntcbiIKQEAgLTQ4OSw3ICs1MDEsMTYgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIo
KQogICAgICAgICAgICAgICAgIlxuIjsKICAgICB9CiAgICAgCi0gICAgaWYgKG1Vc2VzTW9kMykK
KyAgICBpZiAobVVzZXNNb2QzdikKKyAgICB7CisgICAgICAgIG91dCA8PCAiZmxvYXQzIG1vZChm
bG9hdDMgeCwgZmxvYXQzIHkpXG4iCisgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAg
ICAgIiAgICByZXR1cm4geCAtIHkgKiBmbG9vcih4IC8geSk7XG4iCisgICAgICAgICAgICAgICAi
fVxuIgorICAgICAgICAgICAgICAgIlxuIjsKKyAgICB9CisKKyAgICBpZiAobVVzZXNNb2QzZikK
ICAgICB7CiAgICAgICAgIG91dCA8PCAiZmxvYXQzIG1vZChmbG9hdDMgeCwgZmxvYXQgeSlcbiIK
ICAgICAgICAgICAgICAgICJ7XG4iCkBAIC00OTgsNyArNTE5LDE2IEBAIHZvaWQgT3V0cHV0SExT
TDo6aGVhZGVyKCkKICAgICAgICAgICAgICAgICJcbiI7CiAgICAgfQogCi0gICAgaWYgKG1Vc2Vz
TW9kNCkKKyAgICBpZiAobVVzZXNNb2Q0dikKKyAgICB7CisgICAgICAgIG91dCA8PCAiZmxvYXQ0
IG1vZChmbG9hdDQgeCwgZmxvYXQ0IHkpXG4iCisgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgIiAgICByZXR1cm4geCAtIHkgKiBmbG9vcih4IC8geSk7XG4iCisgICAgICAgICAg
ICAgICAifVxuIgorICAgICAgICAgICAgICAgIlxuIjsKKyAgICB9CisKKyAgICBpZiAobVVzZXNN
b2Q0ZikKICAgICB7CiAgICAgICAgIG91dCA8PCAiZmxvYXQ0IG1vZChmbG9hdDQgeCwgZmxvYXQg
eSlcbiIKICAgICAgICAgICAgICAgICJ7XG4iCkBAIC03MjksMTcgKzc1OSwyMiBAQCB2b2lkIE91
dHB1dEhMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCiAgICAgICAgIGlmIChx
dWFsaWZpZXIgPT0gRXZxVW5pZm9ybSkKICAgICAgICAgewogICAgICAgICAgICAgbVJlZmVyZW5j
ZWRVbmlmb3Jtcy5pbnNlcnQobmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIG91dCA8PCBkZWNv
cmF0ZVVuaWZvcm0obmFtZSwgbm9kZS0+aXNBcnJheSgpKTsKICAgICAgICAgfQogICAgICAgICBl
bHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuaW5zZXJ0KG5hbWUuY19zdHIoKSk7CisgICAgICAgICAg
ICBvdXQgPDwgZGVjb3JhdGUobmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAocXVh
bGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcXVhbGlmaWVyID09IEV2cUludmFyaWFudFZhcnlp
bmdPdXQgfHwgcXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCBxdWFsaWZpZXIgPT0gRXZxSW52
YXJpYW50VmFyeWluZ0luKQogICAgICAgICB7CiAgICAgICAgICAgICBtUmVmZXJlbmNlZFZhcnlp
bmdzLmluc2VydChuYW1lLmNfc3RyKCkpOworICAgICAgICAgICAgb3V0IDw8IGRlY29yYXRlKG5h
bWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgb3V0
IDw8IGRlY29yYXRlKG5hbWUpOwogICAgICAgICB9Ci0KLSAgICAgICAgb3V0IDw8IGRlY29yYXRl
KG5hbWUpOwogICAgIH0KIH0KIApAQCAtMTQ0MiwxMiArMTQ3NywxNyBAQCBib29sIE91dHB1dEhM
U0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQog
ICAgICAgY2FzZSBFT3BWZWN0b3JOb3RFcXVhbDogICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIs
ICIgIT0gIiwgIikiKTsgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcE1vZDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRTZXF1ZW5jZSgpWzBdLT5n
ZXRBc1R5cGVkKCktPmdldE5vbWluYWxTaXplKCkpICAgLy8gTnVtYmVyIG9mIGNvbXBvbmVudHMg
aW4gdGhlIGZpcnN0IGFyZ3VtZW50CisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGxvb2sgYXQg
dGhlIG51bWJlciBvZiBjb21wb25lbnRzIGluIGJvdGggYXJndW1lbnRzCisgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPmdldFNlcXVlbmNlKClbMF0tPmdldEFzVHlwZWQoKS0+Z2V0Tm9taW5hbFNp
emUoKSAqIDEwCisgICAgICAgICAgICAgICAgICAgICArIG5vZGUtPmdldFNlcXVlbmNlKClbMV0t
PmdldEFzVHlwZWQoKS0+Z2V0Tm9taW5hbFNpemUoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgY2FzZSAxOiBtVXNlc01vZDEgPSB0cnVlOyBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSAyOiBtVXNlc01vZDIgPSB0cnVlOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAzOiBtVXNl
c01vZDMgPSB0cnVlOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSA0OiBtVXNlc01vZDQgPSB0
cnVlOyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMTogbVVzZXNNb2QxID0gdHJ1ZTsgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgMjI6IG1Vc2VzTW9kMnYgPSB0cnVlOyBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSAyMTogbVVzZXNNb2QyZiA9IHRydWU7IGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIDMzOiBtVXNlc01vZDN2ID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgMzE6IG1Vc2VzTW9kM2YgPSB0cnVlOyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA0NDog
bVVzZXNNb2Q0diA9IHRydWU7IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDQxOiBtVXNlc01v
ZDRmID0gdHJ1ZTsgYnJlYWs7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
CiAgICAgICAgICAgICB9CiAKQEAgLTE0OTgsNyArMTUzOCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6
dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpCiAKICAg
ICBpZiAobm9kZS0+dXNlc1Rlcm5hcnlPcGVyYXRvcigpKQogICAgIHsKLSAgICAgICAgb3V0IDw8
ICJ0IiA8PCBtVW5mb2xkU2VsZWN0LT5nZXRUZW1wb3JhcnlJbmRleCgpOworICAgICAgICBvdXQg
PDwgInMiIDw8IG1VbmZvbGRTZWxlY3QtPmdldE5leHRUZW1wb3JhcnlJbmRleCgpOwogICAgIH0K
ICAgICBlbHNlICAvLyBpZi9lbHNlIHN0YXRlbWVudAogICAgIHsKQEAgLTE1NjIsMjEgKzE2MDIs
NiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3Ag
Km5vZGUpCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGlmIChub2RlLT5nZXRJbml0
KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1VbmZvbGRTZWxlY3QtPnRyYXZlcnNlKG5vZGUt
PmdldEluaXQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChub2RlLT5nZXRD
b25kaXRpb24oKSkKLSAgICAgICAgewotICAgICAgICAgICAgbVVuZm9sZFNlbGVjdC0+dHJhdmVy
c2Uobm9kZS0+Z2V0Q29uZGl0aW9uKCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBp
ZiAobm9kZS0+Z2V0RXhwcmVzc2lvbigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBtVW5mb2xk
U2VsZWN0LT50cmF2ZXJzZShub2RlLT5nZXRFeHByZXNzaW9uKCkpOwotICAgICAgICB9Ci0KICAg
ICAgICAgb3V0IDw8ICJmb3IoIjsKICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5nZXRJbml0
KCkpCkBAIC0xNjEwLDcgKzE2MzUsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNp
dCB2aXNpdCwgVEludGVybUxvb3AgKm5vZGUpCiAgICAgfQogCiAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZShub2RlLT5nZXRMaW5lKCkpOwotICAgIG91dCA8PCAifVxuIjsKKyAgICBvdXQgPDwgIjt9
XG4iOwogCiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9vcERvV2hpbGUpCiAgICAgewpA
QCAtMTg0NCw3ICsxODY5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29w
KFRJbnRlcm1Mb29wICpub2RlKQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKLSAgICAgICAgICAgICAgICBv
dXQgPDwgIn1cbiI7CisgICAgICAgICAgICAgICAgb3V0IDw8ICI7fVxuIjsKIAogICAgICAgICAg
ICAgICAgIGluaXRpYWwgKz0gMjU1ICogaW5jcmVtZW50OwogICAgICAgICAgICAgICAgIGl0ZXJh
dGlvbnMgLT0gMjU1OwpAQCAtMjA0NSwxNCArMjA3MCw3IEBAIHZvaWQgT3V0cHV0SExTTDo6YWRk
Q29uc3RydWN0b3IoY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IFRTdHJpbmcgJm5hbWUsIGNvbnN0
IFRJCiAgICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxUVHlwZT4gUGFyYW1ldGVyQXJyYXk7CiAgICAg
UGFyYW1ldGVyQXJyYXkgY3RvclBhcmFtZXRlcnM7CiAKLSAgICBpZiAocGFyYW1ldGVycykKLSAg
ICB7Ci0gICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjpjb25zdF9pdGVyYXRvciBwYXJhbWV0
ZXIgPSBwYXJhbWV0ZXJzLT5iZWdpbigpOyBwYXJhbWV0ZXIgIT0gcGFyYW1ldGVycy0+ZW5kKCk7
IHBhcmFtZXRlcisrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjdG9yUGFyYW1ldGVycy5wdXNo
X2JhY2soKCpwYXJhbWV0ZXIpLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZS5nZXRTdHJ1Y3QoKSkKKyAgICBpZiAodHlwZS5nZXRT
dHJ1Y3QoKSkKICAgICB7CiAgICAgICAgIG1TdHJ1Y3ROYW1lcy5pbnNlcnQoZGVjb3JhdGUobmFt
ZSkpOwogCkBAIC0yMDgxLDYgKzIwOTksMTMgQEAgdm9pZCBPdXRwdXRITFNMOjphZGRDb25zdHJ1
Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAmbmFtZSwgY29uc3QgVEkKICAg
ICAgICAgICAgIGN0b3JQYXJhbWV0ZXJzLnB1c2hfYmFjaygqZmllbGRzW2ldLnR5cGUpOwogICAg
ICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKHBhcmFtZXRlcnMpCisgICAgeworICAgICAgICBm
b3IgKFRJbnRlcm1TZXF1ZW5jZTo6Y29uc3RfaXRlcmF0b3IgcGFyYW1ldGVyID0gcGFyYW1ldGVy
cy0+YmVnaW4oKTsgcGFyYW1ldGVyICE9IHBhcmFtZXRlcnMtPmVuZCgpOyBwYXJhbWV0ZXIrKykK
KyAgICAgICAgeworICAgICAgICAgICAgY3RvclBhcmFtZXRlcnMucHVzaF9iYWNrKCgqcGFyYW1l
dGVyKS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkpOworICAgICAgICB9CisgICAgfQogICAgIGVs
c2UgVU5SRUFDSEFCTEUoKTsKIAogICAgIFRTdHJpbmcgY29uc3RydWN0b3I7CkBAIC0yMzM3LDEz
ICsyMzYyLDIxIEBAIFRTdHJpbmcgT3V0cHV0SExTTDo6c3RydWN0TG9va3VwKGNvbnN0IFRTdHJp
bmcgJnR5cGVOYW1lKQogCiBUU3RyaW5nIE91dHB1dEhMU0w6OmRlY29yYXRlKGNvbnN0IFRTdHJp
bmcgJnN0cmluZykKIHsKLSAgICBpZiAoc3RyaW5nLnN1YnN0cigwLCAzKSAhPSAiZ2xfIiAmJiBz
dHJpbmcuc3Vic3RyKDAsIDMpICE9ICJkeF8iKQorICAgIGlmIChzdHJpbmcuY29tcGFyZSgwLCAz
LCAiZ2xfIikgIT0gMCAmJiBzdHJpbmcuY29tcGFyZSgwLCAzLCAiZHhfIikgIT0gMCkKICAgICB7
CiAgICAgICAgIHJldHVybiAiXyIgKyBzdHJpbmc7CiAgICAgfQotICAgIGVsc2UKKyAgICAKKyAg
ICByZXR1cm4gc3RyaW5nOworfQorCitUU3RyaW5nIE91dHB1dEhMU0w6OmRlY29yYXRlVW5pZm9y
bShjb25zdCBUU3RyaW5nICZzdHJpbmcsIGJvb2wgYXJyYXkpCit7CisgICAgaWYgKGFycmF5KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICAgICAgcmV0dXJuICJhcl8iICsgc3Ry
aW5nOyAgIC8vIEFsbG93cyBpZGVudGlmeWluZyBhcnJheXMgb2Ygc2l6ZSAxCiAgICAgfQorICAg
IAorICAgIHJldHVybiBkZWNvcmF0ZShzdHJpbmcpOwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmgKaW5kZXggODA1NTYxYWZiYmU1
MzQzYWYxYTcwMGY3OTZjMGNiMGUyMmRlNzU4NC4uMDZhZDg0OTg2ZmRkNzZkYTZiMTliZDdmYTEy
NjM5NmNiMjA5M2Q0MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL091dHB1dEhMU0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0SExTTC5oCkBAIC0zMSw3ICszMSw4IEBAIGNsYXNzIE91dHB1dEhMU0wgOiBw
dWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIHN0YXRpYyBUU3RyaW5nIHF1YWxpZmllclN0cmlu
ZyhUUXVhbGlmaWVyIHF1YWxpZmllcik7CiAgICAgc3RhdGljIFRTdHJpbmcgYXJyYXlTdHJpbmco
Y29uc3QgVFR5cGUgJnR5cGUpOwogICAgIHN0YXRpYyBUU3RyaW5nIGluaXRpYWxpemVyKGNvbnN0
IFRUeXBlICZ0eXBlKTsKLSAgICBzdGF0aWMgVFN0cmluZyBkZWNvcmF0ZShjb25zdCBUU3RyaW5n
ICZzdHJpbmcpOyAgIC8vIFByZXBlbmQgYW4gdW5kZXJzY29yZSB0byBhdm9pZCBuYW1pbmcgY2xh
c2hlcworICAgIHN0YXRpYyBUU3RyaW5nIGRlY29yYXRlKGNvbnN0IFRTdHJpbmcgJnN0cmluZyk7
ICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXBlbmRzIGFuIHVuZGVyc2NvcmUgdG8gYXZvaWQg
bmFtaW5nIGNsYXNoZXMKKyAgICBzdGF0aWMgVFN0cmluZyBkZWNvcmF0ZVVuaWZvcm0oY29uc3Qg
VFN0cmluZyAmc3RyaW5nLCBib29sIGFycmF5KTsKIAogICBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBo
ZWFkZXIoKTsKQEAgLTkwLDkgKzkxLDEyIEBAIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVElu
dGVybVRyYXZlcnNlcgogICAgIGJvb2wgbVVzZXNQb2ludFNpemU7CiAgICAgYm9vbCBtVXNlc1hv
cjsKICAgICBib29sIG1Vc2VzTW9kMTsKLSAgICBib29sIG1Vc2VzTW9kMjsKLSAgICBib29sIG1V
c2VzTW9kMzsKLSAgICBib29sIG1Vc2VzTW9kNDsKKyAgICBib29sIG1Vc2VzTW9kMnY7CisgICAg
Ym9vbCBtVXNlc01vZDJmOworICAgIGJvb2wgbVVzZXNNb2QzdjsKKyAgICBib29sIG1Vc2VzTW9k
M2Y7CisgICAgYm9vbCBtVXNlc01vZDR2OworICAgIGJvb2wgbVVzZXNNb2Q0ZjsKICAgICBib29s
IG1Vc2VzRmFjZWZvcndhcmQxOwogICAgIGJvb2wgbVVzZXNGYWNlZm9yd2FyZDI7CiAgICAgYm9v
bCBtVXNlc0ZhY2Vmb3J3YXJkMzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwCmluZGV4IDNmMDgzNmQ3NTJkZjIxYWE3MzIxZmE3
MDI3M2U0MDRiOTIxNGVkZmUuLjQzMWY4ZDFjZTIwZDFiNmJlNmFhYmI5ZjQ5ZjliZmUwODViMDBj
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJz
ZUhlbHBlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bh
cnNlSGVscGVyLmNwcApAQCAtMTk2LDcgKzE5Niw2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cGFy
c2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdFNpemUsIFRN
CiAvLwogdm9pZCBUUGFyc2VDb250ZXh0OjpyZWNvdmVyKCkKIHsKLSAgICByZWNvdmVyZWRGcm9t
RXJyb3IgPSB0cnVlOwogfQogCiAvLwpAQCAtNDQ5LDE2ICs0NDgsMTYgQEAgYm9vbCBUUGFyc2VD
b250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50
aWZpZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJlc2Vy
dmVkIGJ1aWx0LWluIG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2ZWwo
KSkgewotICAgICAgICBpZiAoaWRlbnRpZmllci5zdWJzdHIoMCwgMykgPT0gVFN0cmluZygiZ2xf
IikpIHsKKyAgICAgICAgaWYgKGlkZW50aWZpZXIuY29tcGFyZSgwLCAzLCAiZ2xfIikgPT0gMCkg
ewogICAgICAgICAgICAgZXJyb3IobGluZSwgcmVzZXJ2ZWRFcnJNc2csICJnbF8iLCAiIik7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2hhZGVyU3Bl
YyA9PSBTSF9XRUJHTF9TUEVDKSB7Ci0gICAgICAgICAgICBpZiAoaWRlbnRpZmllci5zdWJzdHIo
MCwgNikgPT0gVFN0cmluZygid2ViZ2xfIikpIHsKKyAgICAgICAgICAgIGlmIChpZGVudGlmaWVy
LmNvbXBhcmUoMCwgNiwgIndlYmdsXyIpID09IDApIHsKICAgICAgICAgICAgICAgICBlcnJvcihs
aW5lLCByZXNlcnZlZEVyck1zZywgIndlYmdsXyIsICIiKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLnN1YnN0
cigwLCA3KSA9PSBUU3RyaW5nKCJfd2ViZ2xfIikpIHsKKyAgICAgICAgICAgIGlmIChpZGVudGlm
aWVyLmNvbXBhcmUoMCwgNywgIl93ZWJnbF8iKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgZXJy
b3IobGluZSwgcmVzZXJ2ZWRFcnJNc2csICJfd2ViZ2xfIiwgIiIpOwogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtNTU0LDcgKzU1Myw3IEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKGludCBsaW5lLCBUSW50ZXJtTm9kZSog
bm9kZSwgVEZ1bmN0aW9uCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICgh
dHlwZS0+aXNNYXRyaXgoKSkgeworICAgIGlmICghdHlwZS0+aXNNYXRyaXgoKSB8fCAhbWF0cml4
SW5NYXRyaXgpIHsKICAgICAgICAgaWYgKChvcCAhPSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgc2l6
ZSAhPSAxICYmIHNpemUgPCB0eXBlLT5nZXRPYmplY3RTaXplKCkpIHx8CiAgICAgICAgICAgICAo
b3AgPT0gRU9wQ29uc3RydWN0U3RydWN0ICYmIHNpemUgPCB0eXBlLT5nZXRPYmplY3RTaXplKCkp
KSB7CiAgICAgICAgICAgICBlcnJvcihsaW5lLCAibm90IGVub3VnaCBkYXRhIHByb3ZpZGVkIGZv
ciBjb25zdHJ1Y3Rpb24iLCAiY29uc3RydWN0b3IiLCAiIik7CkBAIC05MzAsNyArOTI5LDggQEAg
Ym9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBU
U3RyaW5nJiBleHRlbnNpb24pCiAgICAgICAgIGVycm9yKGxpbmUsICJleHRlbnNpb24iLCBleHRl
bnNpb24uY19zdHIoKSwgImlzIG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQotICAgIGlmIChpdGVyLT5zZWNvbmQgPT0gRUJoRGlzYWJsZSkgeworICAgIC8vIElu
IEdMU0wgRVMsIGFuIGV4dGVuc2lvbidzIGRlZmF1bHQgYmVoYXZpb3IgaXMgImRpc2FibGUiLgor
ICAgIGlmIChpdGVyLT5zZWNvbmQgPT0gRUJoRGlzYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0gRUJo
VW5kZWZpbmVkKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJleHRlbnNpb24iLCBleHRlbnNpb24u
Y19zdHIoKSwgImlzIGRpc2FibGVkIik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTk0Myw2ICs5NDMsMTIgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNr
KGludCBsaW5lLCBjb25zdCBUU3RyaW5nJiBleHRlbnNpb24pCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitib29sIFRQYXJzZUNvbnRleHQ6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIGV4
dGVuc2lvbikKK3sKKyAgICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBleHRlbnNpb25CZWhhdmlvci5maW5kKGV4dGVuc2lvbik7CisgICAgcmV0dXJuIChpdGVyICE9
IGV4dGVuc2lvbkJlaGF2aW9yLmVuZCgpKTsKK30KKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CiAvLwogLy8gTm9uLUVycm9ycy4KQEAgLTE0MTksNiArMTQyNSw1MyBAQCBUSW50ZXJtVHlwZWQq
IFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRl
cm1UeXBlZCogbgogICAgIHJldHVybiB0eXBlZE5vZGU7CiB9CiAKK2Jvb2wgVFBhcnNlQ29udGV4
dDo6ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRp
ZmllcikKK3sKKyAgICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKKworICAgIC8vIEVtYmVkZGVkIHN0
cnVjdHVyZSBkZWZpbml0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBwZXIgR0xTTCBFUyBzcGVjLgor
ICAgIC8vIFRoZXkgYXJlbid0IGFsbG93ZWQgaW4gR0xTTCBlaXRoZXIsIGJ1dCB3ZSBuZWVkIHRv
IGRldGVjdCB0aGlzIGhlcmUKKyAgICAvLyBzbyB3ZSBkb24ndCByZWx5IG9uIHRoZSBHTFNMIGNv
bXBpbGVyIHRvIGNhdGNoIGl0LgorICAgIGlmIChzdHJ1Y3ROZXN0aW5nTGV2ZWwgPiAxKSB7Cisg
ICAgICAgIGVycm9yKGxpbmUsICIiLCAiRW1iZWRkZWQgc3RydWN0IGRlZmluaXRpb25zIGFyZSBu
b3QgYWxsb3dlZCIsICIiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFRQYXJzZUNvbnRleHQ6OmV4aXRTdHJ1Y3REZWNsYXJhdGlv
bigpCit7CisgICAgLS1zdHJ1Y3ROZXN0aW5nTGV2ZWw7Cit9CisKK25hbWVzcGFjZSB7CisKK2Nv
bnN0IGludCBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nID0gNDsKKworfSAgLy8gbmFtZXNwYWNlCisK
K2Jvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soVFNvdXJjZUxvYyBs
aW5lLCBjb25zdCBUVHlwZSYgZmllbGRUeXBlKQoreworICAgIGlmIChzaGFkZXJTcGVjICE9IFNI
X1dFQkdMX1NQRUMpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChm
aWVsZFR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICAvLyBXZSdyZSBhbHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBk
ZWZpbml0aW9uIGF0IHRoaXMgcG9pbnQsIHNvIGFkZAorICAgIC8vIG9uZSB0byB0aGUgZmllbGQn
cyBzdHJ1Y3QgbmVzdGluZy4KKyAgICBpZiAoMSArIGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0
TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgeworICAgICAgICBlcnJvcihsaW5l
LCAiIiwgIiIsICJSZWZlcmVuY2Ugb2Ygc3RydWN0IHR5cGUgJXMgZXhjZWVkcyBtYXhpbXVtIHN0
cnVjdCBuZXN0aW5nIG9mICVkIiwKKyAgICAgICAgICAgICAgZmllbGRUeXBlLmdldFR5cGVOYW1l
KCkuY19zdHIoKSwga1dlYkdMTWF4U3RydWN0TmVzdGluZyk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogLy8KIC8vIFBhcnNlIGFuIGFycmF5
IG9mIHN0cmluZ3MgdXNpbmcgeXlwYXJzZS4KIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5oCmluZGV4IDg2MzdkODkwYjNmYWNkNDYz
MWJhZjY3ZjJmNmIwYTdjZTJiYjY0NmMuLjNlMDU3NjNiMTYxYzdkNjYzMzMxODVmNjg4NGYyNTQz
ODk0ZjM4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9QYXJzZUhlbHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9QYXJzZUhlbHBlci5oCkBAIC0zMSw5ICszMSwyNSBAQCBzdHJ1Y3QgVFByYWdtYSB7CiAvLwog
c3RydWN0IFRQYXJzZUNvbnRleHQgewogICAgIFRQYXJzZUNvbnRleHQoVFN5bWJvbFRhYmxlJiBz
eW10LCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dCwgVEludGVybWVkaWF0ZSYgaW50ZXJtLCBTaFNo
YWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGludCBvcHRpb25zLCBib29sIGNoZWNr
c1ByZWNFcnJvcnMsIGNvbnN0IGNoYXIqIHNvdXJjZVBhdGgsIFRJbmZvU2luayYgaXMpIDoKLSAg
ICAgICAgICAgIGludGVybWVkaWF0ZShpbnRlcm0pLCBzeW1ib2xUYWJsZShzeW10KSwgZXh0ZW5z
aW9uQmVoYXZpb3IoZXh0KSwgaW5mb1NpbmsoaXMpLCBzaGFkZXJUeXBlKHR5cGUpLCBzaGFkZXJT
cGVjKHNwZWMpLCBjb21waWxlT3B0aW9ucyhvcHRpb25zKSwgY2hlY2tzUHJlY2lzaW9uRXJyb3Jz
KGNoZWNrc1ByZWNFcnJvcnMpLCBzb3VyY2VQYXRoKHNvdXJjZVBhdGgpLCB0cmVlUm9vdCgwKSwK
LSAgICAgICAgICAgIHJlY292ZXJlZEZyb21FcnJvcihmYWxzZSksIG51bUVycm9ycygwKSwgbGV4
QWZ0ZXJUeXBlKGZhbHNlKSwgbG9vcE5lc3RpbmdMZXZlbCgwKSwKLSAgICAgICAgICAgIGluVHlw
ZVBhcmVuKGZhbHNlKSwgc2Nhbm5lcihOVUxMKSwgY29udGV4dFByYWdtYSh0cnVlLCBmYWxzZSkg
eyAgfQorICAgICAgICAgICAgaW50ZXJtZWRpYXRlKGludGVybSksCisgICAgICAgICAgICBzeW1i
b2xUYWJsZShzeW10KSwKKyAgICAgICAgICAgIGV4dGVuc2lvbkJlaGF2aW9yKGV4dCksCisgICAg
ICAgICAgICBpbmZvU2luayhpcyksCisgICAgICAgICAgICBzaGFkZXJUeXBlKHR5cGUpLAorICAg
ICAgICAgICAgc2hhZGVyU3BlYyhzcGVjKSwKKyAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9w
dGlvbnMpLAorICAgICAgICAgICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKKyAgICAgICAgICAg
IHRyZWVSb290KDApLAorICAgICAgICAgICAgbnVtRXJyb3JzKDApLAorICAgICAgICAgICAgbGV4
QWZ0ZXJUeXBlKGZhbHNlKSwKKyAgICAgICAgICAgIGxvb3BOZXN0aW5nTGV2ZWwoMCksCisgICAg
ICAgICAgICBzdHJ1Y3ROZXN0aW5nTGV2ZWwoMCksCisgICAgICAgICAgICBpblR5cGVQYXJlbihm
YWxzZSksCisgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25UeXBlKE5VTEwpLAorICAgICAgICAg
ICAgZnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2UpLAorICAgICAgICAgICAgY2hlY2tzUHJlY2lz
aW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLAorICAgICAgICAgICAgY29udGV4dFByYWdtYSh0
cnVlLCBmYWxzZSksCisgICAgICAgICAgICBzY2FubmVyKE5VTEwpIHsgIH0KICAgICBUSW50ZXJt
ZWRpYXRlJiBpbnRlcm1lZGlhdGU7IC8vIHRvIGhvbGQgYW5kIGJ1aWxkIGEgcGFyc2UgdHJlZQog
ICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGU7ICAgLy8gc3ltYm9sIHRhYmxlIHRoYXQgZ29l
cyB3aXRoIHRoZSBsYW5ndWFnZSBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCiAgICAgVEV4dGVuc2lv
bkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcjsgIC8vIG1hcHBpbmcgYmV0d2VlbiBzdXBwb3J0
ZWQgZXh0ZW5zaW9ucyBhbmQgY3VycmVudCBiZWhhdmlvci4KQEAgLTQzLDI0ICs1OSwyOSBAQCBz
dHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAgICAgaW50IGNvbXBpbGVPcHRpb25zOwogICAgIGNvbnN0
IGNoYXIqIHNvdXJjZVBhdGg7ICAgICAgLy8gUGF0aCBvZiBzb3VyY2UgZmlsZSBvciBOVUxMLgog
ICAgIFRJbnRlcm1Ob2RlKiB0cmVlUm9vdDsgICAgICAgLy8gcm9vdCBvZiBwYXJzZSB0cmVlIGJl
aW5nIGNyZWF0ZWQKLSAgICBib29sIHJlY292ZXJlZEZyb21FcnJvcjsgICAgIC8vIHRydWUgaWYg
YSBwYXJzZSBlcnJvciBoYXMgb2NjdXJyZWQsIGJ1dCB3ZSBjb250aW51ZSB0byBwYXJzZQogICAg
IGludCBudW1FcnJvcnM7CiAgICAgYm9vbCBsZXhBZnRlclR5cGU7ICAgICAgICAgICAvLyB0cnVl
IGlmIHdlJ3ZlIHJlY29nbml6ZWQgYSB0eXBlLCBzbyBjYW4gb25seSBiZSBsb29raW5nIGZvciBh
biBpZGVudGlmaWVyCiAgICAgaW50IGxvb3BOZXN0aW5nTGV2ZWw7ICAgICAgICAvLyAwIGlmIG91
dHNpZGUgYWxsIGxvb3BzCisgICAgaW50IHN0cnVjdE5lc3RpbmdMZXZlbDsgICAgICAvLyBpbmNy
ZW1lbnRlZCB3aGlsZSBwYXJzaW5nIGEgc3RydWN0IGRlY2xhcmF0aW9uCiAgICAgYm9vbCBpblR5
cGVQYXJlbjsgICAgICAgICAgICAvLyB0cnVlIGlmIGluIHBhcmVudGhlc2VzLCBsb29raW5nIG9u
bHkgZm9yIGFuIGlkZW50aWZpZXIKICAgICBjb25zdCBUVHlwZSogY3VycmVudEZ1bmN0aW9uVHlw
ZTsgIC8vIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCdzIGN1cnJlbnRseSBi
ZWluZyBwYXJzZWQKICAgICBib29sIGZ1bmN0aW9uUmV0dXJuc1ZhbHVlOyAgIC8vIHRydWUgaWYg
YSBub24tdm9pZCBmdW5jdGlvbiBoYXMgYSByZXR1cm4KICAgICBib29sIGNoZWNrc1ByZWNpc2lv
bkVycm9yczsgIC8vIHRydWUgaWYgYW4gZXJyb3Igd2lsbCBiZSBnZW5lcmF0ZWQgd2hlbiBhIHZh
cmlhYmxlIGlzIGRlY2xhcmVkIHdpdGhvdXQgcHJlY2lzaW9uLCBleHBsaWNpdCBvciBpbXBsaWNp
dC4KKyAgICBzdHJ1Y3QgVFByYWdtYSBjb250ZXh0UHJhZ21hOworICAgIFRTdHJpbmcgSGFzaEVy
ck1zZzsKKyAgICBib29sIEFmdGVyRU9GOworICAgIHZvaWQqIHNjYW5uZXI7CiAKICAgICB2b2lk
IGVycm9yKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIqIHRv
a2VuLAogICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvRm9ybWF0LCAuLi4pOwog
ICAgIHZvaWQgd2FybmluZyhUU291cmNlTG9jIGxvYywgY29uc3QgY2hhciogcmVhc29uLCBjb25z
dCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvRm9y
bWF0LCAuLi4pOwotICAgIGJvb2wgcmVzZXJ2ZWRFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBU
U3RyaW5nJiBpZGVudGlmaWVyKTsKICAgICB2b2lkIHJlY292ZXIoKTsKIAogICAgIGJvb2wgcGFy
c2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRz
JiwgaW50IGxpbmUpOwogICAgIGJvb2wgcGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYs
IGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiwgaW50IGxpbmUpOworCisgICAgYm9vbCByZXNl
cnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOwogICAg
IHZvaWQgYXNzaWduRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQs
IFRTdHJpbmcgcmlnaHQpOwogICAgIHZvaWQgdW5hcnlPcEVycm9yKGludCBsaW5lLCBjb25zdCBj
aGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKICAgICB2b2lkIGJpbmFyeU9wRXJyb3IoaW50IGxp
bmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwpAQCAtODAs
MTUgKzEwMSwxOSBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAgICAgYm9vbCBzYW1wbGVyRXJy
b3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiBy
ZWFzb24pOwogICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGluZSwgY29u
c3QgVFB1YmxpY1R5cGUmIHBUeXBlKTsKICAgICBib29sIHBhcmFtZXRlclNhbXBsZXJFcnJvckNo
ZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpOwot
ICAgIGJvb2wgY29udGFpbnNTYW1wbGVyKFRUeXBlJiB0eXBlKTsKICAgICBib29sIG5vbkluaXRD
b25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiB0eXBlKTsKICAgICBib29sIG5vbkluaXRFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBp
ZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOwogICAg
IGJvb2wgcGFyYW1FcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1
YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUqIHR5cGUpOwogICAgIGJvb2wgZXh0ZW5zaW9u
RXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYpOworICAgIGJvb2wgc3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKKworICAgIGJvb2wgY29udGFpbnNTYW1w
bGVyKFRUeXBlJiB0eXBlKTsKKyAgICBib29sIGFyZUFsbENoaWxkQ29uc3QoVEludGVybUFnZ3Jl
Z2F0ZSogYWdnck5vZGUpOwogICAgIGNvbnN0IFRGdW5jdGlvbiogZmluZEZ1bmN0aW9uKGludCBs
aW5lLCBURnVuY3Rpb24qIHBmbkNhbGwsIGJvb2wgKmJ1aWx0SW4gPSAwKTsKICAgICBib29sIGV4
ZWN1dGVJbml0aWFsaXplcihUU291cmNlTG9jIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQ
dWJsaWNUeXBlJiBwVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQqIGluaXRpYWxpemVyLCBUSW50ZXJtTm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFy
aWFibGUgPSAwKTsKLSAgICBib29sIGFyZUFsbENoaWxkQ29uc3QoVEludGVybUFnZ3JlZ2F0ZSog
YWdnck5vZGUpOworICAgIGJvb2wgYXJyYXlTZXRNYXhTaXplKFRJbnRlcm1TeW1ib2wqLCBUVHlw
ZSosIGludCwgYm9vbCwgVFNvdXJjZUxvYyk7CisKICAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0
cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29uc3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRGdW5jdGlvbios
IFRTb3VyY2VMb2MpOwogICAgIFRJbnRlcm1UeXBlZCogZm9sZENvbnN0Q29uc3RydWN0b3IoVElu
dGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUsIGNvbnN0IFRUeXBlJiB0eXBlKTsKICAgICBUSW50ZXJt
VHlwZWQqIGNvbnN0cnVjdFN0cnVjdChUSW50ZXJtTm9kZSosIFRUeXBlKiwgaW50LCBUU291cmNl
TG9jLCBib29sIHN1YnNldCk7CkBAIC05NywxMSArMTIyLDE0IEBAIHN0cnVjdCBUUGFyc2VDb250
ZXh0IHsKICAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4Tm9kZShpbnQgLCBUSW50ZXJt
VHlwZWQqLCBUU291cmNlTG9jKTsKICAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0QXJyYXlOb2Rl
KGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBUU291cmNlTG9jIGxpbmUpOwogICAgIFRJ
bnRlcm1UeXBlZCogYWRkQ29uc3RTdHJ1Y3QoVFN0cmluZyYgLCBUSW50ZXJtVHlwZWQqLCBUU291
cmNlTG9jKTsKLSAgICBib29sIGFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5cGUq
LCBpbnQsIGJvb2wsIFRTb3VyY2VMb2MpOwotICAgIHZvaWQqIHNjYW5uZXI7Ci0gICAgc3RydWN0
IFRQcmFnbWEgY29udGV4dFByYWdtYTsKLSAgICBUU3RyaW5nIEhhc2hFcnJNc2c7Ci0gICAgYm9v
bCBBZnRlckVPRjsKKworICAgIC8vIFBlcmZvcm1zIGFuIGVycm9yIGNoZWNrIGZvciBlbWJlZGRl
ZCBzdHJ1Y3QgZGVjbGFyYXRpb25zLgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciB3
YXMgcmFpc2VkIGR1ZSB0byB0aGUgZGVjbGFyYXRpb24gb2YKKyAgICAvLyB0aGlzIHN0cnVjdC4K
KyAgICBib29sIGVudGVyU3RydWN0RGVjbGFyYXRpb24oVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBU
U3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwor
CisgICAgYm9vbCBzdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhUU291cmNlTG9jIGxpbmUsIGNvbnN0
IFRUeXBlJiBmaWVsZFR5cGUpOwogfTsKIAogaW50IFBhUGFyc2VTdHJpbmdzKGludCBjb3VudCwg
Y29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuaAppbmRleCA1NWUw
OWRiYzQwNTVhZjUyMGMwZmNlNWQ1NWM1NjgwMDRjNWIzZjQyLi5hOGE1OWM2OWFjZDkxMjFkMWQx
ZGZlODNjZTRkMzdkOGU1YzczZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5oCkBAIC0yNTMsMTIgKzI1MywxOCBAQCBwdWJsaWM6CiAg
ICAgcG9pbnRlciBhZGRyZXNzKHJlZmVyZW5jZSB4KSBjb25zdCB7IHJldHVybiAmeDsgfQogICAg
IGNvbnN0X3BvaW50ZXIgYWRkcmVzcyhjb25zdF9yZWZlcmVuY2UgeCkgY29uc3QgeyByZXR1cm4g
Jng7IH0KIAotICAgIHBvb2xfYWxsb2NhdG9yKCkgOiBhbGxvY2F0b3IoR2xvYmFsUG9vbEFsbG9j
YXRvcikgeyB9Ci0gICAgcG9vbF9hbGxvY2F0b3IoVFBvb2xBbGxvY2F0b3ImIGEpIDogYWxsb2Nh
dG9yKGEpIHsgfQorICAgIHBvb2xfYWxsb2NhdG9yKCkgOiBhbGxvY2F0b3IoJkdsb2JhbFBvb2xB
bGxvY2F0b3IpIHsgfQorICAgIHBvb2xfYWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yJiBhKSA6IGFs
bG9jYXRvcigmYSkgeyB9CiAgICAgcG9vbF9hbGxvY2F0b3IoY29uc3QgcG9vbF9hbGxvY2F0b3I8
VD4mIHApIDogYWxsb2NhdG9yKHAuYWxsb2NhdG9yKSB7IH0KIAorICAgIHRlbXBsYXRlIDxjbGFz
cyBPdGhlcj4KKyAgICBwb29sX2FsbG9jYXRvcjxUPiYgb3BlcmF0b3I9KGNvbnN0IHBvb2xfYWxs
b2NhdG9yPE90aGVyPiYgcCkgeworICAgICAgYWxsb2NhdG9yID0gcC5hbGxvY2F0b3I7CisgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgdGVtcGxhdGU8Y2xhc3MgT3RoZXI+Ci0gICAg
cG9vbF9hbGxvY2F0b3IoY29uc3QgcG9vbF9hbGxvY2F0b3I8T3RoZXI+JiBwKSA6IGFsbG9jYXRv
cihwLmdldEFsbG9jYXRvcigpKSB7IH0KKyAgICBwb29sX2FsbG9jYXRvcihjb25zdCBwb29sX2Fs
bG9jYXRvcjxPdGhlcj4mIHApIDogYWxsb2NhdG9yKCZwLmdldEFsbG9jYXRvcigpKSB7IH0KIAog
I2lmIGRlZmluZWQoX19TVU5QUk9fQ0MpICYmICFkZWZpbmVkKF9SV1NURF9BTExPQ0FUT1IpCiAg
ICAgLy8gbGliQ1N0ZCBvbiBzb21lIHBsYXRmb3JtcyBoYXZlIGEgZGlmZmVyZW50IGFsbG9jYXRl
L2RlYWxsb2NhdGUgaW50ZXJmYWNlLgpAQCAtMjkwLDExICsyOTYsMTEgQEAgcHVibGljOgogICAg
IHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlw
ZT4oLTEpIC8gc2l6ZW9mKFQpOyB9CiAgICAgc2l6ZV90eXBlIG1heF9zaXplKGludCBzaXplKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KC0xKSAvIHNpemU7IH0KIAotICAg
IHZvaWQgc2V0QWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yKiBhKSB7IGFsbG9jYXRvciA9ICphOyB9
Ci0gICAgVFBvb2xBbGxvY2F0b3ImIGdldEFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIGFsbG9j
YXRvcjsgfQorICAgIHZvaWQgc2V0QWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yKiBhKSB7IGFsbG9j
YXRvciA9IGE7IH0KKyAgICBUUG9vbEFsbG9jYXRvciYgZ2V0QWxsb2NhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gKmFsbG9jYXRvcjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVFBvb2xBbGxvY2F0b3ImIGFs
bG9jYXRvcjsKKyAgICBUUG9vbEFsbG9jYXRvciogYWxsb2NhdG9yOwogfTsKIAogI2VuZGlmIC8v
IF9QT09MQUxMT0NfSU5DTFVERURfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9TaEhhbmRsZS5oCmluZGV4IGJmNjFkMjllNTA3MDc1MmY2MTJjMzBlNTViYzc0NmQx
NTgxNDc5ZDQuLjhkZGYwZjE1MjdhODViMTNkNzFlMmNlOWI3ZjJlZmM0YmRkN2Y5NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCkBAIC0x
Niw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAorI2luY2x1
ZGUgImNvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvRXh0ZW5zaW9uQmVoYXZpb3IuaCIKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2luay5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCkBAIC02Niw2ICs2Nyw4IEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIEluaXRCdWlsdEluU3ltYm9sVGFibGUoY29uc3QgU2hCdWlsdEluUmVz
b3VyY2VzJiByZXNvdXJjZXMpOwogICAgIC8vIENsZWFycyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBw
cmV2aW91cyBjb21waWxhdGlvbi4KICAgICB2b2lkIGNsZWFyUmVzdWx0cygpOworICAgIC8vIFJl
dHVybiB0cnVlIGlmIGZ1bmN0aW9uIHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC4KKyAgICBib29sIGRl
dGVjdFJlY3Vyc2lvbihUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBnaXZlbiBzaGFkZXIgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtCiAgICAgLy8gZnVu
Y3Rpb25hbGl0eSBtYW5kYXRlZCBpbiBHTFNMIDEuMCBzcGVjIEFwcGVuZGl4IEEuCiAgICAgYm9v
bCB2YWxpZGF0ZUxpbWl0YXRpb25zKFRJbnRlcm1Ob2RlKiByb290KTsKQEAgLTc4LDYgKzgxLDgg
QEAgcHJvdGVjdGVkOgogICAgIC8vIEdldCBidWlsdC1pbiBleHRlbnNpb25zIHdpdGggZGVmYXVs
dCBiZWhhdmlvci4KICAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGdldEV4dGVuc2lvbkJl
aGF2aW9yKCkgY29uc3Q7CiAKKyAgICBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciYgZ2V0
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBTaFNoYWRl
clR5cGUgc2hhZGVyVHlwZTsKICAgICBTaFNoYWRlclNwZWMgc2hhZGVyU3BlYzsKQEAgLTg4LDEz
ICs5MywxNSBAQCBwcml2YXRlOgogICAgIC8vIEJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZh
dWx0IGJlaGF2aW9yLgogICAgIFRFeHRlbnNpb25CZWhhdmlvciBleHRlbnNpb25CZWhhdmlvcjsK
IAorICAgIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOwor
CiAgICAgLy8gUmVzdWx0cyBvZiBjb21waWxhdGlvbi4KICAgICBUSW5mb1NpbmsgaW5mb1Npbms7
ICAvLyBPdXRwdXQgc2luay4KICAgICBUVmFyaWFibGVJbmZvTGlzdCBhdHRyaWJzOyAgLy8gQWN0
aXZlIGF0dHJpYnV0ZXMgaW4gdGhlIGNvbXBpbGVkIHNoYWRlci4KICAgICBUVmFyaWFibGVJbmZv
TGlzdCB1bmlmb3JtczsgIC8vIEFjdGl2ZSB1bmlmb3JtcyBpbiB0aGUgY29tcGlsZWQgc2hhZGVy
LgogCiAgICAgLy8gUGFpciBvZiBsb25nIHZhcnlpbmcgdmFyaWJhbGUgbmFtZSA8b3JpZ2luYWxO
YW1lLCBtYXBwZWROYW1lPi4KLSAgICBUTWFwPFRTdHJpbmcsIFRTdHJpbmc+IHZhcnlpbmdMb25n
TmFtZU1hcDsKKyAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IHZhcnlpbmdM
b25nTmFtZU1hcDsKIH07CiAKIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAKaW5kZXggYWI4Nzk5YzY1MWFkZmEwNjcxYjUzMTMz
MmM2ZDQyNDYxMzRlY2ZjOS4uMTNmMTFiNWNhOTJlODdiYmRhNTAyYjQyOGU0NzgwMDg2MmZlOWVm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRl
ckxhbmcuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFk
ZXJMYW5nLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCiAvLwpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5o
IgogCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL3ByZXByb2Nlc3Nvci9sZW5ndGhfbGltaXRzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvU2hI
YW5kbGUuaCIKIAogLy8KQEAgLTE5LDE2ICsyMCwyMSBAQAogLy8gYW5kIHRoZSBzaGFkaW5nIGxh
bmd1YWdlIGNvbXBpbGVyLgogLy8KIAotc3RhdGljIGludCBnZXRWYXJpYWJsZU1heExlbmd0aChj
b25zdCBUVmFyaWFibGVJbmZvTGlzdCYgdmFyTGlzdCkKK3N0YXRpYyBib29sIGNoZWNrQWN0aXZl
VW5pZm9ybUFuZEF0dHJpYk1heExlbmd0aHMoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXhwZWN0ZWRW
YWx1ZSkKIHsKLSAgICBUU3RyaW5nOjpzaXplX3R5cGUgbWF4TGVuID0gMDsKLSAgICBmb3IgKFRW
YXJpYWJsZUluZm9MaXN0Ojpjb25zdF9pdGVyYXRvciBpID0gdmFyTGlzdC5iZWdpbigpOwotICAg
ICAgICAgaSAhPSB2YXJMaXN0LmVuZCgpOyArK2kpCi0gICAgewotICAgICAgICBtYXhMZW4gPSBz
dGQ6Om1heChtYXhMZW4sIGktPm5hbWUuc2l6ZSgpKTsKLSAgICB9Ci0gICAgLy8gQWRkIDEgdG8g
aW5jbHVkZSBudWxsLXRlcm1pbmF0aW9uIGNoYXJhY3Rlci4KLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihtYXhMZW4pICsgMTsKKyAgICBpbnQgYWN0aXZlVW5pZm9ybUxpbWl0ID0gMDsKKyAg
ICBTaEdldEluZm8oaGFuZGxlLCBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmYWN0aXZl
VW5pZm9ybUxpbWl0KTsKKyAgICBpbnQgYWN0aXZlQXR0cmliTGltaXQgPSAwOworICAgIFNoR2V0
SW5mbyhoYW5kbGUsIFNIX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJmFjdGl2ZUF0dHJp
YkxpbWl0KTsKKyAgICByZXR1cm4gKGV4cGVjdGVkVmFsdWUgPT0gYWN0aXZlVW5pZm9ybUxpbWl0
ICYmIGV4cGVjdGVkVmFsdWUgPT0gYWN0aXZlQXR0cmliTGltaXQpOworfQorCitzdGF0aWMgYm9v
bCBjaGVja01hcHBlZE5hbWVNYXhMZW5ndGgoY29uc3QgU2hIYW5kbGUgaGFuZGxlLCBpbnQgZXhw
ZWN0ZWRWYWx1ZSkKK3sKKyAgICBpbnQgbWFwcGVkTmFtZU1heExlbmd0aCA9IDA7CisgICAgU2hH
ZXRJbmZvKGhhbmRsZSwgU0hfTUFQUEVEX05BTUVfTUFYX0xFTkdUSCwgJm1hcHBlZE5hbWVNYXhM
ZW5ndGgpOworICAgIHJldHVybiAoZXhwZWN0ZWRWYWx1ZSA9PSBtYXBwZWROYW1lTWF4TGVuZ3Ro
KTsKIH0KIAogc3RhdGljIHZvaWQgZ2V0VmFyaWFibGVJbmZvKFNoU2hhZGVySW5mbyB2YXJUeXBl
LApAQCAtNTksOSArNjUsMjAgQEAgc3RhdGljIHZvaWQgZ2V0VmFyaWFibGVJbmZvKFNoU2hhZGVy
SW5mbyB2YXJUeXBlLAogICAgIGlmIChsZW5ndGgpICpsZW5ndGggPSB2YXJJbmZvLm5hbWUuc2l6
ZSgpOwogICAgICpzaXplID0gdmFySW5mby5zaXplOwogICAgICp0eXBlID0gdmFySW5mby50eXBl
OwotICAgIHN0cmNweShuYW1lLCB2YXJJbmZvLm5hbWUuY19zdHIoKSk7Ci0gICAgaWYgKG1hcHBl
ZE5hbWUpCi0gICAgICAgIHN0cmNweShtYXBwZWROYW1lLCB2YXJJbmZvLm1hcHBlZE5hbWUuY19z
dHIoKSk7CisKKyAgICAvLyBUaGlzIHNpemUgbXVzdCBtYXRjaCB0aGF0IHF1ZXJpZWQgYnkKKyAg
ICAvLyBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGFuZCBTSF9BQ1RJVkVfQVRUUklCVVRF
X01BWF9MRU5HVEgKKyAgICAvLyBpbiBTaEdldEluZm8sIGJlbG93LgorICAgIGludCBhY3RpdmVV
bmlmb3JtQW5kQXR0cmliTGVuZ3RoID0gMSArIE1BWF9TWU1CT0xfTkFNRV9MRU47CisgICAgQVNT
RVJUKGNoZWNrQWN0aXZlVW5pZm9ybUFuZEF0dHJpYk1heExlbmd0aHMoaGFuZGxlLCBhY3RpdmVV
bmlmb3JtQW5kQXR0cmliTGVuZ3RoKSk7CisgICAgc3RybmNweShuYW1lLCB2YXJJbmZvLm5hbWUu
Y19zdHIoKSwgYWN0aXZlVW5pZm9ybUFuZEF0dHJpYkxlbmd0aCk7CisgICAgaWYgKG1hcHBlZE5h
bWUpIHsKKyAgICAgICAgLy8gVGhpcyBzaXplIG11c3QgbWF0Y2ggdGhhdCBxdWVyaWVkIGJ5Cisg
ICAgICAgIC8vIFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEggaW4gU2hHZXRJbmZvLCBiZWxvdy4K
KyAgICAgICAgaW50IG1heE1hcHBlZE5hbWVMZW5ndGggPSAxICsgTUFYX1NZTUJPTF9OQU1FX0xF
TjsKKyAgICAgICAgQVNTRVJUKGNoZWNrTWFwcGVkTmFtZU1heExlbmd0aChoYW5kbGUsIG1heE1h
cHBlZE5hbWVMZW5ndGgpKTsKKyAgICAgICAgc3RybmNweShtYXBwZWROYW1lLCB2YXJJbmZvLm1h
cHBlZE5hbWUuY19zdHIoKSwgbWF4TWFwcGVkTmFtZUxlbmd0aCk7CisgICAgfQogfQogCiAvLwpA
QCAtMTA0LDYgKzEyMSw4IEBAIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5S
ZXNvdXJjZXMqIHJlc291cmNlcykKIAogICAgIC8vIEV4dGVuc2lvbnMuCiAgICAgcmVzb3VyY2Vz
LT5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSAwOworICAgIHJlc291cmNlcy0+T0VTX0VHTF9p
bWFnZV9leHRlcm5hbCA9IDA7CisgICAgcmVzb3VyY2VzLT5BUkJfdGV4dHVyZV9yZWN0YW5nbGUg
PSAwOwogfQogCiAvLwpAQCAtMTkwLDE2ICsyMDksMTggQEAgdm9pZCBTaEdldEluZm8oY29uc3Qg
U2hIYW5kbGUgaGFuZGxlLCBTaFNoYWRlckluZm8gcG5hbWUsIGludCogcGFyYW1zKQogICAgICAg
ICAqcGFyYW1zID0gY29tcGlsZXItPmdldFVuaWZvcm1zKCkuc2l6ZSgpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFNIX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEg6Ci0gICAgICAgICpwYXJh
bXMgPSBnZXRWYXJpYWJsZU1heExlbmd0aChjb21waWxlci0+Z2V0VW5pZm9ybXMoKSk7CisgICAg
ICAgICpwYXJhbXMgPSAxICsgIE1BWF9TWU1CT0xfTkFNRV9MRU47CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU0hfQUNUSVZFX0FUVFJJQlVURVM6CiAgICAgICAgICpwYXJhbXMgPSBjb21waWxl
ci0+Z2V0QXR0cmlicygpLnNpemUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTSF9BQ1RJ
VkVfQVRUUklCVVRFX01BWF9MRU5HVEg6Ci0gICAgICAgICpwYXJhbXMgPSBnZXRWYXJpYWJsZU1h
eExlbmd0aChjb21waWxlci0+Z2V0QXR0cmlicygpKTsKKyAgICAgICAgKnBhcmFtcyA9IDEgKyBN
QVhfU1lNQk9MX05BTUVfTEVOOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNIX01BUFBFRF9O
QU1FX01BWF9MRU5HVEg6Ci0gICAgICAgICpwYXJhbXMgPSBjb21waWxlci0+Z2V0TWFwcGVkTmFt
ZU1heExlbmd0aCgpOworICAgICAgICAvLyBVc2UgbG9uZ2VyIGxlbmd0aCB0aGFuIE1BWF9TSE9S
VEVORURfSURFTlRJRklFUl9TSVpFIHRvCisgICAgICAgIC8vIGhhbmRsZSBhcnJheSBhbmQgc3Ry
dWN0IGRlcmVmZXJlbmNlcy4KKyAgICAgICAgKnBhcmFtcyA9IDEgKyBNQVhfU1lNQk9MX05BTUVf
TEVOOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xU
YWJsZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFi
bGUuY3BwCmluZGV4IDAyODE3ZDQ0NzE2MDc5ZTI5YzI0MWFkMDhjODQ0NmVjNjgxMTg5NWIuLmU2
Njk1ZDZiOTA0ZjVkZjIxMTA3NjU5ZmQzMzliNWZmMjViMjhlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcApAQCAtMTMs
NiArMTMsOCBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAorI2luY2x1ZGUgPGFsZ29yaXRobT4K
KwogLy8KIC8vIFRUeXBlIGhlbHBlciBmdW5jdGlvbiBuZWVkcyBhIHBsYWNlIHRvIGxpdmUuCiAv
LwpAQCAtNzEsNiArNzMsMjAgQEAgaW50IFRUeXBlOjpnZXRTdHJ1Y3RTaXplKCkgY29uc3QKICAg
ICByZXR1cm4gc3RydWN0dXJlU2l6ZTsKIH0KIAordm9pZCBUVHlwZTo6Y29tcHV0ZURlZXBlc3RT
dHJ1Y3ROZXN0aW5nKCkKK3sKKyAgICBpZiAoIWdldFN0cnVjdCgpKSB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpbnQgbWF4TmVzdGluZyA9IDA7CisgICAgZm9yIChUVHlwZUxpc3Q6
OmNvbnN0X2l0ZXJhdG9yIHRsID0gZ2V0U3RydWN0KCktPmJlZ2luKCk7IHRsICE9IGdldFN0cnVj
dCgpLT5lbmQoKTsgKyt0bCkgeworICAgICAgICBtYXhOZXN0aW5nID0gc3RkOjptYXgobWF4TmVz
dGluZywgKCgqdGwpLnR5cGUpLT5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpKTsKKyAgICB9CisK
KyAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IDEgKyBtYXhOZXN0aW5nOworfQorCiAvLwogLy8g
RHVtcCBmdW5jdGlvbnMuCiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9UcmFuc2xhdG9yRVNTTC5jcHAKaW5kZXggYmIyMDFhNDhjOTdjNzM5ODcy
NGQwNWNlNzg2N2I0ZmI3Mjc2NmQ2Yi4uZTNhMmMyYTgwMjQwYTk1M2Q5NzZmZjhmNzE5YTY5NzAy
ZjdhYjBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1RyYW5zbGF0b3JFU1NMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvVHJhbnNsYXRvckVTU0wuY3BwCkBAIC0xOCw2ICsxOCwxMCBAQCB2b2lkIFRyYW5zbGF0
b3JFU1NMOjp0cmFuc2xhdGUoVEludGVybU5vZGUqIHJvb3QpIHsKICAgICAvLyBXcml0ZSBidWls
dC1pbiBleHRlbnNpb24gYmVoYXZpb3JzLgogICAgIHdyaXRlRXh0ZW5zaW9uQmVoYXZpb3IoKTsK
IAorICAgIC8vIFdyaXRlIGVtdWxhdGVkIGJ1aWx0LWluIGZ1bmN0aW9ucyBpZiBuZWVkZWQuCisg
ICAgZ2V0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKS5PdXRwdXRFbXVsYXRlZEZ1bmN0aW9uRGVm
aW5pdGlvbigKKyAgICAgICAgc2luaywgZ2V0U2hhZGVyVHlwZSgpID09IFNIX0ZSQUdNRU5UX1NI
QURFUik7CisKICAgICAvLyBXcml0ZSB0cmFuc2xhdGVkIHNoYWRlci4KICAgICBUT3V0cHV0RVNT
TCBvdXRwdXRFU1NMKHNpbmspOwogICAgIHJvb3QtPnRyYXZlcnNlKCZvdXRwdXRFU1NMKTsKQEAg
LTI4LDcgKzMyLDkgQEAgdm9pZCBUcmFuc2xhdG9yRVNTTDo6d3JpdGVFeHRlbnNpb25CZWhhdmlv
cigpIHsKICAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGVuc2lvbkJlaGF2aW9yID0g
Z2V0RXh0ZW5zaW9uQmVoYXZpb3IoKTsKICAgICBmb3IgKFRFeHRlbnNpb25CZWhhdmlvcjo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IGV4dGVuc2lvbkJlaGF2aW9yLmJlZ2luKCk7CiAgICAgICAgICBp
dGVyICE9IGV4dGVuc2lvbkJlaGF2aW9yLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgc2luayA8
PCAiI2V4dGVuc2lvbiAiIDw8IGl0ZXItPmZpcnN0IDw8ICIgOiAiCi0gICAgICAgICAgICAgPDwg
Z2V0QmVoYXZpb3JTdHJpbmcoaXRlci0+c2Vjb25kKSA8PCAiXG4iOworICAgICAgICBpZiAoaXRl
ci0+c2Vjb25kICE9IEVCaFVuZGVmaW5lZCkgeworICAgICAgICAgICAgc2luayA8PCAiI2V4dGVu
c2lvbiAiIDw8IGl0ZXItPmZpcnN0IDw8ICIgOiAiCisgICAgICAgICAgICAgICAgIDw8IGdldEJl
aGF2aW9yU3RyaW5nKGl0ZXItPnNlY29uZCkgPDwgIlxuIjsKKyAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xh
dG9yR0xTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHJhbnNs
YXRvckdMU0wuY3BwCmluZGV4IDdhNjNhZTFmMDU3YmJiNTdjYTEzNGQ3ZmRhY2VjNDBiZmY1ZjY0
NjMuLmJiMDdhMWViNGU4ZmZmNjY2MWY5MjRmZGY3MDgzOWNmZTA5YzMwODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9yR0xTTC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNM
LmNwcApAQCAtMzEsNiArMzEsMTAgQEAgdm9pZCBUcmFuc2xhdG9yR0xTTDo6dHJhbnNsYXRlKFRJ
bnRlcm1Ob2RlKiByb290KSB7CiAgICAgLy8gV3JpdGUgR0xTTCB2ZXJzaW9uLgogICAgIHdyaXRl
VmVyc2lvbihnZXRTaGFkZXJUeXBlKCksIHJvb3QsIHNpbmspOwogCisgICAgLy8gV3JpdGUgZW11
bGF0ZWQgYnVpbHQtaW4gZnVuY3Rpb25zIGlmIG5lZWRlZC4KKyAgICBnZXRCdWlsdEluRnVuY3Rp
b25FbXVsYXRvcigpLk91dHB1dEVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKAorICAgICAgICBz
aW5rLCBmYWxzZSk7CisKICAgICAvLyBXcml0ZSB0cmFuc2xhdGVkIHNoYWRlci4KICAgICBUT3V0
cHV0R0xTTCBvdXRwdXRHTFNMKHNpbmspOwogICAgIHJvb3QtPnRyYXZlcnNlKCZvdXRwdXRHTFNM
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UeXBl
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVzLmgKaW5kZXgg
ZDBmY2MwOGI5YmNkNTEzMzNlMjFmNmJlZDAwYjQ4YzY3YTNjNzliOC4uZTFhMThmZDYzYjYwM2Nm
ZDFkNTQyYjhkOTFlNzk3ZTA3NmMyNzIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1R5cGVzLmgKQEAgLTg1LDIxICs4NSwyMiBAQCBwdWJsaWM6CiAgICAgVFR5
cGUoKSB7fQogICAgIFRUeXBlKFRCYXNpY1R5cGUgdCwgVFByZWNpc2lvbiBwLCBUUXVhbGlmaWVy
IHEgPSBFdnFUZW1wb3JhcnksIGludCBzID0gMSwgYm9vbCBtID0gZmFsc2UsIGJvb2wgYSA9IGZh
bHNlKSA6CiAgICAgICAgICAgICB0eXBlKHQpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwg
c2l6ZShzKSwgbWF0cml4KG0pLCBhcnJheShhKSwgYXJyYXlTaXplKDApLAotICAgICAgICAgICAg
bWF4QXJyYXlTaXplKDApLCBhcnJheUluZm9ybWF0aW9uVHlwZSgwKSwgc3RydWN0dXJlKDApLCBz
dHJ1Y3R1cmVTaXplKDApLCBmaWVsZE5hbWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDApCisg
ICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDApLCBzdHJ1
Y3R1cmUoMCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nKDApLCBmaWVs
ZE5hbWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDApCiAgICAgewogICAgIH0KICAgICBleHBs
aWNpdCBUVHlwZShjb25zdCBUUHVibGljVHlwZSAmcCkgOgogICAgICAgICAgICAgdHlwZShwLnR5
cGUpLCBwcmVjaXNpb24ocC5wcmVjaXNpb24pLCBxdWFsaWZpZXIocC5xdWFsaWZpZXIpLCBzaXpl
KHAuc2l6ZSksIG1hdHJpeChwLm1hdHJpeCksIGFycmF5KHAuYXJyYXkpLCBhcnJheVNpemUocC5h
cnJheVNpemUpLAotICAgICAgICAgICAgbWF4QXJyYXlTaXplKDApLCBhcnJheUluZm9ybWF0aW9u
VHlwZSgwKSwgc3RydWN0dXJlKDApLCBzdHJ1Y3R1cmVTaXplKDApLCBmaWVsZE5hbWUoMCksIG1h
bmdsZWQoMCksIHR5cGVOYW1lKDApCisgICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5
SW5mb3JtYXRpb25UeXBlKDApLCBzdHJ1Y3R1cmUoMCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBl
c3RTdHJ1Y3ROZXN0aW5nKDApLCBmaWVsZE5hbWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDAp
CiAgICAgewogICAgICAgICBpZiAocC51c2VyRGVmKSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUg
PSBwLnVzZXJEZWYtPmdldFN0cnVjdCgpOwogICAgICAgICAgICAgdHlwZU5hbWUgPSBOZXdQb29s
VFN0cmluZyhwLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBj
b21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKICAgICAgICAgfQogICAgIH0KICAgICBUVHlw
ZShUVHlwZUxpc3QqIHVzZXJEZWYsIGNvbnN0IFRTdHJpbmcmIG4sIFRQcmVjaXNpb24gcCA9IEVi
cFVuZGVmaW5lZCkgOgogICAgICAgICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCks
IHF1YWxpZmllcihFdnFUZW1wb3JhcnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShm
YWxzZSksIGFycmF5U2l6ZSgwKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJ
bmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSh1c2VyRGVmKSwgc3RydWN0dXJlU2l6ZSgwKSwg
ZmllbGROYW1lKDApLCBtYW5nbGVkKDApCisgICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFy
cmF5SW5mb3JtYXRpb25UeXBlKDApLCBzdHJ1Y3R1cmUodXNlckRlZiksIHN0cnVjdHVyZVNpemUo
MCksIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nKDApLCBmaWVsZE5hbWUoMCksIG1hbmdsZWQoMCkKICAg
ICB7CiAgICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcobi5jX3N0cigpKTsKICAgICB9
CkBAIC0xNDQsNiArMTQ1LDcgQEAgcHVibGljOgogCiAgICAgICAgIHN0cnVjdHVyZVNpemUgPSBj
b3B5T2Yuc3RydWN0dXJlU2l6ZTsKICAgICAgICAgbWF4QXJyYXlTaXplID0gY29weU9mLm1heEFy
cmF5U2l6ZTsKKyAgICAgICAgZGVlcGVzdFN0cnVjdE5lc3RpbmcgPSBjb3B5T2YuZGVlcGVzdFN0
cnVjdE5lc3Rpbmc7CiAgICAgICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5cGUg
PT0gMCk7CiAgICAgICAgIGFycmF5SW5mb3JtYXRpb25UeXBlID0gMDsgLy8gYXJyYXlJbmZvcm1h
dGlvblR5cGUgc2hvdWxkIG5vdCBiZSBzZXQgZm9yIGJ1aWx0SW4gc3ltYm9sIHRhYmxlIGxldmVs
CiAgICAgfQpAQCAtMjAyLDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2NhbGFyKCkg
Y29uc3QgeyByZXR1cm4gc2l6ZSA9PSAxICYmICFtYXRyaXggJiYgIXN0cnVjdHVyZTsgfQogCiAg
ICAgVFR5cGVMaXN0KiBnZXRTdHJ1Y3QoKSBjb25zdCB7IHJldHVybiBzdHJ1Y3R1cmU7IH0KLSAg
ICB2b2lkIHNldFN0cnVjdChUVHlwZUxpc3QqIHMpIHsgc3RydWN0dXJlID0gczsgfQorICAgIHZv
aWQgc2V0U3RydWN0KFRUeXBlTGlzdCogcykgeyBzdHJ1Y3R1cmUgPSBzOyBjb21wdXRlRGVlcGVz
dFN0cnVjdE5lc3RpbmcoKTsgfQogCiAgICAgY29uc3QgVFN0cmluZyYgZ2V0VHlwZU5hbWUoKSBj
b25zdAogICAgIHsKQEAgLTI2OCw5ICsyNzAsMjQgQEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIq
IGdldFF1YWxpZmllclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIDo6Z2V0UXVhbGlmaWVyU3RyaW5n
KHF1YWxpZmllcik7IH0KICAgICBUU3RyaW5nIGdldENvbXBsZXRlU3RyaW5nKCkgY29uc3Q7CiAK
KyAgICAvLyBJZiB0aGlzIHR5cGUgaXMgYSBzdHJ1Y3QsIHJldHVybnMgdGhlIGRlZXBlc3Qgc3Ry
dWN0IG5lc3Rpbmcgb2YKKyAgICAvLyBhbnkgZmllbGQgaW4gdGhlIHN0cnVjdC4gRm9yIGV4YW1w
bGU6CisgICAgLy8gICBzdHJ1Y3QgbmVzdGluZzEgeworICAgIC8vICAgICB2ZWM0IHBvc2l0aW9u
OworICAgIC8vICAgfTsKKyAgICAvLyAgIHN0cnVjdCBuZXN0aW5nMiB7CisgICAgLy8gICAgIG5l
c3RpbmcxIGZpZWxkMTsKKyAgICAvLyAgICAgdmVjNCBmaWVsZDI7CisgICAgLy8gICB9OworICAg
IC8vIEZvciB0eXBlICJuZXN0aW5nMiIsIHRoaXMgbWV0aG9kIHdvdWxkIHJldHVybiAyIC0tIHRo
ZSBudW1iZXIKKyAgICAvLyBvZiBzdHJ1Y3R1cmVzIHRocm91Z2ggd2hpY2ggaW5kaXJlY3Rpb24g
bXVzdCBvY2N1ciB0byByZWFjaCB0aGUKKyAgICAvLyBkZWVwZXN0IGZpZWxkIChuZXN0aW5nMi5m
aWVsZDEucG9zaXRpb24pLgorICAgIGludCBnZXREZWVwZXN0U3RydWN0TmVzdGluZygpIGNvbnN0
IHsgcmV0dXJuIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nOyB9CisKIHByb3RlY3RlZDoKICAgICB2b2lk
IGJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYpOwogICAgIGludCBnZXRTdHJ1Y3RTaXplKCkgY29u
c3Q7CisgICAgdm9pZCBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKIAogICAgIFRCYXNp
Y1R5cGUgdHlwZSAgICAgIDogNjsKICAgICBUUHJlY2lzaW9uIHByZWNpc2lvbjsKQEAgLTI4NCw2
ICszMDEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBUVHlwZUxpc3QqIHN0cnVjdHVyZTsgICAgICAv
LyAwIHVubGVzcyB0aGlzIGlzIGEgc3RydWN0CiAgICAgbXV0YWJsZSBpbnQgc3RydWN0dXJlU2l6
ZTsKKyAgICBpbnQgZGVlcGVzdFN0cnVjdE5lc3Rpbmc7CiAKICAgICBUU3RyaW5nICpmaWVsZE5h
bWU7ICAgICAgICAgLy8gZm9yIHN0cnVjdHVyZSBmaWVsZCBuYW1lcwogICAgIFRTdHJpbmcgKm1h
bmdsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
VW5mb2xkU2VsZWN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9V
bmZvbGRTZWxlY3QuY3BwCmluZGV4IGEzNmMzOTMxZWMwMWEwMDkwM2QwMzZmNDhiM2NmZWRlNTVm
MzA5NzAuLmQzOTg1ZTY4YjlmNmExZTE0YmQ1NWI1Y2FmMDM0ZDc3YjUyZDNlMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZvbGRTZWxlY3QuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZvbGRTZWxlY3Qu
Y3BwCkBAIC0yMCw4ICsyMCw5IEBAIFVuZm9sZFNlbGVjdDo6VW5mb2xkU2VsZWN0KFRQYXJzZUNv
bnRleHQgJmNvbnRleHQsIE91dHB1dEhMU0wgKm91dHB1dEhMU0wpIDogbUNvCiAKIHZvaWQgVW5m
b2xkU2VsZWN0Ojp0cmF2ZXJzZShUSW50ZXJtTm9kZSAqbm9kZSkKIHsKLSAgICBtVGVtcG9yYXJ5
SW5kZXgrKzsKKyAgICBpbnQgcmV3aW5kSW5kZXggPSBtVGVtcG9yYXJ5SW5kZXg7CiAgICAgbm9k
ZS0+dHJhdmVyc2UodGhpcyk7CisgICAgbVRlbXBvcmFyeUluZGV4ID0gcmV3aW5kSW5kZXg7CiB9
CiAKIGJvb2wgVW5mb2xkU2VsZWN0Ojp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVy
bVNlbGVjdGlvbiAqbm9kZSkKQEAgLTMwLDM2ICszMSw2NiBAQCBib29sIFVuZm9sZFNlbGVjdDo6
dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpCiAKICAg
ICBpZiAobm9kZS0+dXNlc1Rlcm5hcnlPcGVyYXRvcigpKQogICAgIHsKLSAgICAgICAgaW50IGkg
PSBtVGVtcG9yYXJ5SW5kZXgrKzsKKyAgICAgICAgaW50IGkgPSBtVGVtcG9yYXJ5SW5kZXg7CiAK
LSAgICAgICAgb3V0IDw8IG1PdXRwdXRITFNMLT50eXBlU3RyaW5nKG5vZGUtPmdldFR5cGUoKSkg
PDwgIiB0IiA8PCBpIDw8ICI7XG4iOworICAgICAgICBvdXQgPDwgbU91dHB1dEhMU0wtPnR5cGVT
dHJpbmcobm9kZS0+Z2V0VHlwZSgpKSA8PCAiIHMiIDw8IGkgPDwgIjtcbiI7CiAKKyAgICAgICAg
bVRlbXBvcmFyeUluZGV4ID0gaSArIDE7CiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50
cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgb3V0IDw8ICJpZigiOworICAgICAgICBtVGVtcG9yYXJ5
SW5kZXggPSBpICsgMTsKICAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKG1P
dXRwdXRITFNMKTsKICAgICAgICAgb3V0IDw8ICIpXG4iCiAgICAgICAgICAgICAgICAie1xuIjsK
KyAgICAgICAgbVRlbXBvcmFyeUluZGV4ID0gaSArIDE7CiAgICAgICAgIG5vZGUtPmdldFRydWVC
bG9jaygpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgb3V0IDw8ICIgICAgdCIgPDwgaSA8PCAi
ID0gIjsKKyAgICAgICAgb3V0IDw8ICIgICAgcyIgPDwgaSA8PCAiID0gIjsKKyAgICAgICAgbVRl
bXBvcmFyeUluZGV4ID0gaSArIDE7CiAgICAgICAgIG5vZGUtPmdldFRydWVCbG9jaygpLT50cmF2
ZXJzZShtT3V0cHV0SExTTCk7CiAgICAgICAgIG91dCA8PCAiO1xuIgogICAgICAgICAgICAgICAg
In1cbiIKICAgICAgICAgICAgICAgICJlbHNlXG4iCiAgICAgICAgICAgICAgICAie1xuIjsKKyAg
ICAgICAgbVRlbXBvcmFyeUluZGV4ID0gaSArIDE7CiAgICAgICAgIG5vZGUtPmdldEZhbHNlQmxv
Y2soKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgIG91dCA8PCAiICAgIHQiIDw8IGkgPDwgIiA9
ICI7CisgICAgICAgIG91dCA8PCAiICAgIHMiIDw8IGkgPDwgIiA9ICI7CisgICAgICAgIG1UZW1w
b3JhcnlJbmRleCA9IGkgKyAxOwogICAgICAgICBub2RlLT5nZXRGYWxzZUJsb2NrKCktPnRyYXZl
cnNlKG1PdXRwdXRITFNMKTsKICAgICAgICAgb3V0IDw8ICI7XG4iCiAgICAgICAgICAgICAgICAi
fVxuIjsKIAotICAgICAgICBtVGVtcG9yYXJ5SW5kZXgtLTsKKyAgICAgICAgbVRlbXBvcmFyeUlu
ZGV4ID0gaSArIDE7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbnQgVW5mb2xk
U2VsZWN0OjpnZXRUZW1wb3JhcnlJbmRleCgpCitib29sIFVuZm9sZFNlbGVjdDo6dmlzaXRMb29w
KFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqbm9kZSkKIHsKLSAgICByZXR1cm4gbVRlbXBvcmFy
eUluZGV4OworICAgIGludCByZXdpbmRJbmRleCA9IG1UZW1wb3JhcnlJbmRleDsKKworICAgIGlm
IChub2RlLT5nZXRJbml0KCkpCisgICAgeworICAgICAgICBub2RlLT5nZXRJbml0KCktPnRyYXZl
cnNlKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBpZiAobm9kZS0+Z2V0Q29uZGl0aW9uKCkpCisg
ICAgeworICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAg
fQorCisgICAgaWYgKG5vZGUtPmdldEV4cHJlc3Npb24oKSkKKyAgICB7CisgICAgICAgIG5vZGUt
PmdldEV4cHJlc3Npb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAgfQorCisgICAgbVRlbXBvcmFy
eUluZGV4ID0gcmV3aW5kSW5kZXg7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2ludCBVbmZv
bGRTZWxlY3Q6OmdldE5leHRUZW1wb3JhcnlJbmRleCgpCit7CisgICAgcmV0dXJuIG1UZW1wb3Jh
cnlJbmRleCsrOwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1VuZm9sZFNlbGVjdC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1VuZm9sZFNlbGVjdC5oCmluZGV4IGRlMjk2ZTQ0MjhkYWM1OGIxNmI2NzE5Yjk4NGU0
NDYyNmE1MzhhMjAuLjRhM2JhNWY4NmVkMDE0N2Y2OGQzMzg3MDYxYjI2M2Q2ZmU0MDczYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZvbGRTZWxl
Y3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5mb2xkU2Vs
ZWN0LmgKQEAgLTIzLDggKzIzLDkgQEAgY2xhc3MgVW5mb2xkU2VsZWN0IDogcHVibGljIFRJbnRl
cm1UcmF2ZXJzZXIKIAogICAgIHZvaWQgdHJhdmVyc2UoVEludGVybU5vZGUgKm5vZGUpOwogICAg
IGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUp
OworICAgIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqbm9kZSk7CiAK
LSAgICBpbnQgZ2V0VGVtcG9yYXJ5SW5kZXgoKTsKKyAgICBpbnQgZ2V0TmV4dFRlbXBvcmFyeUlu
ZGV4KCk7CiAKICAgcHJvdGVjdGVkOgogICAgIFRQYXJzZUNvbnRleHQgJm1Db250ZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGlt
aXRhdGlvbnMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhbGlk
YXRlTGltaXRhdGlvbnMuY3BwCmluZGV4IGI0NmU0YjkxYjI3Y2Q5ZWM4NWRlYWNlYzc4OTgzOWZm
ODdmYTFjMDguLjc2N2QwYmYzODQ4N2ExNzgwNDg5MDJlNmZmZjgxODc2MzZhMjdkYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFs
aWRhdGVMaW1pdGF0aW9ucy5jcHAKQEAgLTUzLDEzICs1Myw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgIElzTG9vcEluZGV4KHN5bWJvbCwgbUxvb3BTdGFjayk7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3Rh
bnRVbmlvbiopIHt9Ci0gICAgdmlydHVhbCBib29sIHZpc2l0QmluYXJ5KFZpc2l0LCBUSW50ZXJt
QmluYXJ5KikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCB2aXNpdFVuYXJ5KFZp
c2l0LCBUSW50ZXJtVW5hcnkqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHZp
c2l0U2VsZWN0aW9uKFZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uKikgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSop
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRMb29wKFZpc2l0LCBUSW50
ZXJtTG9vcCopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCcmFuY2go
VmlzaXQsIFRJbnRlcm1CcmFuY2gqKSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBtVmFsaWQ7CkBAIC05NCwxMyArODcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihUSW50
ZXJtQ29uc3RhbnRVbmlvbiopIHt9Ci0gICAgdmlydHVhbCBib29sIHZpc2l0QmluYXJ5KFZpc2l0
LCBUSW50ZXJtQmluYXJ5KikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCB2aXNp
dFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uKikgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFn
Z3JlZ2F0ZSopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRMb29wKFZp
c2l0LCBUSW50ZXJtTG9vcCopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdmlz
aXRCcmFuY2goVmlzaXQsIFRJbnRlcm1CcmFuY2gqKSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBtVXNlc0Zsb2F0TG9vcEluZGV4OwpAQCAtMTE3LDE0ICsxMDMsNiBAQCBW
YWxpZGF0ZUxpbWl0YXRpb25zOjpWYWxpZGF0ZUxpbWl0YXRpb25zKFNoU2hhZGVyVHlwZSBzaGFk
ZXJUeXBlLAogewogfQogCi12b2lkIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZpc2l0U3ltYm9sKFRJ
bnRlcm1TeW1ib2wqKQotewotfQotCi12b2lkIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZpc2l0Q29u
c3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiopCi17Ci19Ci0KIGJvb2wgVmFsaWRhdGVM
aW1pdGF0aW9uczo6dmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkqIG5vZGUpCiB7CiAg
ICAgLy8gQ2hlY2sgaWYgbG9vcCBpbmRleCBpcyBtb2RpZmllZCBpbiB0aGUgbG9vcCBib2R5LgpA
QCAtMTcwLDExICsxNDgsNiBAQCBib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZpc2l0VW5hcnko
VmlzaXQsIFRJbnRlcm1VbmFyeSogbm9kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUxpbWl0YXRpb25zOjp2aXNpdFNlbGVjdGlvbihWaXNpdCwgVEludGVybVNlbGVjdGlv
biopCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6
dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqIG5vZGUpCiB7CiAgICAgc3dp
dGNoIChub2RlLT5nZXRPcCgpKSB7CkBAIC0yMDksMTEgKzE4Miw2IEBAIGJvb2wgVmFsaWRhdGVM
aW1pdGF0aW9uczo6dmlzaXRMb29wKFZpc2l0LCBUSW50ZXJtTG9vcCogbm9kZSkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmlzaXRCcmFuY2goVmlz
aXQsIFRJbnRlcm1CcmFuY2gqKQotewotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIFZhbGlk
YXRlTGltaXRhdGlvbnM6OmVycm9yKFRTb3VyY2VMb2MgbG9jLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhbGlkYXRl
TGltaXRhdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYWxp
ZGF0ZUxpbWl0YXRpb25zLmgKaW5kZXggZGQyZTViZjA5YTIyNjg3ZWI4ZTBmYmMxYjc3MWZiMTZm
NTY3NmQ4Yi4uYTgzNWNiM2MyMjZlNjBmM2Y2ZWY4ZWMyZjY2NDkwY2ExMmFhYjRiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRh
dGlvbnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFsaWRh
dGVMaW1pdGF0aW9ucy5oCkBAIC0yNSwxNCArMjUsMTAgQEAgcHVibGljOgogCiAgICAgaW50IG51
bUVycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1OdW1FcnJvcnM7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q29u
c3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiopOwogICAgIHZpcnR1YWwgYm9vbCB2aXNp
dEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFyeSopOwogICAgIHZpcnR1YWwgYm9vbCB2aXNpdFVu
YXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRTZWxlY3Rp
b24oVmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24qKTsKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dy
ZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRM
b29wKFZpc2l0LCBUSW50ZXJtTG9vcCopOwotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJyYW5jaChW
aXNpdCwgVEludGVybUJyYW5jaCopOwogCiBwcml2YXRlOgogICAgIHZvaWQgZXJyb3IoVFNvdXJj
ZUxvYyBsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNw
cAppbmRleCBhMTNhODk2NTBhOTNmMTEzMzU2NDYxNDM5ZTFmNjgwNDhiOTc5ZDU1Li44NDNmMTg3
N2M5ODBhMzNlZGZjYzUwNTg5NjgzODc5NTIwMzc4N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcApAQCAtNjMsNiAr
NjMsNyBAQCBzdGF0aWMgU2hEYXRhVHlwZSBnZXRWYXJpYWJsZURhdGFUeXBlKGNvbnN0IFRUeXBl
JiB0eXBlKQogICAgICAgICAgIH0KICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOiByZXR1cm4gU0hf
U0FNUExFUl8yRDsKICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6IHJldHVybiBTSF9TQU1QTEVS
X0NVQkU7CisgICAgICBjYXNlIEVidFNhbXBsZXIyRFJlY3Q6IHJldHVybiBTSF9TQU1QTEVSXzJE
X1JFQ1RfQVJCOwogICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICB9CiAgICAgcmV0
dXJuIFNIX05PTkU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2VuZXJhdGVfZ2xzbGFuZ19sZXhlci5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9nZW5lcmF0ZV9nbHNsYW5nX2xleGVyLnNoCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyNjg0NzlkYWRiNTZiZWM4OTg4Nzg4MmRlNDk2MjA3ZGUwYjMyNGJkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nZW5lcmF0ZV9nbHNsYW5nX2xleGVyLnNoCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyEvYmluL2Jhc2gKLSMgQ29weXJpZ2h0IChjKSAy
MDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotIyBHZW5lcmF0ZXMg
R0xTTCBFUyBsZXhlciAtIGdsc2xhbmdfbGV4LmNwcAotCi1zY3JpcHRfZGlyPSQoZGlybmFtZSAk
MCkKLWlucHV0X2ZpbGU9JHNjcmlwdF9kaXIvZ2xzbGFuZy5sCi1vdXRwdXRfZmlsZT0kc2NyaXB0
X2Rpci9nbHNsYW5nX2xleC5jcHAKLWZsZXggLS1ub2xpbmUgLS1ub3VuaXN0ZCAtLW91dGZpbGU9
JG91dHB1dF9maWxlICRpbnB1dF9maWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvZ2VuZXJhdGVfZ2xzbGFuZ19wYXJzZXIuc2ggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2VuZXJhdGVfZ2xzbGFuZ19wYXJzZXIuc2gKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4OWY1YzBkYmQ0MWM0NzQyYzRlMjJhN2IwMDQ3
MDNhMTU3NThmMTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dlbmVyYXRlX2dsc2xhbmdf
cGFyc2VyLnNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyEvYmluL2Jhc2gKLSMg
Q29weXJpZ2h0IChjKSAyMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LQotIyBHZW5lcmF0ZXMgR0xTTCBFUyBwYXJzZXIgLSBnbHNsYW5nX3RhYi5oIGFuZCBnbHNsYW5n
X3RhYi5jcHAKLQotc2NyaXB0X2Rpcj0kKGRpcm5hbWUgJDApCi1pbnB1dF9maWxlPSRzY3JpcHRf
ZGlyL2dsc2xhbmcueQotb3V0cHV0X2hlYWRlcj0kc2NyaXB0X2Rpci9nbHNsYW5nX3RhYi5oCi1v
dXRwdXRfc291cmNlPSRzY3JpcHRfZGlyL2dsc2xhbmdfdGFiLmNwcAotYmlzb24gLS1uby1saW5l
cyAtLXNrZWxldG9uPXlhY2MuYyAtLWRlZmluZXM9JG91dHB1dF9oZWFkZXIgLS1vdXRwdXQ9JG91
dHB1dF9zb3VyY2UgJGlucHV0X2ZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9nZW5lcmF0ZV9wYXJzZXIuc2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvZ2VuZXJhdGVfcGFyc2VyLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0NzIxOTE1
ZTNjZmIyN2M4N2ZmOTNhMGY5NTNhZDkxNjQzY2M2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2VuZXJhdGVfcGFyc2VyLnNoCkBAIC0w
LDAgKzEsMjcgQEAKKyMhL2Jpbi9iYXNoCisjIENvcHlyaWdodCAoYykgMjAxMCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisj
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyMgR2VuZXJhdGVzIEdMU0wgRVMgcGFyc2Vy
IC0gZ2xzbGFuZ19sZXguY3BwLCBnbHNsYW5nX3RhYi5oLCBhbmQgZ2xzbGFuZ190YWIuY3BwCisK
K3J1bl9mbGV4KCkKK3sKK2lucHV0X2ZpbGU9JHNjcmlwdF9kaXIvJDEubAorb3V0cHV0X3NvdXJj
ZT0kc2NyaXB0X2Rpci8kMV9sZXguY3BwCitmbGV4IC0tbm9saW5lIC0tbm91bmlzdGQgLS1vdXRm
aWxlPSRvdXRwdXRfc291cmNlICRpbnB1dF9maWxlCit9CisKK3J1bl9iaXNvbigpCit7CitpbnB1
dF9maWxlPSRzY3JpcHRfZGlyLyQxLnkKK291dHB1dF9oZWFkZXI9JHNjcmlwdF9kaXIvJDFfdGFi
LmgKK291dHB1dF9zb3VyY2U9JHNjcmlwdF9kaXIvJDFfdGFiLmNwcAorYmlzb24gLS1uby1saW5l
cyAtLXNrZWxldG9uPXlhY2MuYyAtLWRlZmluZXM9JG91dHB1dF9oZWFkZXIgLS1vdXRwdXQ9JG91
dHB1dF9zb3VyY2UgJGlucHV0X2ZpbGUKK30KKworc2NyaXB0X2Rpcj0kKGRpcm5hbWUgJDApCisK
KyMgR2VuZXJhdGUgUGFyc2VyCitydW5fZmxleCBnbHNsYW5nCitydW5fYmlzb24gZ2xzbGFuZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcu
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwKaW5kZXgg
NWE3YzVkNTJhNTBmNmNhODZkY2QwNzYzZmIwOTkwOTRiZTI5MTg5ZC4uODEwYTBmZjc0NWU5OWUy
Mzg5OTUyYWFlZTUyODFiZjM1NWVkNTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCkBAIC05LDcgKzksNyBAQCBUaGlzIGZpbGUgY29udGFp
bnMgdGhlIExleCBzcGVjaWZpY2F0aW9uIGZvciBHTFNMIEVTLgogQmFzZWQgb24gQU5TSSBDIGdy
YW1tYXIsIExleCBzcGVjaWZpY2F0aW9uOgogaHR0cDovL3d3dy5seXNhdG9yLmxpdS5zZS9jL0FO
U0ktQy1ncmFtbWFyLWwuaHRtbAogCi1JRiBZT1UgTU9ESUZZIFRISVMgRklMRSBZT1UgQUxTTyBO
RUVEIFRPIFJVTiBnZW5lcmF0ZV9nbHNsYW5nX2xleGVyLnNoLAorSUYgWU9VIE1PRElGWSBUSElT
IEZJTEUgWU9VIEFMU08gTkVFRCBUTyBSVU4gZ2VuZXJhdGVfcGFyc2VyLnNoLAogV0hJQ0ggR0VO
RVJBVEVTIFRIRSBHTFNMIEVTIExFWEVSIChnbHNsYW5nX2xleC5jcHApLgogKi8KIApAQCAtMjAs
NyArMjAsNyBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgTEVYRVIgKGdsc2xhbmdfbGV4
LmNwcCkuCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAotLy8gVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX2dsc2xhbmdfbGV4ZXIuc2guIERPIE5PVCBF
RElUIQorLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5z
aC4gRE8gTk9UIEVESVQhCiB9CiAKICV7CkBAIC0xMjAsNiArMTIwLDggQEAgTyAgICAgICAgICAg
WzAtN10KIAogInNhbXBsZXIyRCIgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVl
OyByZXR1cm4gU0FNUExFUjJEOyB9CiAic2FtcGxlckN1YmUiICAgICB7IGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJFeHRlcm5hbE9F
UyIgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUl9FWFRFUk5B
TF9PRVM7IH0KKyJzYW1wbGVyMkRSZWN0IiB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7
IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9CiAKICJzdHJ1Y3QiICAgICAgIHsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFNUUlVDVCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueSBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkKaW5kZXggZDA1ZjQ0MTk1YTg3OTE2YmU3
MWZmZWMzYjM4ZjkyOTFkOTNlMDRiYy4uZWMxYTg1Y2Q1MDBlM2VjODUzNTY3ZmUzMjVjZjFhYmEy
MmZlMGViOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L2dsc2xhbmcueQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xz
bGFuZy55CkBAIC05LDcgKzksNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIFlhY2MgZ3JhbW1h
ciBmb3IgR0xTTCBFUy4KIEJhc2VkIG9uIEFOU0kgQyBZYWNjIGdyYW1tYXI6CiBodHRwOi8vd3d3
Lmx5c2F0b3IubGl1LnNlL2MvQU5TSS1DLWdyYW1tYXIteS5odG1sCiAKLUlGIFlPVSBNT0RJRlkg
VEhJUyBGSUxFIFlPVSBBTFNPIE5FRUQgVE8gUlVOIGdlbmVyYXRlX2dsc2xhbmdfcGFyc2VyLnNo
LAorSUYgWU9VIE1PRElGWSBUSElTIEZJTEUgWU9VIEFMU08gTkVFRCBUTyBSVU4gZ2VuZXJhdGVf
cGFyc2VyLnNoLAogV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbGFuZ190
YWIuY3BwIEFORCBnbHNsYW5nX3RhYi5oKS4KICovCiAKQEAgLTIwLDcgKzIwLDcgQEAgV0hJQ0gg
R0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbGFuZ190YWIuY3BwIEFORCBnbHNsYW5n
X3RhYi5oKS4KIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0vLyBUaGlzIGZp
bGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfZ2xzbGFuZ19wYXJzZXIuc2guIERPIE5P
VCBFRElUIQorLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNl
ci5zaC4gRE8gTk9UIEVESVQhCiAKICNpbmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlSGVscGVyLmgiCkBAIC05OCw3ICs5OCw3IEBAIGV4dGVy
biB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29u
KTsKICV0b2tlbiA8bGV4PiBCVkVDMiBCVkVDMyBCVkVDNCBJVkVDMiBJVkVDMyBJVkVDNCBWRUMy
IFZFQzMgVkVDNAogJXRva2VuIDxsZXg+IE1BVFJJWDIgTUFUUklYMyBNQVRSSVg0IElOX1FVQUwg
T1VUX1FVQUwgSU5PVVRfUVVBTCBVTklGT1JNIFZBUllJTkcKICV0b2tlbiA8bGV4PiBTVFJVQ1Qg
Vk9JRF9UWVBFIFdISUxFCi0ldG9rZW4gPGxleD4gU0FNUExFUjJEIFNBTVBMRVJDVUJFCisldG9r
ZW4gPGxleD4gU0FNUExFUjJEIFNBTVBMRVJDVUJFIFNBTVBMRVJfRVhURVJOQUxfT0VTIFNBTVBM
RVIyRFJFQ1QKIAogJXRva2VuIDxsZXg+IElERU5USUZJRVIgVFlQRV9OQU1FIEZMT0FUQ09OU1RB
TlQgSU5UQ09OU1RBTlQgQk9PTENPTlNUQU5UCiAldG9rZW4gPGxleD4gRklFTERfU0VMRUNUSU9O
CkBAIC0xNjE1LDYgKzE2MTUsMjQgQEAgdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVy
Q3ViZSwgcXVhbCwgJDEubGluZSk7CiAgICAgfQorICAgIHwgU0FNUExFUl9FWFRFUk5BTF9PRVMg
eworICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2lt
YWdlX2V4dGVybmFsIikpIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1
bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIsICIiKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgfQorICAgICAgICBGUkFHX1ZFUlRfT05MWSgi
c2FtcGxlckV4dGVybmFsT0VTIiwgJDEubGluZSk7CisgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFs
LCAkMS5saW5lKTsKKyAgICB9CisgICAgfCBTQU1QTEVSMkRSRUNUIHsKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikpIHsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwg
InNhbXBsZXIyRFJlY3QiLCAiIik7CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJlY3QiLCAkMS5saW5l
KTsKKyAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OworICAgICAgICAkJC5zZXRCYXNp
YyhFYnRTYW1wbGVyMkRSZWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICB9CiAgICAgfCBzdHJ1Y3Rf
c3BlY2lmaWVyIHsKICAgICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVjdCIsICQxLmxpbmUpOwog
ICAgICAgICAkJCA9ICQxOwpAQCAtMTYzMywxMSArMTY1MSwxMSBAQCB0eXBlX3NwZWNpZmllcl9u
b25hcnJheQogICAgIDsKIAogc3RydWN0X3NwZWNpZmllcgotICAgIDogU1RSVUNUIElERU5USUZJ
RVIgTEVGVF9CUkFDRSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7CisgICAg
OiBTVFJVQ1QgSURFTlRJRklFUiBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0
RGVjbGFyYXRpb24oJDIubGluZSwgKiQyLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfSBz
dHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7CiAgICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlw
ZSgkNCwgKiQyLnN0cmluZyk7CisgICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUo
JDUsICokMi5zdHJpbmcpOwogICAgICAgICBUVmFyaWFibGUqIHVzZXJUeXBlRGVmID0gbmV3IFRW
YXJpYWJsZSgkMi5zdHJpbmcsICpzdHJ1Y3R1cmUsIHRydWUpOwogICAgICAgICBpZiAoISBjb250
ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnVzZXJUeXBlRGVmKSkgewogICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDIubGluZSwgInJlZGVmaW5pdGlvbiIsICQyLnN0cmluZy0+Y19zdHIoKSwg
InN0cnVjdCIpOwpAQCAtMTY0NSwxMSArMTY2MywxMyBAQCBzdHJ1Y3Rfc3BlY2lmaWVyCiAgICAg
ICAgIH0KICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICQxLmxp
bmUpOwogICAgICAgICAkJC51c2VyRGVmID0gc3RydWN0dXJlOworICAgICAgICBjb250ZXh0LT5l
eGl0U3RydWN0RGVjbGFyYXRpb24oKTsKICAgICB9Ci0gICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSBz
dHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0gICAgICAgIFRUeXBlKiBzdHJ1
Y3R1cmUgPSBuZXcgVFR5cGUoJDMsIFRTdHJpbmcoIiIpKTsKKyAgICB8IFNUUlVDVCBMRUZUX0JS
QUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oJDIubGluZSwgKiQyLnN0
cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdI
VF9CUkFDRSB7CisgICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoJDQsIFRTdHJp
bmcoIiIpKTsKICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICQx
LmxpbmUpOwogICAgICAgICAkJC51c2VyRGVmID0gc3RydWN0dXJlOworICAgICAgICBjb250ZXh0
LT5leGl0U3RydWN0RGVjbGFyYXRpb24oKTsKICAgICB9CiAgICAgOwogCkBAIC0xNjk5LDYgKzE3
MTksMTAgQEAgc3RydWN0X2RlY2xhcmF0aW9uCiAgICAgICAgICAgICAgICAgdHlwZS0+c2V0U3Ry
dWN0KCQxLnVzZXJEZWYtPmdldFN0cnVjdCgpKTsKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRU
eXBlTmFtZSgkMS51c2VyRGVmLT5nZXRUeXBlTmFtZSgpKTsKICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKCQxLmxpbmUsICp0
eXBlKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KICAgICA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAppbmRleCBmYTI4ZDQxNjJhZjEzYzg5
MzY0ODlhZGE5NmFhZWQ4NDFkMmNjYjllLi5kOGZhYTNhZWI4N2QzMGY1YmViZGU5MDk3Yzc4MTBi
ODg5ZTU3M2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvZ2xzbGFuZ19sZXguY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9nbHNsYW5nX2xleC5jcHAKQEAgLTUsNyArNSw3IEBACiAvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgogLy8KIAotLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlX2dsc2xhbmdfbGV4ZXIuc2guIERPIE5PVCBFRElUIQorLy8gVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCiAKIAogCkBAIC02
Myw3ICs2Myw2IEBAIHR5cGVkZWYgaW50IGZsZXhfaW50MzJfdDsKIHR5cGVkZWYgdW5zaWduZWQg
Y2hhciBmbGV4X3VpbnQ4X3Q7IAogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgZmxleF91aW50
MTZfdDsKIHR5cGVkZWYgdW5zaWduZWQgaW50IGZsZXhfdWludDMyX3Q7Ci0jZW5kaWYgLyogISBD
OTkgKi8KIAogLyogTGltaXRzIG9mIGludGVncmFsIHR5cGVzLiAqLwogI2lmbmRlZiBJTlQ4X01J
TgpAQCAtOTQsNiArOTMsOCBAQCB0eXBlZGVmIHVuc2lnbmVkIGludCBmbGV4X3VpbnQzMl90Owog
I2RlZmluZSBVSU5UMzJfTUFYICAgICAgICAgICAgICg0Mjk0OTY3Mjk1VSkKICNlbmRpZgogCisj
ZW5kaWYgLyogISBDOTkgKi8KKwogI2VuZGlmIC8qICEgRkxFWElOVF9IICovCiAKICNpZmRlZiBf
X2NwbHVzcGx1cwpAQCAtMTY3LDcgKzE2OCwxNSBAQCB0eXBlZGVmIHZvaWQqIHl5c2Nhbl90Owog
CiAvKiBTaXplIG9mIGRlZmF1bHQgaW5wdXQgYnVmZmVyLiAqLwogI2lmbmRlZiBZWV9CVUZfU0la
RQorI2lmZGVmIF9faWE2NF9fCisvKiBPbiBJQS02NCwgdGhlIGJ1ZmZlciBzaXplIGlzIDE2aywg
bm90IDhrLgorICogTW9yZW92ZXIsIFlZX0JVRl9TSVpFIGlzIDIqWVlfUkVBRF9CVUZfU0laRSBp
biB0aGUgZ2VuZXJhbCBjYXNlLgorICogRGl0dG8gZm9yIHRoZSBfX2lhNjRfXyBjYXNlIGFjY29y
ZGluZ2x5LgorICovCisjZGVmaW5lIFlZX0JVRl9TSVpFIDMyNzY4CisjZWxzZQogI2RlZmluZSBZ
WV9CVUZfU0laRSAxNjM4NAorI2VuZGlmIC8qIF9faWE2NF9fICovCiAjZW5kaWYKIAogLyogVGhl
IHN0YXRlIGJ1ZiBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byBob2xkIG9uZSBzdGF0ZSBwZXIgY2hh
cmFjdGVyIGluIHRoZSBtYWluIGJ1ZmZlci4KQEAgLTM3MSw4ICszODAsOCBAQCBzdGF0aWMgdm9p
ZCB5eV9mYXRhbF9lcnJvciAoeXljb25zdCBjaGFyIG1zZ1tdICx5eXNjYW5fdCB5eXNjYW5uZXIg
KTsKIAkqeXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9wID0geXlfY3A7CiAKLSNkZWZp
bmUgWVlfTlVNX1JVTEVTIDE0NQotI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDE0NgorI2RlZmlu
ZSBZWV9OVU1fUlVMRVMgMTQ3CisjZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIgMTQ4CiAvKiBUaGlz
IHN0cnVjdCBpcyBub3QgdXNlZCBpbiB0aGlzIHNjYW5uZXIsCiAgICBidXQgaXRzIHByZXNlbmNl
IGlzIG5lY2Vzc2FyeS4gKi8KIHN0cnVjdCB5eV90cmFuc19pbmZvCkBAIC0zODAsNTMgKzM4OSw1
NSBAQCBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwogCWZsZXhfaW50MzJfdCB5eV92ZXJpZnk7CiAJZmxl
eF9pbnQzMl90IHl5X254dDsKIAl9Owotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Fj
Y2VwdFs0MTFdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbNDI2XSA9
CiAgICAgeyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAx
NDYsICAxNDQsICAxNDMsICAxNDMsCi0gICAgICAxMjgsICAxMzQsICAxMzksICAxMjMsICAxMjQs
ICAxMzIsICAxMzEsICAxMjAsICAxMjksICAxMjcsCi0gICAgICAxMzMsICAgOTIsICAgOTIsICAx
MjEsICAxMTcsICAxMzUsICAxMjIsICAxMzYsICAxNDAsICAgODgsCi0gICAgICAxMjUsICAxMjYs
ICAxMzgsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsCi0gICAgICAg
ODgsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgs
Ci0gICAgICAgODgsICAgODgsICAgODgsICAxMTgsICAxMzcsICAxMTksICAxMzAsICAgIDMsICAg
IDQsICAgIDMsCi0gICAgICAxNDIsICAxNDUsICAxNDEsICAxMTQsICAxMDAsICAxMTksICAxMDgs
ICAxMDMsICAgOTgsICAxMDYsCi0gICAgICAgOTYsICAxMDcsICAgOTcsICAgOTUsICAgIDIsICAg
IDEsICAgOTksICAgOTQsICAgOTAsICAgOTEsCi0gICAgICAgIDAsICAgIDAsICAgOTIsICAxMjYs
ICAxMTgsICAxMjUsICAxMTUsICAxMTEsICAxMTMsICAxMTIsCi0gICAgICAxMTYsICAgODgsICAx
MDQsICAxMTAsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsCi0KLSAgICAgICA4
OCwgICA4OCwgICA4OCwgICA4OCwgICAxNywgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwK
LSAgICAgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICAy
MCwgICAyMiwKLSAgICAgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwg
ICA4OCwgICA4OCwgICA4OCwKLSAgICAgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4
OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwKLSAgICAgICA4OCwgICA4OCwgICA4OCwgICA4OCwg
ICA4OCwgICA4OCwgIDEwNSwgIDEwOSwgICAgNSwgIDE0MSwKLSAgICAgICAgMCwgICAgMSwgICA5
NCwgICAgMCwgICAgMCwgICA5MywgICA4OSwgIDEwMSwgIDEwMiwgICA0OCwKLSAgICAgICA4OCwg
ICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwKLSAg
ICAgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICAxOCwgICA4OCwg
ICA4OCwKLSAgICAgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICAyNiwgICA4
OCwgICA4OCwgICA4OCwKLSAgICAgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICA4OCwgICAyMywg
ICA4OCwgICA4OCwgICA4OCwgICA4OCwKLQotICAgICAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAg
IDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LAotICAgICAgIDg4LCAgIDg4LCAgIDg4
LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgICAwLCAgIDk1LAotICAgICAgICAwLCAg
IDk0LCAgIDg4LCAgIDI4LCAgIDg4LCAgIDg4LCAgIDg1LCAgIDg4LCAgIDg4LCAgIDg4LAotICAg
ICAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDIxLCAgIDUxLCAgIDg4LCAgIDg4LCAgIDg4LCAg
IDg4LAotICAgICAgIDg4LCAgIDU2LCAgIDcwLCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4
LCAgIDg4LCAgIDg4LAotICAgICAgIDg4LCAgIDY3LCAgICA5LCAgIDMzLCAgIDM0LCAgIDM1LCAg
IDg4LCAgIDg4LCAgIDg4LCAgIDg4LAotICAgICAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4
LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LAotICAgICAgIDg4LCAgIDU0LCAgIDI5LCAg
IDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDM2LAotICAgICAgIDM3LCAgIDM4
LCAgIDI3LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDE1LCAgIDQyLCAgIDQzLCAgIDQ0LAotICAgICAg
IDQ5LCAgIDEyLCAgIDg4LCAgIDg4LCAgIDg4LCAgIDg4LCAgIDgxLCAgIDgyLCAgIDgzLCAgIDg4
LAotCi0gICAgICAgMzAsICAgNzEsICAgMjUsICAgNzgsICAgNzksICAgODAsICAgIDcsICAgNzUs
ICAgNzYsICAgNzcsCi0gICAgICAgODgsICAgMjQsICAgNzMsICAgODgsICAgODgsICAgMzksICAg
NDAsICAgNDEsICAgODgsICAgODgsCi0gICAgICAgODgsICAgODgsICAgODgsICAgODgsICAgODgs
ICAgODgsICAgODgsICAgNjgsICAgODgsICAgODgsCi0gICAgICAgODgsICAgODgsICAgODgsICAg
ODgsICAgODgsICAgNTAsICAgODgsICAgODcsICAgODgsICAgODgsCi0gICAgICAgMTksICAgODgs
ICAgODgsICAgODgsICAgODgsICAgNjksICAgNjQsICAgNTksICAgODgsICAgODgsCi0gICAgICAg
ODgsICAgODgsICAgODgsICAgNzQsICAgNTUsICAgODgsICAgNjIsICAgMzIsICAgODgsICAgODQs
Ci0gICAgICAgNjMsICAgNDcsICAgNTcsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsICAg
ODgsICAgODgsCi0gICAgICAgODgsICAgNTgsICAgMzEsICAgODgsICAgODgsICAgODgsICAgIDgs
ICAgODgsICAgODgsICAgODgsCi0gICAgICAgODgsICAgODgsICAgNTIsICAgMTMsICAgODgsICAg
MTQsICAgODgsICAgODgsICAgMTYsICAgNjUsCi0gICAgICAgODgsICAgODgsICAgODgsICAgNjAs
ICAgODgsICAgODgsICAgODgsICAgNTMsICAgNzIsICAgNjEsCi0KLSAgICAgICAxMSwgICA2Niwg
ICAgNiwgICA4NiwgICAxMCwgICA0NSwgICA4OCwgICA4OCwgICA0NiwgICAgMAorICAgICAgICAw
LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMTQ4LCAgMTQ2LCAgMTQ1LCAgMTQ1LAor
ICAgICAgMTMwLCAgMTM2LCAgMTQxLCAgMTI1LCAgMTI2LCAgMTM0LCAgMTMzLCAgMTIyLCAgMTMx
LCAgMTI5LAorICAgICAgMTM1LCAgIDk0LCAgIDk0LCAgMTIzLCAgMTE5LCAgMTM3LCAgMTI0LCAg
MTM4LCAgMTQyLCAgIDkwLAorICAgICAgMTI3LCAgMTI4LCAgMTQwLCAgIDkwLCAgIDkwLCAgIDkw
LCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLAorICAgICAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAg
IDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLAorICAgICAgIDkwLCAgIDkwLCAgIDkw
LCAgMTIwLCAgMTM5LCAgMTIxLCAgMTMyLCAgICAzLCAgICA0LCAgICAzLAorICAgICAgMTQ0LCAg
MTQ3LCAgMTQzLCAgMTE2LCAgMTAyLCAgMTIxLCAgMTEwLCAgMTA1LCAgMTAwLCAgMTA4LAorICAg
ICAgIDk4LCAgMTA5LCAgIDk5LCAgIDk3LCAgICAyLCAgICAxLCAgMTAxLCAgIDk2LCAgIDkyLCAg
IDkzLAorICAgICAgICAwLCAgICAwLCAgIDk0LCAgMTI4LCAgMTIwLCAgMTI3LCAgMTE3LCAgMTEz
LCAgMTE1LCAgMTE0LAorICAgICAgMTE4LCAgIDkwLCAgMTA2LCAgMTEyLCAgIDkwLCAgIDkwLCAg
IDkwLCAgIDkwLCAgIDkwLCAgIDkwLAorCisgICAgICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAg
MTcsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsCisgICAgICAgOTAsICAgOTAsICAgOTAs
ICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgMjAsICAgMjIsCisgICAgICAgOTAsICAg
OTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsCisgICAg
ICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAg
OTAsCisgICAgICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAxMDcsICAxMTEs
ICAgIDUsICAxNDMsCisgICAgICAgIDAsICAgIDEsICAgOTYsICAgIDAsICAgIDAsICAgOTUsICAg
OTEsICAxMDMsICAxMDQsICAgNTAsCisgICAgICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAs
ICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsCisgICAgICAgOTAsICAgOTAsICAgOTAsICAg
OTAsICAgOTAsICAgOTAsICAgOTAsICAgMTgsICAgOTAsICAgOTAsCisgICAgICAgOTAsICAgOTAs
ICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgMjYsICAgOTAsICAgOTAsICAgOTAsCisgICAgICAg
OTAsICAgOTAsICAgOTAsICAgOTAsICAgOTAsICAgMjMsICAgOTAsICAgOTAsICAgOTAsICAgOTAs
CisKKyAgICAgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwg
ICA5MCwgICA5MCwKKyAgICAgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5
MCwgICA5MCwgICAgMCwgICA5NywKKyAgICAgICAgMCwgICA5NiwgICA5MCwgICAyOCwgICA5MCwg
ICA5MCwgICA4NywgICA5MCwgICA5MCwgICA5MCwKKyAgICAgICA5MCwgICA5MCwgICA5MCwgICA5
MCwgICAyMSwgICA1MywgICA5MCwgICA5MCwgICA5MCwgICA5MCwKKyAgICAgICA5MCwgICA1OCwg
ICA3MiwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwKKyAgICAgICA5
MCwgICA2OSwgICAgOSwgICAzMywgICAzNCwgICAzNSwgICA5MCwgICA5MCwgICA5MCwgICA5MCwK
KyAgICAgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5MCwgICA5
MCwgICA5MCwKKyAgICAgICA5MCwgICA1NiwgICAyOSwgICA5MCwgICA5MCwgICA5MCwgICA5MCwg
ICA5MCwgICA5MCwgICAzNiwKKyAgICAgICAzNywgICAzOCwgICAyNywgICA5MCwgICA5MCwgICA5
MCwgICAxNSwgICA0MiwgICA0MywgICA0NCwKKyAgICAgICA1MSwgICAxMiwgICA5MCwgICA5MCwg
ICA5MCwgICA5MCwgICA4MywgICA4NCwgICA4NSwgICA5MCwKKworICAgICAgIDMwLCAgIDczLCAg
IDI1LCAgIDgwLCAgIDgxLCAgIDgyLCAgICA3LCAgIDc3LCAgIDc4LCAgIDc5LAorICAgICAgIDkw
LCAgIDI0LCAgIDc1LCAgIDkwLCAgIDkwLCAgIDM5LCAgIDQwLCAgIDQxLCAgIDkwLCAgIDkwLAor
ICAgICAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDcwLCAgIDkw
LCAgIDkwLAorICAgICAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDUyLCAgIDkwLCAg
IDg5LCAgIDkwLCAgIDkwLAorICAgICAgIDE5LCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDcx
LCAgIDY2LCAgIDYxLCAgIDkwLCAgIDkwLAorICAgICAgIDkwLCAgIDkwLCAgIDkwLCAgIDc2LCAg
IDU3LCAgIDkwLCAgIDY0LCAgIDMyLCAgIDkwLCAgIDg2LAorICAgICAgIDY1LCAgIDQ5LCAgIDU5
LCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkwLAorICAgICAgIDkwLCAg
IDYwLCAgIDMxLCAgIDkwLCAgIDkwLCAgIDkwLCAgICA4LCAgIDkwLCAgIDkwLCAgIDkwLAorICAg
ICAgIDkwLCAgIDkwLCAgIDU0LCAgIDEzLCAgIDkwLCAgIDE0LCAgIDkwLCAgIDkwLCAgIDE2LCAg
IDY3LAorICAgICAgIDkwLCAgIDkwLCAgIDkwLCAgIDYyLCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkw
LCAgIDU1LCAgIDc0LAorCisgICAgICAgNjMsICAgMTEsICAgNjgsICAgIDYsICAgODgsICAgMTAs
ICAgNDUsICAgOTAsICAgOTAsICAgOTAsCisgICAgICAgOTAsICAgOTAsICAgOTAsICAgNDYsICAg
OTAsICAgOTAsICAgOTAsICAgNDgsICAgOTAsICAgOTAsCisgICAgICAgOTAsICAgOTAsICAgOTAs
ICAgNDcsICAgIDAKICAgICB9IDsKIAogc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2Vj
WzI1Nl0gPQpAQCAtNDM4LDEzICs0NDksMTMgQEAgc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90
IHl5X2VjWzI1Nl0gPQogICAgICAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAg
IDE0LCAgIDE1LCAgIDE2LCAgIDE3LAogICAgICAgIDE4LCAgIDE5LCAgIDE2LCAgIDE2LCAgIDE2
LCAgIDIwLCAgIDIwLCAgIDIxLCAgIDIyLCAgIDIzLAogICAgICAgIDI0LCAgIDI1LCAgIDI2LCAg
ICAxLCAgIDI3LCAgIDI3LCAgIDI4LCAgIDI5LCAgIDMwLCAgIDI3LAotICAgICAgIDMxLCAgIDMx
LCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLAotICAgICAg
IDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMyLCAgIDMxLCAgIDMx
LAotICAgICAgIDMzLCAgICAxLCAgIDM0LCAgIDM1LCAgIDMxLCAgICAxLCAgIDM2LCAgIDM3LCAg
IDM4LCAgIDM5LAorICAgICAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMxLCAgIDMx
LCAgIDMxLCAgIDMyLCAgIDMxLAorICAgICAgIDMxLCAgIDMzLCAgIDM0LCAgIDMxLCAgIDMxLCAg
IDMxLCAgIDMxLCAgIDM1LCAgIDMxLCAgIDMxLAorICAgICAgIDM2LCAgICAxLCAgIDM3LCAgIDM4
LCAgIDMxLCAgICAxLCAgIDM5LCAgIDQwLCAgIDQxLCAgIDQyLAogCi0gICAgICAgNDAsICAgNDEs
ICAgNDIsICAgNDMsICAgNDQsICAgMzEsICAgNDUsICAgNDYsICAgNDcsICAgNDgsCi0gICAgICAg
NDksICAgNTAsICAgMzEsICAgNTEsICAgNTIsICAgNTMsICAgNTQsICAgNTUsICAgNTYsICAgNTcs
Ci0gICAgICAgNTgsICAgNTksICAgNjAsICAgNjEsICAgNjIsICAgNjMsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsCisgICAgICAgNDMsICAgNDQsICAgNDUsICAgNDYsICAgNDcsICAgMzEsICAgNDgs
ICAgNDksICAgNTAsICAgNTEsCisgICAgICAgNTIsICAgNTMsICAgMzEsICAgNTQsICAgNTUsICAg
NTYsICAgNTcsICAgNTgsICAgNTksICAgNjAsCisgICAgICAgNjEsICAgNjIsICAgNjMsICAgNjQs
ICAgNjUsICAgNjYsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAg
ICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsCkBAIC00NjEsMTk1ICs0NzIsMjAxIEBAIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJf
dCB5eV9lY1syNTZdID0KICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMQogICAgIH0g
OwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVs2NF0gPQorc3RhdGljIHl5
Y29uc3QgZmxleF9pbnQzMl90IHl5X21ldGFbNjddID0KICAgICB7ICAgMCwKICAgICAgICAgMSwg
ICAgMSwgICAgMiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAg
ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywg
ICAgMywKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAg
MywgICAgMywgICAgMywKLSAgICAgICAgNCwgICAgNCwgICAgMSwgICAgMSwgICAgMSwgICAgMywg
ICAgMywgICAgMywgICAgMywgICAgMywKLSAgICAgICAgMywgICAgNCwgICAgNCwgICAgNCwgICAg
NCwgICAgNCwgICAgNCwgICAgNCwgICAgNCwgICAgNCwKLSAgICAgICAgNCwgICAgNCwgICAgNCwg
ICAgNCwgICAgNCwgICAgNCwgICAgNCwgICAgNCwgICAgNCwgICAgMSwKLSAgICAgICAgMSwgICAg
MSwgICAgMQorICAgICAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICAxLCAgICAxLCAg
ICAxLCAgICAzLCAgICAzLAorICAgICAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICA0LCAgICA0
LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAorICAgICAgICA0LCAgICA0LCAgICA0LCAgICA0LCAg
ICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAorICAgICAgICA0LCAgICA0LCAgICAx
LCAgICAxLCAgICAxLCAgICAxCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZf
dCB5eV9iYXNlWzQxNl0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Jhc2VbNDMx
XSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgNjEsICAgNjIsICAgNzEsICAgIDAs
ICA2MDYsICA2MDcsICA2MDcsICA2MDcsCi0gICAgICA1ODEsICAgNDIsICAxMjksICA2MDcsICA2
MDcsICA1ODAsICAxMjYsICA2MDcsICAxMjUsICAxMjMsCi0gICAgICAxMzcsICAxNDksICAxNTcs
ICA1NzgsICA2MDcsICAxNzUsICA1NzgsICAgNDQsICA2MDcsICAgIDAsCi0gICAgICA2MDcsICA2
MDcsICAxMjAsICAgOTUsICAxMDMsICAxNDIsICAxNDYsICAxMzYsICAxNTYsICA1NTIsCi0gICAg
ICAxNjgsICAxNjIsICA1NTEsICAxMjAsICAxNTgsICA1NDUsICAxNzMsICA1NTgsICAxNzIsICAx
NzgsCi0gICAgICAxMTEsICAxODYsICA1NTQsICA2MDcsICAxNTksICA2MDcsICA2MDcsICA2MDcs
ICA2MDcsICA1ODIsCi0gICAgICA2MDcsICA2MDcsICAgIDAsICA2MDcsICA2MDcsICA2MDcsICA2
MDcsICA2MDcsICA2MDcsICA2MDcsCi0gICAgICA2MDcsICA2MDcsICA2MDcsICAyMjIsICA2MDcs
ICAgIDAsICA2MDcsICAyMjgsICAyNTQsICAyNjIsCi0gICAgICAyODEsICAgIDAsICAyOTAsICA2
MDcsICA2MDcsICA2MDcsICA1NzEsICA2MDcsICA2MDcsICA2MDcsCi0gICAgICA1NzAsICAgIDAs
ICA2MDcsICA2MDcsICA1NDYsICA1MzksICA1NDIsICA1NTAsICA1NDksICA1MzYsCi0KLSAgICAg
IDU1MSwgIDUzOCwgIDU0NCwgIDUzMiwgIDUyOSwgIDU0MiwgIDUyOSwgIDUyNiwgIDUyNiwgIDUz
MiwKLSAgICAgIDUyMCwgIDUyNywgIDUyNCwgIDUzNCwgIDUyMCwgIDUyNiwgIDUyOSwgIDUzMCwg
ICAgMCwgIDIwNCwKLSAgICAgIDUyOSwgIDIwNywgIDUxNSwgIDUyOCwgIDUxOSwgIDUyMSwgIDUx
MSwgIDUyNSwgIDUyMiwgIDUyNCwKLSAgICAgIDUwNywgIDUxMiwgIDUwOSwgIDQ5OCwgIDE4Mywg
IDUxMiwgIDUwOCwgIDUxMCwgIDQ5OSwgIDUwMiwKLSAgICAgIDIxMiwgIDUwNywgIDQ5OSwgIDUx
MSwgIDE4NiwgIDUwNCwgIDYwNywgIDYwNywgIDYwNywgICAgMCwKLSAgICAgIDMwNiwgICAgMCwg
IDMxNiwgIDMzMiwgIDI3MCwgIDM0MiwgICAgMCwgIDYwNywgIDYwNywgICAgMCwKLSAgICAgIDQ5
NiwgIDUwMCwgIDUwOSwgIDUwNiwgIDQ5MCwgIDQ5MCwgIDE2MSwgIDUwNSwgIDUwMiwgIDUwMiwK
LSAgICAgIDUwMCwgIDQ5NywgIDQ4OSwgIDQ5NSwgIDQ4MiwgIDQ5MywgIDQ5NiwgICAgMCwgIDQ5
MywgIDQ4MSwKLSAgICAgIDQ4OCwgIDQ4NSwgIDQ4OSwgIDQ4MiwgIDQ3MSwgIDQ3MCwgIDQ4Mywg
IDQ4NiwgIDQ4MywgIDQ3OCwKLSAgICAgIDQ2OSwgIDI5NCwgIDQ3NCwgIDQ3NywgIDQ2OCwgIDQ2
NSwgIDQ2OSwgIDQ3NSwgIDQ2NiwgIDQ1NywKLQotICAgICAgNDYwLCAgNDU4LCAgNDY4LCAgNDU0
LCAgNDUyLCAgNDUyLCAgNDU0LCAgNDUxLCAgNDYyLCAgNDYxLAotICAgICAgMjc4LCAgNDU2LCAg
NDUxLCAgNDQwLCAgMzIwLCAgNDU4LCAgNDYwLCAgNDQ5LCAgMzQ4LCAgMzU0LAotICAgICAgMzYw
LCAgMzY2LCAgNDUwLCAgICAwLCAgNDQ4LCAgMzM2LCAgICAwLCAgNDQwLCAgNDM4LCAgNDQ2LAot
ICAgICAgNDM1LCAgNDUyLCAgNDQxLCAgMzcwLCAgICAwLCAgICAwLCAgNDM1LCAgNDQ1LCAgNDQ1
LCAgNDMwLAotICAgICAgMzczLCAgICAwLCAgICAwLCAgNDMyLCAgMzc2LCAgNDMzLCAgNDI3LCAg
NDI2LCAgNDI3LCAgNDI2LAotICAgICAgMzc5LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAw
LCAgNDIyLCAgNDIzLCAgNDI4LCAgNDE5LAotICAgICAgNDMyLCAgNDI3LCAgNDI2LCAgNDE4LCAg
NDIyLCAgNDE0LCAgNDE3LCAgNDIxLCAgNDI2LCAgNDI1LAotICAgICAgNDE2LCAgICAwLCAgICAw
LCAgNDIyLCAgNDExLCAgNDExLCAgNDE2LCAgNDE1LCAgNDEyLCAgICAwLAotICAgICAgICAwLCAg
ICAwLCAgICAwLCAgNDAyLCAgNDE0LCAgNDE2LCAgICAwLCAgICAwLCAgICAwLCAgICAwLAotICAg
ICAgICAwLCAgICAwLCAgNDA0LCAgNDA1LCAgMzk5LCAgNDA5LCAgICAwLCAgICAwLCAgICAwLCAg
NDAwLAorICAgICAgICAwLCAgICAwLCAgIDY0LCAgIDY1LCAgIDc0LCAgICAwLCAgNjI3LCAgNjI4
LCAgNjI4LCAgNjI4LAorICAgICAgNjAyLCAgIDQ1LCAgMTM1LCAgNjI4LCAgNjI4LCAgNjAxLCAg
MTMyLCAgNjI4LCAgMTMxLCAgMTI5LAorICAgICAgMTQzLCAgMTU1LCAgMTYzLCAgNTk5LCAgNjI4
LCAgMTc5LCAgNTk5LCAgIDQ3LCAgNjI4LCAgICAwLAorICAgICAgNjI4LCAgNjI4LCAgMTI2LCAg
IDk4LCAgMTA4LCAgMTQ3LCAgMTU4LCAgMTU4LCAgMTY1LCAgNTcwLAorICAgICAgMTMwLCAgMTA3
LCAgNTY5LCAgMTQ4LCAgMTU2LCAgNTYzLCAgMTcyLCAgNTc2LCAgMTc0LCAgMTgxLAorICAgICAg
MTc3LCAgMTk1LCAgNTcyLCAgNjI4LCAgMTczLCAgNjI4LCAgNjI4LCAgNjI4LCAgNjI4LCAgNjAz
LAorICAgICAgNjI4LCAgNjI4LCAgICAwLCAgNjI4LCAgNjI4LCAgNjI4LCAgNjI4LCAgNjI4LCAg
NjI4LCAgNjI4LAorICAgICAgNjI4LCAgNjI4LCAgNjI4LCAgMjMzLCAgNjI4LCAgICAwLCAgNjI4
LCAgMjM5LCAgMjU1LCAgMjcxLAorICAgICAgMjg3LCAgICAwLCAgMzAwLCAgNjI4LCAgNjI4LCAg
NjI4LCAgNTkyLCAgNjI4LCAgNjI4LCAgNjI4LAorICAgICAgNTkxLCAgICAwLCAgNjI4LCAgNjI4
LCAgNTY0LCAgNTU3LCAgNTYwLCAgNTY4LCAgNTY3LCAgNTU0LAorCisgICAgICA1NjksICA1NTYs
ICA1NjIsICA1NTAsICA1NDcsICA1NjAsICA1NDcsICA1NDQsICA1NDQsICA1NTAsCisgICAgICA1
MzgsICA1NDUsICA1NDIsICA1NTIsICA1MzgsICA1NDQsICA1NDcsICA1NDgsICAgIDAsICAxODcs
CisgICAgICA1NDcsICAyNDEsICA1MzMsICA1NDYsICA1MzcsICA1MzksICA1MjksICA1NDMsICA1
NDAsICA1NDIsCisgICAgICA1MjUsICA1MzAsICA1MjcsICA1MTYsICAxOTIsICA1MzAsICA1MjYs
ICA1MjgsICA1MTcsICA1MjAsCisgICAgICAyNzQsICA1MjUsICA1MTcsICA1MjksICAxMTQsICA1
MjIsICA2MjgsICA2MjgsICA2MjgsICAgIDAsCisgICAgICAzMTYsICAgIDAsICAzMjIsICAzMzgs
ICAzNDQsICAzNTEsICAgIDAsICA2MjgsICA2MjgsICAgIDAsCisgICAgICA1MTQsICA1MTgsICA1
MjcsICA1MjQsICA1MDgsICA1MDgsICAyMDUsICA1MjMsICA1MjAsICA1MjAsCisgICAgICA1MTgs
ICA1MTUsICA1MDcsICA1MTMsICA1MDAsICA1MTEsICA1MTQsICAgIDAsICA1MTEsICA0OTksCisg
ICAgICA1MDYsICA1MDMsICA1MDcsICA1MDAsICA0ODksICA0ODgsICA1MDEsICA1MDQsICA1MDEs
ICA0OTYsCisgICAgICA0ODcsICAyNDcsICA0OTIsICA0OTUsICA0ODYsICA0ODMsICA0ODcsICA0
OTMsICA0ODQsICA0NzUsCisKKyAgICAgIDQ3OCwgIDQ3NiwgIDQ4NiwgIDQ3MiwgIDQ3MCwgIDQ3
MCwgIDQ3MiwgIDQ2OSwgIDQ4MCwgIDQ3OSwKKyAgICAgIDMyOCwgIDQ3NCwgIDQ2OSwgIDQ1OCwg
IDI2MCwgIDQ3NiwgIDQ3OCwgIDQ2NywgIDM1OCwgIDM2NiwKKyAgICAgIDM3MiwgIDM3OCwgIDQ2
OCwgICAgMCwgIDQ2NiwgIDI3NiwgICAgMCwgIDQ1OCwgIDQ1NiwgIDQ2NCwKKyAgICAgIDQ1Mywg
IDQ3MCwgIDQ1OSwgIDI5MSwgICAgMCwgICAgMCwgIDQ1MywgIDQ2MywgIDQ2MywgIDQ0OCwKKyAg
ICAgIDMwNSwgICAgMCwgICAgMCwgIDQ1MCwgIDMyNywgIDQ1MSwgIDQ0NSwgIDQ0NCwgIDQ0NSwg
IDQ0NCwKKyAgICAgIDM4MiwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ0MCwgIDQ0
MSwgIDQ0NiwgIDQzNywKKyAgICAgIDQ1MCwgIDQ0NSwgIDQ0NCwgIDQzNiwgIDQ0MCwgIDQzMiwg
IDQzNSwgIDQzOSwgIDQ0NCwgIDQ0MywKKyAgICAgIDQzNCwgICAgMCwgICAgMCwgIDQ0MCwgIDQy
OSwgIDQyOSwgIDQzNCwgIDQzMywgIDQzMCwgICAgMCwKKyAgICAgICAgMCwgICAgMCwgICAgMCwg
IDQyMCwgIDQzMiwgIDQzNCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKKyAgICAgICAgMCwgICAg
MCwgIDQyMiwgIDQyMywgIDQxNywgIDQyNywgICAgMCwgICAgMCwgICAgMCwgIDQxOCwKIAogICAg
ICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAg
ICAwLAotICAgICAgNDA3LCAgICAwLCAgICAwLCAgNDA1LCAgNDAxLCAgICAwLCAgICAwLCAgICAw
LCAgMzk3LCAgMzkzLAotICAgICAgMzk4LCAgMzg4LCAgNDAxLCAgMzg3LCAgNDAwLCAgMzg5LCAg
Mzk2LCAgICAwLCAgMzk0LCAgMzk2LAotICAgICAgMzgwLCAgMzg5LCAgMzk1LCAgMzkwLCAgMzc4
LCAgICAwLCAgMzgwLCAgICAwLCAgMzc5LCAgMzgyLAotICAgICAgICAwLCAgMzcxLCAgMzcwLCAg
MzcwLCAgMzgzLCAgICAwLCAgMzg1LCAgICAwLCAgMzg0LCAgMzgzLAotICAgICAgMzY4LCAgMzgx
LCAgMzY4LCAgICAwLCAgICAwLCAgMzcxLCAgICAwLCAgICAwLCAgMzYzLCAgICAwLAotICAgICAg
ICAwLCAgICAwLCAgICAwLCAgMzYwLCAgMzcxLCAgMzY0LCAgMzY4LCAgMzAzLCAgMjk3LCAgMjg4
LAotICAgICAgMzAwLCAgICAwLCAgICAwLCAgMjgzLCAgMjkwLCAgMjY5LCAgICAwLCAgMjc3LCAg
Mjc0LCAgMjU1LAotICAgICAgMjMyLCAgMjU1LCAgICAwLCAgICAwLCAgMjQ0LCAgICAwLCAgMjM2
LCAgMjI2LCAgICAwLCAgICAwLAotICAgICAgMjI1LCAgMjA4LCAgMjExLCAgICAwLCAgMTg1LCAg
MjAyLCAgMTMxLCAgICAwLCAgICAwLCAgICAwLAotCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAgIDAsICAgIDAsICAxMzQsICAxMTcsICAgIDAsICA2MDcsCi0gICAgICAzOTgsICA0MDAs
ICA0MDIsICA0MDYsICAxNDIKKyAgICAgIDQyNSwgICAgMCwgICAgMCwgIDQyMywgIDQxOSwgICAg
MCwgICAgMCwgICAgMCwgIDQxNSwgIDQxMSwKKyAgICAgIDQxNiwgIDQwNiwgIDQxOSwgIDQwNSwg
IDQxOCwgIDQwNywgIDQxNCwgICAgMCwgIDQxMiwgIDQxNCwKKyAgICAgIDM5OCwgIDQwNywgIDQx
MywgIDQwOCwgIDM5NiwgICAgMCwgIDM5OCwgICAgMCwgIDM5NywgIDQwMCwKKyAgICAgICAgMCwg
IDM4OSwgIDM4OCwgIDM4OCwgIDQwMSwgICAgMCwgIDQwMywgICAgMCwgIDQwMiwgIDQwMSwKKyAg
ICAgIDM4NiwgIDM5OSwgIDM4NiwgICAgMCwgICAgMCwgIDM4OSwgICAgMCwgICAgMCwgIDM4MSwg
ICAgMCwKKyAgICAgICAgMCwgICAgMCwgICAgMCwgIDM3OCwgIDM4OSwgIDM4MiwgIDM4OCwgIDM4
NSwgIDM4MCwgIDM3MiwKKyAgICAgIDM4MiwgICAgMCwgICAgMCwgIDM2NSwgIDM3MSwgIDM2MCwg
ICAgMCwgIDM2OSwgIDM2NiwgIDM1NiwKKyAgICAgIDM4NSwgIDM2NCwgICAgMCwgICAgMCwgIDM2
NCwgICAgMCwgIDM2MiwgIDM2MSwgICAgMCwgICAgMCwKKyAgICAgIDM2MCwgIDMyMywgIDMwOCwg
ICAgMCwgIDI5OCwgIDMxOCwgIDI3MCwgIDI2NSwgICAgMCwgICAgMCwKKworICAgICAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMjc5LCAgMjcxLCAgMjQwLCAgMjQwLAorICAg
ICAgMjM4LCAgMjM3LCAgMjI2LCAgICAwLCAgMjA4LCAgMTg4LCAgMTkwLCAgICAwLCAgMTg2LCAg
MTczLAorICAgICAgMTg3LCAgMTY0LCAgMTU4LCAgICAwLCAgNjI4LCAgNDE1LCAgNDE3LCAgNDE5
LCAgNDIzLCAgMTg2CiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9k
ZWZbNDE2XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzQzMV0gPQogICAg
IHsgICAwLAotICAgICAgNDEwLCAgICAxLCAgNDExLCAgNDExLCAgNDEwLCAgICA1LCAgNDEwLCAg
NDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEw
LCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAg
NDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEyLAotICAgICAgNDEwLCAgNDEwLCAgNDEw
LCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLAotICAgICAgNDEyLCAg
NDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLAotICAg
ICAgNDEyLCAgNDEyLCAgNDEyLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAg
NDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEzLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEw
LCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDE0LCAg
NDEwLCAgNDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDE1LCAgNDEwLCAgNDEwLCAgNDEw
LCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDEyLCAgNDEwLCAg
NDEwLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLAotCi0gICAgICA0MTIsICA0
MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsCi0gICAg
ICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0
MTIsCi0gICAgICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIs
ICA0MTIsICA0MTIsCi0gICAgICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0
MTIsICA0MTIsICA0MTIsICA0MTIsCi0gICAgICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIs
ICA0MTIsICA0MTAsICA0MTAsICA0MTAsICA0MTMsCi0gICAgICA0MTAsICA0MTQsICA0MTAsICA0
MTAsICA0MTAsICA0MTAsICA0MTUsICA0MTAsICA0MTAsICA0MTIsCi0gICAgICA0MTIsICA0MTIs
ICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsCi0gICAgICA0
MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIs
Ci0gICAgICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0
MTIsICA0MTIsCi0gICAgICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIs
ICA0MTIsICA0MTIsICA0MTIsCi0KLSAgICAgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwg
IDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwKLSAgICAgIDQxMiwgIDQxMiwgIDQxMiwgIDQx
MiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMCwgIDQxMCwKLSAgICAgIDQxMCwgIDQxMCwg
IDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwKLSAgICAgIDQx
MiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwK
LSAgICAgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQx
MiwgIDQxMiwKLSAgICAgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwg
IDQxMiwgIDQxMiwgIDQxMiwKLSAgICAgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQx
MiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwKLSAgICAgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwg
IDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwKLSAgICAgIDQxMiwgIDQxMiwgIDQx
MiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwKLSAgICAgIDQxMiwg
IDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwgIDQxMiwKLQot
ICAgICAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEy
LCAgNDEyLAotICAgICAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAg
NDEyLCAgNDEyLCAgNDEyLAotICAgICAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEy
LCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLAotICAgICAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAg
NDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLAotICAgICAgNDEyLCAgNDEyLCAgNDEy
LCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLAotICAgICAgNDEyLCAg
NDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLAotICAg
ICAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAg
NDEyLAotICAgICAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEy
LCAgNDEyLCAgNDEyLAotICAgICAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAg
NDEyLCAgNDEyLCAgNDEyLCAgNDEyLAotICAgICAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEy
LCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLCAgNDEyLAotCi0gICAgICA0MTIsICA0MTIsICA0MTIs
ICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICA0MTIsICAgIDAsCi0gICAgICA0MTAsICA0
MTAsICA0MTAsICA0MTAsICA0MTAKKyAgICAgIDQyNSwgICAgMSwgIDQyNiwgIDQyNiwgIDQyNSwg
ICAgNSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwKKyAgICAgIDQyNSwgIDQyNSwgIDQyNSwgIDQy
NSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwKKyAgICAgIDQyNSwgIDQyNSwg
IDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNywKKyAgICAgIDQy
NSwgIDQyNSwgIDQyNSwgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywK
KyAgICAgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQy
NywgIDQyNywKKyAgICAgIDQyNywgIDQyNywgIDQyNywgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwg
IDQyNSwgIDQyNSwgIDQyNSwKKyAgICAgIDQyNSwgIDQyNSwgIDQyOCwgIDQyNSwgIDQyNSwgIDQy
NSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwKKyAgICAgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwg
IDQyNSwgIDQyOSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwKKyAgICAgIDQyNSwgIDQzMCwgIDQy
NSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwgIDQyNSwKKyAgICAgIDQyNSwg
IDQyNywgIDQyNSwgIDQyNSwgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywKKwor
ICAgICAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3
LCAgNDI3LAorICAgICAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAg
NDI3LCAgNDI3LCAgNDI3LAorICAgICAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3
LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LAorICAgICAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAg
NDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LAorICAgICAgNDI3LCAgNDI3LCAgNDI3
LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI4LAorICAgICAgNDI1LCAg
NDI5LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDMwLCAgNDI1LCAgNDI1LCAgNDI3LAorICAg
ICAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAg
NDI3LAorICAgICAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3
LCAgNDI3LCAgNDI3LAorICAgICAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAg
NDI3LCAgNDI3LCAgNDI3LCAgNDI3LAorICAgICAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3
LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LAorCisgICAgICA0MjcsICA0MjcsICA0Mjcs
ICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsCisgICAgICA0MjcsICA0
MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjUsICA0MjUsCisgICAg
ICA0MjUsICA0MjUsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0
MjcsCisgICAgICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0Mjcs
ICA0MjcsICA0MjcsCisgICAgICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0
MjcsICA0MjcsICA0MjcsICA0MjcsCisgICAgICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0Mjcs
ICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsCisgICAgICA0MjcsICA0MjcsICA0MjcsICA0
MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsCisgICAgICA0MjcsICA0Mjcs
ICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsCisgICAgICA0
MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0Mjcs
CisgICAgICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0MjcsICA0
MjcsICA0MjcsCisKKyAgICAgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQy
NywgIDQyNywgIDQyNywgIDQyNywKKyAgICAgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywg
IDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywKKyAgICAgIDQyNywgIDQyNywgIDQyNywgIDQy
NywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywKKyAgICAgIDQyNywgIDQyNywg
IDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywKKyAgICAgIDQy
NywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywK
KyAgICAgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQy
NywgIDQyNywKKyAgICAgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywg
IDQyNywgIDQyNywgIDQyNywKKyAgICAgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQy
NywgIDQyNywgIDQyNywgIDQyNywgIDQyNywKKyAgICAgIDQyNywgIDQyNywgIDQyNywgIDQyNywg
IDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywKKyAgICAgIDQyNywgIDQyNywgIDQy
NywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywgIDQyNywKKworICAgICAgNDI3
LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LAor
ICAgICAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3
LCAgNDI3LAorICAgICAgNDI3LCAgNDI3LCAgNDI3LCAgNDI3LCAgICAwLCAgNDI1LCAgNDI1LCAg
NDI1LCAgNDI1LCAgNDI1CiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5
eV9ueHRbNjcxXSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzY5NV0gPQog
ICAgIHsgICAwLAogICAgICAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0
LCAgIDE1LCAgIDE2LCAgIDE3LAogICAgICAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAgIDIyLCAg
IDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLAogICAgICAgIDI0LCAgIDI1LCAgIDI2LCAgIDI3
LCAgIDI4LCAgIDI5LCAgIDMwLCAgIDMwLCAgIDMwLCAgIDMwLAotICAgICAgIDMwLCAgIDMwLCAg
IDMxLCAgIDMyLCAgIDMzLCAgIDM0LCAgIDM1LCAgIDM2LCAgIDM3LCAgIDM4LAotICAgICAgIDM5
LCAgIDQwLCAgIDQxLCAgIDQyLCAgIDMwLCAgIDQzLCAgIDQ0LCAgIDQ1LCAgIDQ2LCAgIDQ3LAot
ICAgICAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDUyLCAgIDUzLCAgIDMwLCAgIDMwLCAgIDMw
LCAgIDU0LAotICAgICAgIDU1LCAgIDU2LCAgIDU3LCAgIDU5LCAgIDU5LCAgIDY1LCAgIDY2LCAg
IDkwLCAgIDkxLCAgIDYwLAotICAgICAgIDYwLCAgICA4LCAgIDYxLCAgIDYyLCAgICA4LCAgICA4
LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAorICAgICAgIDMwLCAgIDMwLCAgIDMwLCAgIDMwLCAg
IDMwLCAgIDMxLCAgIDMyLCAgIDMzLCAgIDM0LCAgIDM1LAorICAgICAgIDM2LCAgIDM3LCAgIDM4
LCAgIDM5LCAgIDQwLCAgIDQxLCAgIDQyLCAgIDMwLCAgIDQzLCAgIDQ0LAorICAgICAgIDQ1LCAg
IDQ2LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDUyLCAgIDUzLCAgIDMwLAorICAg
ICAgIDMwLCAgIDMwLCAgIDU0LCAgIDU1LCAgIDU2LCAgIDU3LCAgIDU5LCAgIDU5LCAgIDY1LCAg
IDY2LAorICAgICAgIDkwLCAgIDkxLCAgIDYwLCAgIDYwLCAgICA4LCAgIDYxLCAgIDYyLCAgICA4
LCAgICA4LCAgICA4LAorICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAg
ICA4LCAgICA4LCAgICA4LCAgICA4LAogICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4
LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAg
ICA4LCAgICA4LCAgICA4LCAgICA4LCAgIDYzLCAgIDYzLCAgIDYzLAogCi0gICAgICAgNjMsICAg
NjMsICAgNjMsICAgIDgsICAgIDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAg
ICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
NjMsCisgICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
ICAgNjMsICAgIDgsCisgICAgICAgIDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
NjMsICAgNjMsICAgNjMsICAgNjMsCiAgICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
ICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAgICAgIDgsICAgIDgsICAgIDgsICAg
IDgsICAgNjcsICAgNzAsICAgNzIsICAgNzQsICAgNzQsICAgNzQsCi0gICAgICAgNzQsICAgNzQs
ICAgNzQsICAgOTMsICAxNTcsICAgNzUsICAgOTUsICAgOTYsICAgNzMsICAgNzEsCi0gICAgICAg
NzYsICAgOTcsICAgNjgsICAgOTgsICAgOTQsICAxMjMsICA0MDksICAgOTksICAxNDEsICAxMjQs
Ci0gICAgICAgNzcsICAgNzgsICAxNDIsICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAg
ODAsICAgNzgsCi0gICAgICA0MDgsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMs
ICAxMDAsICAgODEsICAgODUsCi0gICAgICAgODIsICAxMDcsICAxNDcsICAxMDgsICA0MDcsICAx
MDMsICAgODEsICAxMDEsICAgODEsICAxMDQsCi0gICAgICAxMDIsICAxMTAsICAxMDksICAxMjUs
ICAxMDUsICAgODYsICAgODEsICAgODcsICAgODgsICAxMTEsCi0KLSAgICAgIDEwNiwgIDExMiwg
IDExOSwgIDExNiwgIDExMywgICA4MiwgIDEyNiwgIDEzMiwgIDEyOCwgIDEyMCwKLSAgICAgIDEx
NCwgIDExNywgIDIyOSwgIDIzMCwgIDEzMywgIDEzNCwgIDEyMSwgIDEzNywgIDIwNCwgIDE0OCwK
LSAgICAgIDEzOCwgIDE0MywgIDExOCwgIDEyOSwgIDEzNSwgIDE0NCwgIDEzMCwgIDEzNiwgIDEz
OSwgIDIxNiwKLSAgICAgIDQwNiwgIDIxNywgIDQwNSwgIDIwNSwgIDE0NSwgIDE0MCwgICA3NCwg
ICA3NCwgICA3NCwgICA3NCwKLSAgICAgICA3NCwgICA3NCwgIDE1MywgIDE1MywgIDE1MywgIDE1
MywgIDE1MywgIDE1MywgIDM5NiwgIDE4NCwKLSAgICAgIDQwNCwgIDE1MSwgIDE4NSwgIDE4Niwg
IDE5MCwgIDIxMSwgIDE4NywgIDE1NCwgIDE4OCwgIDM5NywKLSAgICAgIDQwMywgIDE1MSwgIDE5
MSwgIDIxMiwgIDQwMiwgIDQwMSwgICA3OCwgIDE1NCwgICA3OSwgICA3OSwKLSAgICAgICA3OSwg
ICA3OSwgICA3OSwgICA4MCwgICA3OCwgIDQwMCwgICA4MCwgICA4MCwgICA4MCwgICA4MCwKLSAg
ICAgICA4MCwgICA4MCwgIDM5OSwgICA4MSwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1Niwg
IDE1NiwKLSAgICAgIDE1NSwgICA4MSwgIDE1NSwgICA4MSwgIDM5OCwgIDE1NiwgIDE1NiwgIDE1
NiwgIDE1NiwgIDE1NiwKLQotICAgICAgMTU2LCAgIDgxLCAgIDc4LCAgMzk1LCAgIDgzLCAgIDgz
LCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLAotICAgICAgMjU0LCAgMjU1LCAgMjU2LCAgMzk0LCAg
MzkzLCAgMjE5LCAgMzkyLCAgMjE5LCAgMjc1LCAgIDgxLAotICAgICAgMjIwLCAgMjIwLCAgMjIw
LCAgMjIwLCAgMjIwLCAgMjIwLCAgMjc2LCAgMzkxLCAgMzkwLCAgIDgxLAotICAgICAgMTUzLCAg
MTUzLCAgMTUzLCAgMTUzLCAgMTUzLCAgMTUzLCAgMjgwLCAgMjgxLCAgMjgyLCAgMzg5LAotICAg
ICAgMzg4LCAgMjIxLCAgMzg3LCAgMjIxLCAgMzg2LCAgMTU0LCAgMjIyLCAgMjIyLCAgMjIyLCAg
MjIyLAotICAgICAgMjIyLCAgMjIyLCAgMjg4LCAgMjg5LCAgMjkwLCAgMTU0LCAgMTU2LCAgMTU2
LCAgMTU2LCAgMTU2LAotICAgICAgMTU2LCAgMTU2LCAgMjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAg
MjIwLCAgMjIwLCAgMjIwLCAgMjIwLAotICAgICAgMjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAgMjIy
LCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLAotICAgICAgMjIyLCAgMjIyLCAgMjIyLCAg
MjIyLCAgMjIyLCAgMjIyLCAgMjk3LCAgMjk4LCAgMjk5LCAgMzA0LAotICAgICAgMzA1LCAgMzA2
LCAgMzA4LCAgMzA5LCAgMzEwLCAgMzE2LCAgMzE3LCAgMzE4LCAgIDU4LCAgIDU4LAotCi0gICAg
ICAgNTgsICAgNTgsICAgOTIsICAgOTIsICAxNTAsICAxNTAsICAxNTIsICAzODUsICAxNTIsICAx
NTIsCi0gICAgICAzODQsICAzODMsICAzODIsICAzODEsICAzODAsICAzNzksICAzNzgsICAzNzcs
ICAzNzYsICAzNzUsCi0gICAgICAzNzQsICAzNzMsICAzNzIsICAzNzEsICAzNzAsICAzNjksICAz
NjgsICAzNjcsICAzNjYsICAzNjUsCi0gICAgICAzNjQsICAzNjMsICAzNjIsICAzNjEsICAzNjAs
ICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUsCi0gICAgICAzNTQsICAzNTMsICAzNTIsICAz
NTEsICAzNTAsICAzNDksICAzNDgsICAzNDcsICAzNDYsICAzNDUsCi0gICAgICAzNDQsICAzNDMs
ICAzNDIsICAzNDEsICAzNDAsICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUsCi0gICAgICAz
MzQsICAzMzMsICAzMzIsICAzMzEsICAzMzAsICAzMjksICAzMjgsICAzMjcsICAzMjYsICAzMjUs
Ci0gICAgICAzMjQsICAzMjMsICAzMjIsICAzMjEsICAzMjAsICAzMTksICAzMTUsICAzMTQsICAz
MTMsICAzMTIsCi0gICAgICAzMTEsICAzMDcsICAzMDMsICAzMDIsICAzMDEsICAzMDAsICAyOTYs
ICAyOTUsICAyOTQsICAyOTMsCi0gICAgICAyOTIsICAyOTEsICAyODcsICAyODYsICAyODUsICAy
ODQsICAyODMsICAyNzksICAyNzgsICAyNzcsCi0KLSAgICAgIDI3NCwgIDI3MywgIDI3MiwgIDI3
MSwgIDI3MCwgIDI2OSwgIDI2OCwgIDI2NywgIDI2NiwgIDI2NSwKLSAgICAgIDI2NCwgIDI2Mywg
IDI2MiwgIDI2MSwgIDI2MCwgIDI1OSwgIDI1OCwgIDI1NywgIDI1MywgIDI1MiwKLSAgICAgIDI1
MSwgIDI1MCwgIDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDI0NCwgIDI0MywgIDI0MiwK
LSAgICAgIDI0MSwgIDI0MCwgIDIzOSwgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwgIDIzNCwgIDIz
MywgIDIzMiwKLSAgICAgIDIzMSwgIDIyOCwgIDIyNywgIDIyNiwgIDIyNSwgIDIyNCwgIDIyMywg
IDIxOCwgIDIxNSwgIDIxNCwKLSAgICAgIDIxMywgIDIxMCwgIDIwOSwgIDIwOCwgIDIwNywgIDIw
NiwgIDIwMywgIDIwMiwgIDIwMSwgIDIwMCwKLSAgICAgIDE5OSwgIDE5OCwgIDE5NywgIDE5Niwg
IDE5NSwgIDE5NCwgIDE5MywgIDE5MiwgIDE4OSwgIDE4MywKLSAgICAgIDE4MiwgIDE4MSwgIDE4
MCwgIDE3OSwgIDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwgIDE3MywKLSAgICAgIDE3Miwg
IDE3MSwgIDE3MCwgIDE2OSwgIDE2OCwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywKLSAg
ICAgIDE2MiwgIDE2MSwgIDE2MCwgIDE1OSwgIDE1OCwgIDE0OSwgIDE0NiwgIDEzMSwgIDEyNywg
IDEyMiwKLQotICAgICAgMTE1LCAgIDg5LCAgIDg0LCAgIDY5LCAgIDY0LCAgNDEwLCAgICA3LCAg
NDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEw
LCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAg
NDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEw
LCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAg
NDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLAotICAg
ICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAg
NDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEw
LCAgNDEwLCAgNDEwCisgICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
IDgsICAgIDgsICAgIDgsICAgIDgsCisgICAgICAgNjcsICAgNzAsICAgNzIsICAgNzQsICAgNzQs
ICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgOTMsCisgICAgICAxMTksICAgNzUsICAgOTUsICAg
OTYsICAgNzMsICAgNzEsICAgNzYsICAxMjAsICAgNjgsICAgOTcsCisgICAgICAyMTYsICAgOTgs
ICAyMTcsICAgOTQsICAxMjEsICAgOTksICAgNzcsICAgNzgsICAxMTYsICAgNzksCisgICAgICAg
NzksICAgNzksICAgNzksICAgNzksICAgODAsICAgNzgsICAxMTcsICAgODMsICAgODMsICAgODMs
CisgICAgICAgODMsICAgODMsICAgODMsICAgODUsICAgODEsICAxMDAsICAxMjMsICAxMTgsICAx
NTcsICAgODIsCisgICAgICAxMjQsICA0MjQsICAgODEsICA0MjMsICAxMjUsICAxMDEsICAxNDcs
ICAgODEsICAxMDIsICAgODYsCisKKyAgICAgIDEwMywgICA4NywgICA4OCwgIDExMCwgIDEwNCwg
ICA4MSwgIDEwNywgIDEyNiwgIDEwOCwgIDEwNSwKKyAgICAgIDEyOCwgIDExMSwgIDEzMiwgIDEx
MiwgICA4MiwgIDEwNiwgIDExMywgIDEwOSwgIDQyMiwgIDEzMywKKyAgICAgIDEzNCwgIDQyMSwg
IDExNCwgIDEzNywgIDQyMCwgIDEyOSwgIDEzOCwgIDE0MSwgIDEzMCwgIDEzNSwKKyAgICAgIDIw
NCwgIDE0MiwgIDEzNiwgIDE0MywgIDEzOSwgIDE4NCwgIDE0OCwgIDE0NCwgIDE4NSwgIDE4NiwK
KyAgICAgIDQxOSwgIDE0MCwgIDE4NywgIDQxOCwgIDE4OCwgIDIwNSwgIDE0NSwgICA3NCwgICA3
NCwgICA3NCwKKyAgICAgICA3NCwgICA3NCwgICA3NCwgIDE1MywgIDE1MywgIDE1MywgIDE1Mywg
IDE1MywgIDE1MywgIDIyOSwKKyAgICAgIDIzMCwgIDQxNywgIDE1MSwgIDI1NCwgIDI1NSwgIDI1
NiwgIDQxNiwgICA3OCwgIDE1NCwgICA3OSwKKyAgICAgICA3OSwgICA3OSwgICA3OSwgICA3OSwg
ICA4MCwgIDE1MSwgIDI4MCwgIDI4MSwgIDI4MiwgIDQxNSwKKyAgICAgIDQxNCwgIDE1NCwgIDQx
MywgICA3OCwgICA4MSwgICA4MCwgICA4MCwgICA4MCwgICA4MCwgICA4MCwKKyAgICAgICA4MCwg
IDE5MCwgIDI4OCwgIDI4OSwgIDI5MCwgIDQxMiwgIDE1NSwgICA4MSwgIDE1NSwgIDE5MSwKKwor
ICAgICAgIDgxLCAgMTU2LCAgMTU2LCAgMTU2LCAgMTU2LCAgMTU2LCAgMTU2LCAgMjk3LCAgMjk4
LCAgMjk5LAorICAgICAgNDExLCAgNDEwLCAgIDc4LCAgIDgxLCAgIDgzLCAgIDgzLCAgIDgzLCAg
IDgzLCAgIDgzLCAgIDgzLAorICAgICAgMjExLCAgMzA0LCAgMzA1LCAgMzA2LCAgNDA5LCAgMjE5
LCAgNDA4LCAgMjE5LCAgMjEyLCAgIDgxLAorICAgICAgMjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAg
MjIwLCAgMjIwLCAgMTUzLCAgMTUzLCAgMTUzLCAgMTUzLAorICAgICAgMTUzLCAgMTUzLCAgIDgx
LCAgMzA4LCAgMzA5LCAgMzEwLCAgNDA3LCAgMjIxLCAgNDA2LCAgMjIxLAorICAgICAgNDA1LCAg
MTU0LCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMTU2LCAgMTU2LAorICAg
ICAgMTU2LCAgMTU2LCAgMTU2LCAgMTU2LCAgMTU0LCAgMTU2LCAgMTU2LCAgMTU2LCAgMTU2LCAg
MTU2LAorICAgICAgMTU2LCAgMjc1LCAgMjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAgMjIw
LCAgNDA0LCAgMjc2LAorICAgICAgMjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAg
MjIyLCAgMjIyLCAgMjIyLCAgMjIyLAorICAgICAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIy
LCAgMjIyLCAgMjIyLCAgMjIyLCAgMzE2LCAgMzE3LAorCisgICAgICAzMTgsICAzOTYsICA0MDMs
ICA0MDIsICA0MDEsICA0MDAsICAzOTksICAzOTUsICAzOTQsICAzOTMsCisgICAgICAzOTIsICAz
OTEsICAzOTcsICAzOTAsICAzOTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgOTIsCisgICAg
ICAgOTIsICAxNTAsICAxNTAsICAxNTIsICAzODksICAxNTIsICAxNTIsICAzODgsICAzODcsICAz
ODYsCisgICAgICAzODUsICAzODQsICAzODMsICAzODIsICAzODEsICAzODAsICAzNzksICAzNzgs
ICAzNzcsICAzNzYsCisgICAgICAzNzUsICAzNzQsICAzNzMsICAzNzIsICAzNzEsICAzNzAsICAz
NjksICAzNjgsICAzNjcsICAzNjYsCisgICAgICAzNjUsICAzNjQsICAzNjMsICAzNjIsICAzNjEs
ICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsCisgICAgICAzNTUsICAzNTQsICAzNTMsICAz
NTIsICAzNTEsICAzNTAsICAzNDksICAzNDgsICAzNDcsICAzNDYsCisgICAgICAzNDUsICAzNDQs
ICAzNDMsICAzNDIsICAzNDEsICAzNDAsICAzMzksICAzMzgsICAzMzcsICAzMzYsCisgICAgICAz
MzUsICAzMzQsICAzMzMsICAzMzIsICAzMzEsICAzMzAsICAzMjksICAzMjgsICAzMjcsICAzMjYs
CisgICAgICAzMjUsICAzMjQsICAzMjMsICAzMjIsICAzMjEsICAzMjAsICAzMTksICAzMTUsICAz
MTQsICAzMTMsCisKKyAgICAgIDMxMiwgIDMxMSwgIDMwNywgIDMwMywgIDMwMiwgIDMwMSwgIDMw
MCwgIDI5NiwgIDI5NSwgIDI5NCwKKyAgICAgIDI5MywgIDI5MiwgIDI5MSwgIDI4NywgIDI4Niwg
IDI4NSwgIDI4NCwgIDI4MywgIDI3OSwgIDI3OCwKKyAgICAgIDI3NywgIDI3NCwgIDI3MywgIDI3
MiwgIDI3MSwgIDI3MCwgIDI2OSwgIDI2OCwgIDI2NywgIDI2NiwKKyAgICAgIDI2NSwgIDI2NCwg
IDI2MywgIDI2MiwgIDI2MSwgIDI2MCwgIDI1OSwgIDI1OCwgIDI1NywgIDI1MywKKyAgICAgIDI1
MiwgIDI1MSwgIDI1MCwgIDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDI0NCwgIDI0MywK
KyAgICAgIDI0MiwgIDI0MSwgIDI0MCwgIDIzOSwgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwgIDIz
NCwgIDIzMywKKyAgICAgIDIzMiwgIDIzMSwgIDIyOCwgIDIyNywgIDIyNiwgIDIyNSwgIDIyNCwg
IDIyMywgIDIxOCwgIDIxNSwKKyAgICAgIDIxNCwgIDIxMywgIDIxMCwgIDIwOSwgIDIwOCwgIDIw
NywgIDIwNiwgIDIwMywgIDIwMiwgIDIwMSwKKyAgICAgIDIwMCwgIDE5OSwgIDE5OCwgIDE5Nywg
IDE5NiwgIDE5NSwgIDE5NCwgIDE5MywgIDE5MiwgIDE4OSwKKyAgICAgIDE4MywgIDE4MiwgIDE4
MSwgIDE4MCwgIDE3OSwgIDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwKKworICAgICAgMTcz
LCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LCAgMTY3LCAgMTY2LCAgMTY1LCAgMTY0LAor
ICAgICAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTU4LCAgMTQ5LCAgMTQ2LCAgMTMx
LCAgMTI3LAorICAgICAgMTIyLCAgMTE1LCAgIDg5LCAgIDg0LCAgIDY5LCAgIDY0LCAgNDI1LCAg
ICA3LCAgNDI1LCAgNDI1LAorICAgICAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1
LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LAorICAgICAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAg
NDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LAorICAgICAgNDI1LCAgNDI1LCAgNDI1
LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LAorICAgICAgNDI1LCAg
NDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LAorICAg
ICAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAg
NDI1LAorICAgICAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1
LCAgNDI1LCAgNDI1LAorICAgICAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1CisKICAgICB9IDsKIAot
c3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1s2NzFdID0KK3N0YXRpYyB5eWNvbnN0
IGZsZXhfaW50MTZfdCB5eV9jaGtbNjk1XSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
CkBAIC02NTcsNzcgKzY3NCw4MSBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hr
WzY3MV0gPQogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAotICAgICAgICAxLCAgICAxLCAgICAx
LCAgICAzLCAgICA0LCAgIDEyLCAgIDEyLCAgIDI4LCAgIDI4LCAgICAzLAotICAgICAgICA0LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAorICAg
ICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICA0LCAgIDEyLCAg
IDEyLAorICAgICAgIDI4LCAgIDI4LCAgICAzLCAgICA0LCAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LAogICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LAogICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAogCiAgICAgICAgIDUsICAgIDUsICAgIDUs
ICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsCiAgICAgICAgIDUsICAg
IDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsCiAgICAg
ICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAg
IDUsCi0gICAgICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgMTMsICAgMTcsICAgMTksICAgMjAs
ICAgMjAsICAgMjAsCi0gICAgICAgMjAsICAgMjAsICAgMjAsICAgMzMsICA0MTUsICAgMjEsICAg
MzQsICAgMzQsICAgMTksICAgMTcsCi0gICAgICAgMjEsICAgMzUsICAgMTMsICAgMzUsICAgMzMs
ICAgNDQsICA0MDgsICAgMzUsICAgNTEsICAgNDQsCi0gICAgICAgMjEsICAgMjIsICAgNTEsICAg
MjIsICAgMjIsICAgMjIsICAgMjIsICAgMjIsICAgMjIsICAgMjMsCi0gICAgICA0MDcsICAgMjMs
ICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMzYsICAgMjIsICAgMjYsCi0gICAgICAg
MjIsICAgMzgsICAgNTUsICAgMzgsICAzOTcsICAgMzcsICAgMjMsICAgMzYsICAgMjIsICAgMzcs
Ci0gICAgICAgMzYsICAgMzksICAgMzgsICAgNDUsICAgMzcsICAgMjYsICAgMjMsICAgMjYsICAg
MjYsICAgMzksCi0KLSAgICAgICAzNywgICAzOSwgICA0MiwgICA0MSwgICAzOSwgICAyMiwgICA0
NSwgICA0OSwgICA0NywgICA0MiwKLSAgICAgICAzOSwgICA0MSwgIDE2NywgIDE2NywgICA0OSwg
ICA0OSwgICA0MiwgICA1MCwgIDEzNSwgICA1NSwKLSAgICAgICA1MCwgICA1MiwgICA0MSwgICA0
NywgICA0OSwgICA1MiwgICA0NywgICA0OSwgICA1MCwgIDE0NSwKLSAgICAgIDM5NiwgIDE0NSwg
IDM5NSwgIDEzNSwgICA1MiwgICA1MCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwKLSAgICAgICA3
NCwgICA3NCwgICA3OCwgICA3OCwgICA3OCwgICA3OCwgICA3OCwgICA3OCwgIDM4MSwgIDEyMCwK
LSAgICAgIDM5MywgICA3NCwgIDEyMCwgIDEyMCwgIDEyMiwgIDE0MSwgIDEyMCwgICA3OCwgIDEy
MCwgIDM4MSwKLSAgICAgIDM5MiwgICA3NCwgIDEyMiwgIDE0MSwgIDM5MSwgIDM4OCwgICA3OSwg
ICA3OCwgICA3OSwgICA3OSwKLSAgICAgICA3OSwgICA3OSwgICA3OSwgICA3OSwgICA4MCwgIDM4
NywgICA4MCwgICA4MCwgICA4MCwgICA4MCwKLSAgICAgICA4MCwgICA4MCwgIDM4NSwgICA3OSwg
IDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwKLSAgICAgICA4MSwgICA4MCwgICA4
MSwgICA3OSwgIDM4MiwgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MSwKLQotICAgICAgIDgx
LCAgIDgwLCAgIDgzLCAgMzgwLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLAot
ICAgICAgMTkyLCAgMTkyLCAgMTkyLCAgMzc5LCAgMzc4LCAgMTUxLCAgMzc2LCAgMTUxLCAgMjEx
LCAgIDgzLAotICAgICAgMTUxLCAgMTUxLCAgMTUxLCAgMTUxLCAgMTUxLCAgMTUxLCAgMjExLCAg
Mzc1LCAgMzc0LCAgIDgzLAotICAgICAgMTUzLCAgMTUzLCAgMTUzLCAgMTUzLCAgMTUzLCAgMTUz
LCAgMjE1LCAgMjE1LCAgMjE1LCAgMzcxLAotICAgICAgMzcwLCAgMTU0LCAgMzY5LCAgMTU0LCAg
MzY4LCAgMTUzLCAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LAotICAgICAgMTU0LCAgMTU0LCAgMjI2
LCAgMjI2LCAgMjI2LCAgMTUzLCAgMTU2LCAgMTU2LCAgMTU2LCAgMTU2LAotICAgICAgMTU2LCAg
MTU2LCAgMjE5LCAgMjE5LCAgMjE5LCAgMjE5LCAgMjE5LCAgMjE5LCAgMjIwLCAgMjIwLAotICAg
ICAgMjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAgMjIxLCAgMjIxLCAgMjIxLCAgMjIxLCAgMjIxLCAg
MjIxLAotICAgICAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjM0LCAgMjM0
LCAgMjM0LCAgMjQxLAotICAgICAgMjQxLCAgMjQxLCAgMjQ1LCAgMjQ1LCAgMjQ1LCAgMjUxLCAg
MjUxLCAgMjUxLCAgNDExLCAgNDExLAotCi0gICAgICA0MTEsICA0MTEsICA0MTIsICA0MTIsICA0
MTMsICA0MTMsICA0MTQsICAzNjcsICA0MTQsICA0MTQsCi0gICAgICAzNjYsICAzNjUsICAzNjQs
ICAzNTksICAzNTYsICAzNTMsICAzNTIsICAzNTEsICAzNTAsICAzNDksCi0gICAgICAzNDcsICAz
NDUsICAzNDQsICAzNDMsICAzNDIsICAzNDAsICAzMzksICAzMzcsICAzMzUsICAzMzQsCi0gICAg
ICAzMzMsICAzMzIsICAzMzEsICAzMzAsICAzMjksICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAz
MjMsCi0gICAgICAzMjIsICAzMjEsICAzMjAsICAzMTksICAzMTUsICAzMTQsICAzMTEsICAzMDAs
ICAyOTYsICAyOTUsCi0gICAgICAyOTQsICAyOTMsICAyODYsICAyODUsICAyODQsICAyNzksICAy
NzgsICAyNzcsICAyNzYsICAyNzUsCi0gICAgICAyNzQsICAyNzEsICAyNzAsICAyNjksICAyNjgs
ICAyNjcsICAyNjYsICAyNjUsICAyNjQsICAyNjMsCi0gICAgICAyNjIsICAyNjEsICAyNjAsICAy
NTksICAyNTgsICAyNTcsICAyNTAsICAyNDksICAyNDgsICAyNDcsCi0gICAgICAyNDYsICAyNDQs
ICAyNDAsICAyMzksICAyMzgsICAyMzcsICAyMzMsICAyMzIsICAyMzEsICAyMzAsCi0gICAgICAy
MjksICAyMjgsICAyMjUsICAyMjMsICAyMTgsICAyMTcsICAyMTYsICAyMTQsICAyMTMsICAyMTIs
Ci0KLSAgICAgIDIxMCwgIDIwOSwgIDIwOCwgIDIwNywgIDIwNiwgIDIwNSwgIDIwNCwgIDIwMywg
IDIwMiwgIDIwMSwKLSAgICAgIDIwMCwgIDE5OSwgIDE5OCwgIDE5NywgIDE5NiwgIDE5NSwgIDE5
NCwgIDE5MywgIDE5MSwgIDE5MCwKLSAgICAgIDE4OSwgIDE4OCwgIDE4NywgIDE4NiwgIDE4NSwg
IDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE4MCwKLSAgICAgIDE3OSwgIDE3NywgIDE3NiwgIDE3
NSwgIDE3NCwgIDE3MywgIDE3MiwgIDE3MSwgIDE3MCwgIDE2OSwKLSAgICAgIDE2OCwgIDE2Niwg
IDE2NSwgIDE2NCwgIDE2MywgIDE2MiwgIDE2MSwgIDE0NiwgIDE0NCwgIDE0MywKLSAgICAgIDE0
MiwgIDE0MCwgIDEzOSwgIDEzOCwgIDEzNywgIDEzNiwgIDEzNCwgIDEzMywgIDEzMiwgIDEzMSwK
LSAgICAgIDEzMCwgIDEyOSwgIDEyOCwgIDEyNywgIDEyNiwgIDEyNSwgIDEyNCwgIDEyMywgIDEy
MSwgIDExOCwKLSAgICAgIDExNywgIDExNiwgIDExNSwgIDExNCwgIDExMywgIDExMiwgIDExMSwg
IDExMCwgIDEwOSwgIDEwOCwKLSAgICAgIDEwNywgIDEwNiwgIDEwNSwgIDEwNCwgIDEwMywgIDEw
MiwgIDEwMSwgIDEwMCwgICA5OSwgICA5OCwKLSAgICAgICA5NywgICA5NiwgICA5NSwgICA5MSwg
ICA4NywgICA2MCwgICA1MywgICA0OCwgICA0NiwgICA0MywKLQotICAgICAgIDQwLCAgIDI3LCAg
IDI0LCAgIDE2LCAgIDExLCAgICA3LCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEw
LCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLAot
ICAgICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEw
LCAgNDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAg
NDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEw
LCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAg
NDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLAotICAgICAgNDEwLCAgNDEwLCAgNDEw
LCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwLCAgNDEwCisgICAgICAgIDUsICAg
IDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsCisgICAg
ICAgMTMsICAgMTcsICAgMTksICAgMjAsICAgMjAsICAgMjAsICAgMjAsICAgMjAsICAgMjAsICAg
MzMsCisgICAgICAgNDIsICAgMjEsICAgMzQsICAgMzQsICAgMTksICAgMTcsICAgMjEsICAgNDIs
ICAgMTMsICAgMzUsCisgICAgICAxNDUsICAgMzUsICAxNDUsICAgMzMsICAgNDIsICAgMzUsICAg
MjEsICAgMjIsICAgNDEsICAgMjIsCisgICAgICAgMjIsICAgMjIsICAgMjIsICAgMjIsICAgMjIs
ICAgMjMsICAgNDEsICAgMjMsICAgMjMsICAgMjMsCisgICAgICAgMjMsICAgMjMsICAgMjMsICAg
MjYsICAgMjIsICAgMzYsICAgNDQsICAgNDEsICA0MzAsICAgMjIsCisgICAgICAgNDQsICA0MjMs
ICAgMjMsICA0MjIsICAgNDUsICAgMzYsICAgNTUsICAgMjIsICAgMzYsICAgMjYsCisKKyAgICAg
ICAzNywgICAyNiwgICAyNiwgICAzOSwgICAzNywgICAyMywgICAzOCwgICA0NSwgICAzOCwgICAz
NywKKyAgICAgICA0NywgICAzOSwgICA0OSwgICAzOSwgICAyMiwgICAzNywgICAzOSwgICAzOCwg
IDQyMSwgICA0OSwKKyAgICAgICA0OSwgIDQyMCwgICAzOSwgICA1MCwgIDQxOSwgICA0NywgICA1
MCwgICA1MSwgICA0NywgICA0OSwKKyAgICAgIDEzNSwgICA1MSwgICA0OSwgICA1MiwgICA1MCwg
IDEyMCwgICA1NSwgICA1MiwgIDEyMCwgIDEyMCwKKyAgICAgIDQxNywgICA1MCwgIDEyMCwgIDQx
NiwgIDEyMCwgIDEzNSwgICA1MiwgICA3NCwgICA3NCwgICA3NCwKKyAgICAgICA3NCwgICA3NCwg
ICA3NCwgICA3OCwgICA3OCwgICA3OCwgICA3OCwgICA3OCwgICA3OCwgIDE2NywKKyAgICAgIDE2
NywgIDQxNSwgICA3NCwgIDE5MiwgIDE5MiwgIDE5MiwgIDQxMywgICA3OSwgICA3OCwgICA3OSwK
KyAgICAgICA3OSwgICA3OSwgICA3OSwgICA3OSwgICA3OSwgICA3NCwgIDIxNSwgIDIxNSwgIDIx
NSwgIDQxMiwKKyAgICAgIDQxMSwgICA3OCwgIDQxMCwgICA4MCwgICA3OSwgICA4MCwgICA4MCwg
ICA4MCwgICA4MCwgICA4MCwKKyAgICAgICA4MCwgIDEyMiwgIDIyNiwgIDIyNiwgIDIyNiwgIDQw
OSwgICA4MSwgICA3OSwgICA4MSwgIDEyMiwKKworICAgICAgIDgwLCAgIDgxLCAgIDgxLCAgIDgx
LCAgIDgxLCAgIDgxLCAgIDgxLCAgMjM0LCAgMjM0LCAgMjM0LAorICAgICAgNDA4LCAgNDA3LCAg
IDgzLCAgIDgwLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLAorICAgICAgMTQx
LCAgMjQxLCAgMjQxLCAgMjQxLCAgMzk4LCAgMTUxLCAgMzk3LCAgMTUxLCAgMTQxLCAgIDgzLAor
ICAgICAgMTUxLCAgMTUxLCAgMTUxLCAgMTUxLCAgMTUxLCAgMTUxLCAgMTUzLCAgMTUzLCAgMTUz
LCAgMTUzLAorICAgICAgMTUzLCAgMTUzLCAgIDgzLCAgMjQ1LCAgMjQ1LCAgMjQ1LCAgMzk2LCAg
MTU0LCAgMzk1LCAgMTU0LAorICAgICAgMzkzLCAgMTUzLCAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0
LCAgMTU0LCAgMTU0LCAgMTU1LCAgMTU1LAorICAgICAgMTU1LCAgMTU1LCAgMTU1LCAgMTU1LCAg
MTUzLCAgMTU2LCAgMTU2LCAgMTU2LCAgMTU2LCAgMTU2LAorICAgICAgMTU2LCAgMjExLCAgMjE5
LCAgMjE5LCAgMjE5LCAgMjE5LCAgMjE5LCAgMjE5LCAgMzkyLCAgMjExLAorICAgICAgMjIwLCAg
MjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAgMjIwLCAgMjIxLCAgMjIxLCAgMjIxLCAgMjIxLAorICAg
ICAgMjIxLCAgMjIxLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjUxLCAg
MjUxLAorCisgICAgICAyNTEsICAzODEsICAzOTEsICAzODgsICAzODcsICAzODUsICAzODIsICAz
ODAsICAzNzksICAzNzgsCisgICAgICAzNzYsICAzNzUsICAzODEsICAzNzQsICAzODEsICA0MjYs
ICA0MjYsICA0MjYsICA0MjYsICA0MjcsCisgICAgICA0MjcsICA0MjgsICA0MjgsICA0MjksICAz
NzEsICA0MjksICA0MjksICAzNzAsICAzNjksICAzNjgsCisgICAgICAzNjcsICAzNjYsICAzNjUs
ICAzNjQsICAzNTksICAzNTYsICAzNTMsICAzNTIsICAzNTEsICAzNTAsCisgICAgICAzNDksICAz
NDcsICAzNDUsICAzNDQsICAzNDMsICAzNDIsICAzNDAsICAzMzksICAzMzcsICAzMzUsCisgICAg
ICAzMzQsICAzMzMsICAzMzIsICAzMzEsICAzMzAsICAzMjksICAzMjcsICAzMjYsICAzMjUsICAz
MjQsCisgICAgICAzMjMsICAzMjIsICAzMjEsICAzMjAsICAzMTksICAzMTUsICAzMTQsICAzMTEs
ICAzMDAsICAyOTYsCisgICAgICAyOTUsICAyOTQsICAyOTMsICAyODYsICAyODUsICAyODQsICAy
NzksICAyNzgsICAyNzcsICAyNzYsCisgICAgICAyNzUsICAyNzQsICAyNzEsICAyNzAsICAyNjks
ICAyNjgsICAyNjcsICAyNjYsICAyNjUsICAyNjQsCisgICAgICAyNjMsICAyNjIsICAyNjEsICAy
NjAsICAyNTksICAyNTgsICAyNTcsICAyNTAsICAyNDksICAyNDgsCisKKyAgICAgIDI0NywgIDI0
NiwgIDI0NCwgIDI0MCwgIDIzOSwgIDIzOCwgIDIzNywgIDIzMywgIDIzMiwgIDIzMSwKKyAgICAg
IDIzMCwgIDIyOSwgIDIyOCwgIDIyNSwgIDIyMywgIDIxOCwgIDIxNywgIDIxNiwgIDIxNCwgIDIx
MywKKyAgICAgIDIxMiwgIDIxMCwgIDIwOSwgIDIwOCwgIDIwNywgIDIwNiwgIDIwNSwgIDIwNCwg
IDIwMywgIDIwMiwKKyAgICAgIDIwMSwgIDIwMCwgIDE5OSwgIDE5OCwgIDE5NywgIDE5NiwgIDE5
NSwgIDE5NCwgIDE5MywgIDE5MSwKKyAgICAgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywgIDE4Niwg
IDE4NSwgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwKKyAgICAgIDE4MCwgIDE3OSwgIDE3NywgIDE3
NiwgIDE3NSwgIDE3NCwgIDE3MywgIDE3MiwgIDE3MSwgIDE3MCwKKyAgICAgIDE2OSwgIDE2OCwg
IDE2NiwgIDE2NSwgIDE2NCwgIDE2MywgIDE2MiwgIDE2MSwgIDE0NiwgIDE0NCwKKyAgICAgIDE0
MywgIDE0MiwgIDE0MCwgIDEzOSwgIDEzOCwgIDEzNywgIDEzNiwgIDEzNCwgIDEzMywgIDEzMiwK
KyAgICAgIDEzMSwgIDEzMCwgIDEyOSwgIDEyOCwgIDEyNywgIDEyNiwgIDEyNSwgIDEyNCwgIDEy
MywgIDEyMSwKKyAgICAgIDExOCwgIDExNywgIDExNiwgIDExNSwgIDExNCwgIDExMywgIDExMiwg
IDExMSwgIDExMCwgIDEwOSwKKworICAgICAgMTA4LCAgMTA3LCAgMTA2LCAgMTA1LCAgMTA0LCAg
MTAzLCAgMTAyLCAgMTAxLCAgMTAwLCAgIDk5LAorICAgICAgIDk4LCAgIDk3LCAgIDk2LCAgIDk1
LCAgIDkxLCAgIDg3LCAgIDYwLCAgIDUzLCAgIDQ4LCAgIDQ2LAorICAgICAgIDQzLCAgIDQwLCAg
IDI3LCAgIDI0LCAgIDE2LCAgIDExLCAgICA3LCAgNDI1LCAgNDI1LCAgNDI1LAorICAgICAgNDI1
LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LAor
ICAgICAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1
LCAgNDI1LAorICAgICAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAg
NDI1LCAgNDI1LCAgNDI1LAorICAgICAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1
LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LAorICAgICAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAg
NDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LAorICAgICAgNDI1LCAgNDI1LCAgNDI1
LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LCAgNDI1LAorICAgICAgNDI1LCAg
NDI1LCAgNDI1LCAgNDI1CisKICAgICB9IDsKIAogLyogVGFibGUgb2YgYm9vbGVhbnMsIHRydWUg
aWYgcnVsZSBjb3VsZCBtYXRjaCBlb2wuICovCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3Qg
eXlfcnVsZV9jYW5fbWF0Y2hfZW9sWzE0Nl0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90
IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsxNDhdID0KICAgICB7ICAgMCwKIDAsIDAsIDAsIDEsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAt
NzM2LDcgKzc1Nyw3IEBAIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9ydWxlX2Nhbl9t
YXRjaF9lb2xbMTQ2XSA9CiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwg
MSwgMCwgMCwgICAgIH07CisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgICAgIH07CiAKIC8q
IFRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0J2xsIGNhdGNoCiAg
KiBhbnkgdXNlcyBvZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCkBAIC03NTYsNyArNzc3LDcg
QEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBMZXggc3BlY2lmaWNhdGlvbiBmb3IgR0xTTCBFUy4K
IEJhc2VkIG9uIEFOU0kgQyBncmFtbWFyLCBMZXggc3BlY2lmaWNhdGlvbjoKIGh0dHA6Ly93d3cu
bHlzYXRvci5saXUuc2UvYy9BTlNJLUMtZ3JhbW1hci1sLmh0bWwKIAotSUYgWU9VIE1PRElGWSBU
SElTIEZJTEUgWU9VIEFMU08gTkVFRCBUTyBSVU4gZ2VuZXJhdGVfZ2xzbGFuZ19sZXhlci5zaCwK
K0lGIFlPVSBNT0RJRlkgVEhJUyBGSUxFIFlPVSBBTFNPIE5FRUQgVE8gUlVOIGdlbmVyYXRlX3Bh
cnNlci5zaCwKIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGFuZ19sZXgu
Y3BwKS4KICovCiAKQEAgLTg1OSwxMCArODgwLDYgQEAgaW50IHl5Z2V0X2xpbmVubyAoeXlzY2Fu
X3QgeXlzY2FubmVyICk7CiAKIHZvaWQgeXlzZXRfbGluZW5vIChpbnQgbGluZV9udW1iZXIgLHl5
c2Nhbl90IHl5c2Nhbm5lciApOwogCi1pbnQgeXlnZXRfY29sdW1uICAoeXlzY2FuX3QgeXlzY2Fu
bmVyICk7Ci0KLXZvaWQgeXlzZXRfY29sdW1uIChpbnQgY29sdW1uX25vICx5eXNjYW5fdCB5eXNj
YW5uZXIgKTsKLQogWVlTVFlQRSAqIHl5Z2V0X2x2YWwgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwog
CiB2b2lkIHl5c2V0X2x2YWwgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0gLHl5c2Nhbl90IHl5c2Nh
bm5lciApOwpAQCAtOTA1LDcgKzkyMiwxMiBAQCBzdGF0aWMgaW50IGlucHV0ICh5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKICAgICAKIC8qIEFtb3VudCBvZiBzdHVmZiB0byBzbHVycCB1cCB3aXRoIGVh
Y2ggcmVhZC4gKi8KICNpZm5kZWYgWVlfUkVBRF9CVUZfU0laRQorI2lmZGVmIF9faWE2NF9fCisv
KiBPbiBJQS02NCwgdGhlIGJ1ZmZlciBzaXplIGlzIDE2aywgbm90IDhrICovCisjZGVmaW5lIFlZ
X1JFQURfQlVGX1NJWkUgMTYzODQKKyNlbHNlCiAjZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUgODE5
MgorI2VuZGlmIC8qIF9faWE2NF9fICovCiAjZW5kaWYKIAogLyogQ29weSB3aGF0ZXZlciB0aGUg
bGFzdCBydWxlIG1hdGNoZWQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4gKi8KQEAgLTkyNCw3ICs5
NDYsNyBAQCBzdGF0aWMgaW50IGlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAlpZiAoIFlZ
X0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfaXNfaW50ZXJhY3RpdmUgKSBcCiAJCXsgXAogCQlp
bnQgYyA9ICcqJzsgXAotCQl1bnNpZ25lZCBuOyBcCisJCXNpemVfdCBuOyBcCiAJCWZvciAoIG4g
PSAwOyBuIDwgbWF4X3NpemUgJiYgXAogCQkJICAgICAoYyA9IGdldGMoIHl5aW4gKSkgIT0gRU9G
ICYmIGMgIT0gJ1xuJzsgKytuICkgXAogCQkJYnVmW25dID0gKGNoYXIpIGM7IFwKQEAgLTEwNjYs
MTMgKzEwODgsMTMgQEAgeXlfbWF0Y2g6CiAJCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1
cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQkJewogCQkJCXl5
X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQkJaWYg
KCB5eV9jdXJyZW50X3N0YXRlID49IDQxMSApCisJCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49
IDQyNiApCiAJCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJCX0K
IAkJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSAr
ICh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJd2hpbGUgKCB5eV9j
dXJyZW50X3N0YXRlICE9IDQxMCApOworCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUgIT0gNDI1
ICk7CiAJCXl5X2NwID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zOwogCQl5eV9jdXJyZW50
X3N0YXRlID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZTsKIApAQCAtMTI4OSwxNSArMTMx
MSwxNSBAQCBZWV9SVUxFX1NFVFVQCiAJWVlfQlJFQUsKIGNhc2UgNDc6CiBZWV9SVUxFX1NFVFVQ
Ci17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihTVFJVQ1QpOyB9Cit7IGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSX0VYVEVSTkFMX09FUzsg
fQogCVlZX0JSRUFLCiBjYXNlIDQ4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRf
d29yZCh5eXNjYW5uZXIpOyB9Cit7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVy
biBTQU1QTEVSMkRSRUNUOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDk6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuKFNUUlVDVCk7IH0KIAlZWV9CUkVBSwogY2FzZSA1MDoKIFlZX1JV
TEVfU0VUVVAKQEAgLTE0NTMsMjIwICsxNDc1LDIyOCBAQCBZWV9SVUxFX1NFVFVQCiAJWVlfQlJF
QUsKIGNhc2UgODg6CiBZWV9SVUxFX1NFVFVQCit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KKwlZWV9CUkVBSworY2FzZSA4OToKK1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuIHJl
c2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQorCVlZX0JSRUFLCitjYXNlIDkwOgorWVlfUlVMRV9T
RVRVUAogewogICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsg
CiAgICByZXR1cm4gY2hlY2tfdHlwZSh5eXNjYW5uZXIpOwogfQogCVlZX0JSRUFLCi1jYXNlIDg5
OgorY2FzZSA5MToKIFlZX1JVTEVfU0VUVVAKIHsgeXlsdmFsLT5sZXguaSA9IHN0cnRvbCh5eXRl
eHQsIDAsIDApOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9CiAJWVlfQlJFQUsKLWNhc2UgOTA6Citj
YXNlIDkyOgogWVlfUlVMRV9TRVRVUAogeyB5eWx2YWwtPmxleC5pID0gc3RydG9sKHl5dGV4dCwg
MCwgMCk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KIAlZWV9CUkVBSwotY2FzZSA5MToKK2Nhc2Ug
OTM6CiBZWV9SVUxFX1NFVFVQCiB7IGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCAiSW52YWxpZCBP
Y3RhbCBudW1iZXIuIiwgeXl0ZXh0LCAiIiwgIiIpOyBjb250ZXh0LT5yZWNvdmVyKCk7IHJldHVy
biAwO30KIAlZWV9CUkVBSwotY2FzZSA5MjoKK2Nhc2UgOTQ6CiBZWV9SVUxFX1NFVFVQCiB7IHl5
bHZhbC0+bGV4LmkgPSBzdHJ0b2woeXl0ZXh0LCAwLCAwKTsgcmV0dXJuKElOVENPTlNUQU5UKTsg
fQogCVlZX0JSRUFLCi1jYXNlIDkzOgorY2FzZSA5NToKIFlZX1JVTEVfU0VUVVAKIHsgeXlsdmFs
LT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZM
T0FUQ09OU1RBTlQpOyB9CiAJWVlfQlJFQUsKLWNhc2UgOTQ6CitjYXNlIDk2OgogWVlfUlVMRV9T
RVRVUAogeyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4
dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KIAlZWV9CUkVBSwotY2FzZSA5NToKK2Nhc2Ug
OTc6CiBZWV9SVUxFX1NFVFVQCiB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQogCVlZX0JSRUFLCi1j
YXNlIDk2OgorY2FzZSA5ODoKIFlZX1JVTEVfU0VUVVAKIHsgIHJldHVybihBRERfQVNTSUdOKTsg
fQogCVlZX0JSRUFLCi1jYXNlIDk3OgorY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKIHsgIHJldHVy
bihTVUJfQVNTSUdOKTsgfQogCVlZX0JSRUFLCi1jYXNlIDk4OgorY2FzZSAxMDA6CiBZWV9SVUxF
X1NFVFVQCiB7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KIAlZWV9CUkVBSwotY2FzZSA5OToKK2Nh
c2UgMTAxOgogWVlfUlVMRV9TRVRVUAogeyAgcmV0dXJuKERJVl9BU1NJR04pOyB9CiAJWVlfQlJF
QUsKLWNhc2UgMTAwOgorY2FzZSAxMDI6CiBZWV9SVUxFX1NFVFVQCiB7ICByZXR1cm4oTU9EX0FT
U0lHTik7IH0KIAlZWV9CUkVBSwotY2FzZSAxMDE6CitjYXNlIDEwMzoKIFlZX1JVTEVfU0VUVVAK
IHsgIHJldHVybihMRUZUX0FTU0lHTik7IH0KIAlZWV9CUkVBSwotY2FzZSAxMDI6CitjYXNlIDEw
NDoKIFlZX1JVTEVfU0VUVVAKIHsgIHJldHVybihSSUdIVF9BU1NJR04pOyB9CiAJWVlfQlJFQUsK
LWNhc2UgMTAzOgorY2FzZSAxMDU6CiBZWV9SVUxFX1NFVFVQCiB7ICByZXR1cm4oQU5EX0FTU0lH
Tik7IH0KIAlZWV9CUkVBSwotY2FzZSAxMDQ6CitjYXNlIDEwNjoKIFlZX1JVTEVfU0VUVVAKIHsg
IHJldHVybihYT1JfQVNTSUdOKTsgfQogCVlZX0JSRUFLCi1jYXNlIDEwNToKK2Nhc2UgMTA3Ogog
WVlfUlVMRV9TRVRVUAogeyAgcmV0dXJuKE9SX0FTU0lHTik7IH0KIAlZWV9CUkVBSwotY2FzZSAx
MDY6CitjYXNlIDEwODoKIFlZX1JVTEVfU0VUVVAKIHsgIHJldHVybihJTkNfT1ApOyB9CiAJWVlf
QlJFQUsKLWNhc2UgMTA3OgorY2FzZSAxMDk6CiBZWV9SVUxFX1NFVFVQCiB7ICByZXR1cm4oREVD
X09QKTsgfQogCVlZX0JSRUFLCi1jYXNlIDEwODoKK2Nhc2UgMTEwOgogWVlfUlVMRV9TRVRVUAog
eyAgcmV0dXJuKEFORF9PUCk7IH0KIAlZWV9CUkVBSwotY2FzZSAxMDk6CitjYXNlIDExMToKIFlZ
X1JVTEVfU0VUVVAKIHsgIHJldHVybihPUl9PUCk7IH0KIAlZWV9CUkVBSwotY2FzZSAxMTA6Citj
YXNlIDExMjoKIFlZX1JVTEVfU0VUVVAKIHsgIHJldHVybihYT1JfT1ApOyB9CiAJWVlfQlJFQUsK
LWNhc2UgMTExOgorY2FzZSAxMTM6CiBZWV9SVUxFX1NFVFVQCiB7ICByZXR1cm4oTEVfT1ApOyB9
CiAJWVlfQlJFQUsKLWNhc2UgMTEyOgorY2FzZSAxMTQ6CiBZWV9SVUxFX1NFVFVQCiB7ICByZXR1
cm4oR0VfT1ApOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTEzOgorY2FzZSAxMTU6CiBZWV9SVUxFX1NF
VFVQCiB7ICByZXR1cm4oRVFfT1ApOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTE0OgorY2FzZSAxMTY6
CiBZWV9SVUxFX1NFVFVQCiB7ICByZXR1cm4oTkVfT1ApOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTE1
OgorY2FzZSAxMTc6CiBZWV9SVUxFX1NFVFVQCiB7ICByZXR1cm4oTEVGVF9PUCk7IH0KIAlZWV9C
UkVBSwotY2FzZSAxMTY6CitjYXNlIDExODoKIFlZX1JVTEVfU0VUVVAKIHsgIHJldHVybihSSUdI
VF9PUCk7IH0KIAlZWV9CUkVBSwotY2FzZSAxMTc6CitjYXNlIDExOToKIFlZX1JVTEVfU0VUVVAK
IHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihTRU1JQ09MT04pOyB9CiAJ
WVlfQlJFQUsKLWNhc2UgMTE4OgorY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQCiB7IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oTEVGVF9CUkFDRSk7IH0KIAlZWV9CUkVBSwot
Y2FzZSAxMTk6CitjYXNlIDEyMToKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuKFJJR0hUX0JSQUNF
KTsgfQogCVlZX0JSRUFLCi1jYXNlIDEyMDoKK2Nhc2UgMTIyOgogWVlfUlVMRV9TRVRVUAogeyBp
ZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyBy
ZXR1cm4oQ09NTUEpOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTIxOgorY2FzZSAxMjM6CiBZWV9SVUxF
X1NFVFVQCiB7IHJldHVybihDT0xPTik7IH0KIAlZWV9CUkVBSwotY2FzZSAxMjI6CitjYXNlIDEy
NDoKIFlZX1JVTEVfU0VUVVAKIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVy
bihFUVVBTCk7IH0KIAlZWV9CUkVBSwotY2FzZSAxMjM6CitjYXNlIDEyNToKIFlZX1JVTEVfU0VU
VVAKIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVu
ID0gdHJ1ZTsgcmV0dXJuKExFRlRfUEFSRU4pOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTI0OgorY2Fz
ZSAxMjY6CiBZWV9SVUxFX1NFVFVQCiB7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7IHJl
dHVybihSSUdIVF9QQVJFTik7IH0KIAlZWV9CUkVBSwotY2FzZSAxMjU6CitjYXNlIDEyNzoKIFlZ
X1JVTEVfU0VUVVAKIHsgcmV0dXJuKExFRlRfQlJBQ0tFVCk7IH0KIAlZWV9CUkVBSwotY2FzZSAx
MjY6CitjYXNlIDEyODoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuKFJJR0hUX0JSQUNLRVQpOyB9
CiAJWVlfQlJFQUsKLWNhc2UgMTI3OgorY2FzZSAxMjk6CiBZWV9SVUxFX1NFVFVQCiB7IEJFR0lO
KEZJRUxEUyk7ICByZXR1cm4oRE9UKTsgfQogCVlZX0JSRUFLCi1jYXNlIDEyODoKK2Nhc2UgMTMw
OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4oQkFORyk7IH0KIAlZWV9CUkVBSwotY2FzZSAxMjk6
CitjYXNlIDEzMToKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuKERBU0gpOyB9CiAJWVlfQlJFQUsK
LWNhc2UgMTMwOgorY2FzZSAxMzI6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybihUSUxERSk7IH0K
IAlZWV9CUkVBSwotY2FzZSAxMzE6CitjYXNlIDEzMzoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJu
KFBMVVMpOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTMyOgorY2FzZSAxMzQ6CiBZWV9SVUxFX1NFVFVQ
CiB7IHJldHVybihTVEFSKTsgfQogCVlZX0JSRUFLCi1jYXNlIDEzMzoKK2Nhc2UgMTM1OgogWVlf
UlVMRV9TRVRVUAogeyByZXR1cm4oU0xBU0gpOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTM0OgorY2Fz
ZSAxMzY6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybihQRVJDRU5UKTsgfQogCVlZX0JSRUFLCi1j
YXNlIDEzNToKK2Nhc2UgMTM3OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4oTEVGVF9BTkdMRSk7
IH0KIAlZWV9CUkVBSwotY2FzZSAxMzY6CitjYXNlIDEzODoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0
dXJuKFJJR0hUX0FOR0xFKTsgfQogCVlZX0JSRUFLCi1jYXNlIDEzNzoKK2Nhc2UgMTM5OgogWVlf
UlVMRV9TRVRVUAogeyByZXR1cm4oVkVSVElDQUxfQkFSKTsgfQogCVlZX0JSRUFLCi1jYXNlIDEz
ODoKK2Nhc2UgMTQwOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4oQ0FSRVQpOyB9CiAJWVlfQlJF
QUsKLWNhc2UgMTM5OgorY2FzZSAxNDE6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybihBTVBFUlNB
TkQpOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTQwOgorY2FzZSAxNDI6CiBZWV9SVUxFX1NFVFVQCiB7
IHJldHVybihRVUVTVElPTik7IH0KIAlZWV9CUkVBSwotY2FzZSAxNDE6CitjYXNlIDE0MzoKIFlZ
X1JVTEVfU0VUVVAKIHsgCiAgICAgQkVHSU4oSU5JVElBTCk7CkBAIC0xNjc0LDEyICsxNzA0LDEy
IEBAIFlZX1JVTEVfU0VUVVAKICAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwogfQogCVlZX0JS
RUFLCi1jYXNlIDE0MjoKK2Nhc2UgMTQ0OgogWVlfUlVMRV9TRVRVUAoge30KIAlZWV9CUkVBSwot
Y2FzZSAxNDM6Ci0vKiBydWxlIDE0MyBjYW4gbWF0Y2ggZW9sICovCitjYXNlIDE0NToKKy8qIHJ1
bGUgMTQ1IGNhbiBtYXRjaCBlb2wgKi8KIFlZX1JVTEVfU0VUVVAKIHsgIH0KIAlZWV9CUkVBSwpA
QCAtMTY4OCwxMSArMTcxOCwxMSBAQCBjYXNlIFlZX1NUQVRFX0VPRihDT01NRU5UKToKIGNhc2Ug
WVlfU1RBVEVfRU9GKEZJRUxEUyk6CiB7IGNvbnRleHQtPkFmdGVyRU9GID0gdHJ1ZTsgeXl0ZXJt
aW5hdGUoKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE0NDoKK2Nhc2UgMTQ2OgogWVlfUlVMRV9TRVRV
UAogeyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0ZXh0LCAi
Iik7IHJldHVybiAwOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTQ1OgorY2FzZSAxNDc6CiBZWV9SVUxF
X1NFVFVQCiBFQ0hPOwogCVlZX0JSRUFLCkBAIC0xOTg4LDcgKzIwMTgsNyBAQCBzdGF0aWMgaW50
IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQogCQl3aGlsZSAoIHl5X2No
a1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSAp
CiAJCQl7CiAJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3Rh
dGVdOwotCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQxMSApCisJCQlpZiAoIHl5X2N1cnJl
bnRfc3RhdGUgPj0gNDI2ICkKIAkJCQl5eV9jID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9j
XTsKIAkJCX0KIAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9iYXNlW3l5X2N1cnJlbnRf
c3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CkBAIC0yMDE3LDExICsyMDQ3LDExIEBAIHN0
YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAJd2hpbGUg
KCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1cnJlbnRf
c3RhdGUgKQogCQl7CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVu
dF9zdGF0ZV07Ci0JCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0MTEgKQorCQlpZiAoIHl5X2N1
cnJlbnRfc3RhdGUgPj0gNDI2ICkKIAkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5
X2NdOwogCQl9CiAJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9iYXNlW3l5X2N1cnJlbnRf
c3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107Ci0JeXlfaXNfamFtID0gKHl5X2N1cnJlbnRf
c3RhdGUgPT0gNDEwKTsKKwl5eV9pc19qYW0gPSAoeXlfY3VycmVudF9zdGF0ZSA9PSA0MjUpOwog
CiAJcmV0dXJuIHl5X2lzX2phbSA/IDAgOiB5eV9jdXJyZW50X3N0YXRlOwogfQpAQCAtMjQzMSw4
ICsyNDYxLDggQEAgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fc3RyaW5nICh5eWNvbnN0IGNoYXIg
KiB5eXN0ciAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKIAogLyoqIFNldHVwIHRoZSBpbnB1dCBidWZm
ZXIgc3RhdGUgdG8gc2NhbiB0aGUgZ2l2ZW4gYnl0ZXMuIFRoZSBuZXh0IGNhbGwgdG8geXlsZXgo
KSB3aWxsCiAgKiBzY2FuIGZyb20gYSBAZSBjb3B5IG9mIEBhIGJ5dGVzLgotICogQHBhcmFtIGJ5
dGVzIHRoZSBieXRlIGJ1ZmZlciB0byBzY2FuCi0gKiBAcGFyYW0gbGVuIHRoZSBudW1iZXIgb2Yg
Ynl0ZXMgaW4gdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5IEBhIGJ5dGVzLgorICogQHBhcmFtIHl5
Ynl0ZXMgdGhlIGJ5dGUgYnVmZmVyIHRvIHNjYW4KKyAqIEBwYXJhbSBfeXlieXRlc19sZW4gdGhl
IG51bWJlciBvZiBieXRlcyBpbiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkgQGEgYnl0ZXMuCiAg
KiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4KICAqIEByZXR1cm4gdGhlIG5l
d2x5IGFsbG9jYXRlZCBidWZmZXIgc3RhdGUgb2JqZWN0LgogICovCkBAIC0zMDk3LDYgKzMxMjcs
NyBAQCB2b2lkIHVwZGF0ZUV4dGVuc2lvbkJlaGF2aW9yKGNvbnN0IGNoYXIqIGV4dE5hbWUsIGNv
bnN0IGNoYXIqIGJlaGF2aW9yKQogICAgICAgICAgICAgY2FzZSBFQmhFbmFibGU6CiAgICAgICAg
ICAgICBjYXNlIEVCaFdhcm46CiAgICAgICAgICAgICBjYXNlIEVCaERpc2FibGU6CisgICAgICAg
ICAgICBjYXNlIEVCaFVuZGVmaW5lZDoKICAgICAgICAgICAgICAgICBtc2cgPSBUU3RyaW5nKCJl
eHRlbnNpb24gJyIpICsgZXh0TmFtZSArICInIGlzIG5vdCBzdXBwb3J0ZWQiOwogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgbXNn
LmNfc3RyKCksIHl5bGluZW5vKTsgCiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAppbmRl
eCA0N2NhMmVlNjFkYjk2NWMwODg2M2QzMWNjMTg3OTkyYjllMTBjMDZlLi41MzUxNzdiZGJmNGZh
ZDU1YmM1MDg2MmFlN2FiODEzNTUwNjc0Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAKQEAgLTEsMjQgKzEsMjMgQEAK
LS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMuICAqLwogCi0vKiBTa2Vs
ZXRvbiBpbXBsZW1lbnRhdGlvbiBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCisv
KiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi40LjEuICAqLwogCi0gICBDb3B5
cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQs
IDIwMDUsIDIwMDYKKy8qIFNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZvciBCaXNvbidzIFlhY2Mt
bGlrZSBwYXJzZXJzIGluIEMKKyAgIAorICAgICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAx
OTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2CiAgICBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIAorICAgVGhpcyBw
cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt
b2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv
ZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgICAKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KKyAgIAogICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25n
IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0g
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLworICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAv
KiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRo
YXQgY29udGFpbnMKICAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24g
YW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCkBAIC0yOSw3ICsyOCw3IEBACiAgICBzcGVjaWFsIGV4
Y2VwdGlvbiwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcK
ICAgIEJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVy
YWwgUHVibGljCiAgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KLQor
ICAgCiAgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uIGluCiAgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICovCiAKQEAgLTQ3
LDcgKzQ2LDcgQEAKICNkZWZpbmUgWVlCSVNPTiAxCiAKIC8qIEJpc29uIHZlcnNpb24uICAqLwot
I2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuMyIKKyNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIy
LjQuMSIKIAogLyogU2tlbGV0b24gbmFtZS4gICovCiAjZGVmaW5lIFlZU0tFTEVUT05fTkFNRSAi
eWFjYy5jIgpAQCAtNTUsMTEgKzU0LDU1IEBACiAvKiBQdXJlIHBhcnNlcnMuICAqLwogI2RlZmlu
ZSBZWVBVUkUgMQogCisvKiBQdXNoIHBhcnNlcnMuICAqLworI2RlZmluZSBZWVBVU0ggMAorCisv
KiBQdWxsIHBhcnNlcnMuICAqLworI2RlZmluZSBZWVBVTEwgMQorCiAvKiBVc2luZyBsb2NhdGlv
bnMuICAqLwogI2RlZmluZSBZWUxTUF9ORUVERUQgMAogCiAKIAorLyogQ29weSB0aGUgZmlyc3Qg
cGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCisKKworLy8KKy8vIENvcHlyaWdodCAoYykg
MjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8g
Tk9UIEVESVQhCisKKyNpbmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL1BhcnNlSGVscGVyLmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgi
CisKKyNkZWZpbmUgWVlMRVhfUEFSQU0gY29udGV4dC0+c2Nhbm5lcgorCisKKworLyogRW5hYmxp
bmcgdHJhY2VzLiAgKi8KKyNpZm5kZWYgWVlERUJVRworIyBkZWZpbmUgWVlERUJVRyAwCisjZW5k
aWYKKworLyogRW5hYmxpbmcgdmVyYm9zZSBlcnJvciBtZXNzYWdlcy4gICovCisjaWZkZWYgWVlF
UlJPUl9WRVJCT1NFCisjIHVuZGVmIFlZRVJST1JfVkVSQk9TRQorIyBkZWZpbmUgWVlFUlJPUl9W
RVJCT1NFIDEKKyNlbHNlCisjIGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMAorI2VuZGlmCisKKy8q
IEVuYWJsaW5nIHRoZSB0b2tlbiB0YWJsZS4gICovCisjaWZuZGVmIFlZVE9LRU5fVEFCTEUKKyMg
ZGVmaW5lIFlZVE9LRU5fVEFCTEUgMAorI2VuZGlmCisKKwogLyogVG9rZW5zLiAgKi8KICNpZm5k
ZWYgWVlUT0tFTlRZUEUKICMgZGVmaW5lIFlZVE9LRU5UWVBFCkBAIC0xMDYsMTk1ICsxNDksNjkg
QEAKICAgICAgV0hJTEUgPSAyOTUsCiAgICAgIFNBTVBMRVIyRCA9IDI5NiwKICAgICAgU0FNUExF
UkNVQkUgPSAyOTcsCi0gICAgIElERU5USUZJRVIgPSAyOTgsCi0gICAgIFRZUEVfTkFNRSA9IDI5
OSwKLSAgICAgRkxPQVRDT05TVEFOVCA9IDMwMCwKLSAgICAgSU5UQ09OU1RBTlQgPSAzMDEsCi0g
ICAgIEJPT0xDT05TVEFOVCA9IDMwMiwKLSAgICAgRklFTERfU0VMRUNUSU9OID0gMzAzLAotICAg
ICBMRUZUX09QID0gMzA0LAotICAgICBSSUdIVF9PUCA9IDMwNSwKLSAgICAgSU5DX09QID0gMzA2
LAotICAgICBERUNfT1AgPSAzMDcsCi0gICAgIExFX09QID0gMzA4LAotICAgICBHRV9PUCA9IDMw
OSwKLSAgICAgRVFfT1AgPSAzMTAsCi0gICAgIE5FX09QID0gMzExLAotICAgICBBTkRfT1AgPSAz
MTIsCi0gICAgIE9SX09QID0gMzEzLAotICAgICBYT1JfT1AgPSAzMTQsCi0gICAgIE1VTF9BU1NJ
R04gPSAzMTUsCi0gICAgIERJVl9BU1NJR04gPSAzMTYsCi0gICAgIEFERF9BU1NJR04gPSAzMTcs
Ci0gICAgIE1PRF9BU1NJR04gPSAzMTgsCi0gICAgIExFRlRfQVNTSUdOID0gMzE5LAotICAgICBS
SUdIVF9BU1NJR04gPSAzMjAsCi0gICAgIEFORF9BU1NJR04gPSAzMjEsCi0gICAgIFhPUl9BU1NJ
R04gPSAzMjIsCi0gICAgIE9SX0FTU0lHTiA9IDMyMywKLSAgICAgU1VCX0FTU0lHTiA9IDMyNCwK
LSAgICAgTEVGVF9QQVJFTiA9IDMyNSwKLSAgICAgUklHSFRfUEFSRU4gPSAzMjYsCi0gICAgIExF
RlRfQlJBQ0tFVCA9IDMyNywKLSAgICAgUklHSFRfQlJBQ0tFVCA9IDMyOCwKLSAgICAgTEVGVF9C
UkFDRSA9IDMyOSwKLSAgICAgUklHSFRfQlJBQ0UgPSAzMzAsCi0gICAgIERPVCA9IDMzMSwKLSAg
ICAgQ09NTUEgPSAzMzIsCi0gICAgIENPTE9OID0gMzMzLAotICAgICBFUVVBTCA9IDMzNCwKLSAg
ICAgU0VNSUNPTE9OID0gMzM1LAotICAgICBCQU5HID0gMzM2LAotICAgICBEQVNIID0gMzM3LAot
ICAgICBUSUxERSA9IDMzOCwKLSAgICAgUExVUyA9IDMzOSwKLSAgICAgU1RBUiA9IDM0MCwKLSAg
ICAgU0xBU0ggPSAzNDEsCi0gICAgIFBFUkNFTlQgPSAzNDIsCi0gICAgIExFRlRfQU5HTEUgPSAz
NDMsCi0gICAgIFJJR0hUX0FOR0xFID0gMzQ0LAotICAgICBWRVJUSUNBTF9CQVIgPSAzNDUsCi0g
ICAgIENBUkVUID0gMzQ2LAotICAgICBBTVBFUlNBTkQgPSAzNDcsCi0gICAgIFFVRVNUSU9OID0g
MzQ4CisgICAgIFNBTVBMRVJfRVhURVJOQUxfT0VTID0gMjk4LAorICAgICBTQU1QTEVSMkRSRUNU
ID0gMjk5LAorICAgICBJREVOVElGSUVSID0gMzAwLAorICAgICBUWVBFX05BTUUgPSAzMDEsCisg
ICAgIEZMT0FUQ09OU1RBTlQgPSAzMDIsCisgICAgIElOVENPTlNUQU5UID0gMzAzLAorICAgICBC
T09MQ09OU1RBTlQgPSAzMDQsCisgICAgIEZJRUxEX1NFTEVDVElPTiA9IDMwNSwKKyAgICAgTEVG
VF9PUCA9IDMwNiwKKyAgICAgUklHSFRfT1AgPSAzMDcsCisgICAgIElOQ19PUCA9IDMwOCwKKyAg
ICAgREVDX09QID0gMzA5LAorICAgICBMRV9PUCA9IDMxMCwKKyAgICAgR0VfT1AgPSAzMTEsCisg
ICAgIEVRX09QID0gMzEyLAorICAgICBORV9PUCA9IDMxMywKKyAgICAgQU5EX09QID0gMzE0LAor
ICAgICBPUl9PUCA9IDMxNSwKKyAgICAgWE9SX09QID0gMzE2LAorICAgICBNVUxfQVNTSUdOID0g
MzE3LAorICAgICBESVZfQVNTSUdOID0gMzE4LAorICAgICBBRERfQVNTSUdOID0gMzE5LAorICAg
ICBNT0RfQVNTSUdOID0gMzIwLAorICAgICBMRUZUX0FTU0lHTiA9IDMyMSwKKyAgICAgUklHSFRf
QVNTSUdOID0gMzIyLAorICAgICBBTkRfQVNTSUdOID0gMzIzLAorICAgICBYT1JfQVNTSUdOID0g
MzI0LAorICAgICBPUl9BU1NJR04gPSAzMjUsCisgICAgIFNVQl9BU1NJR04gPSAzMjYsCisgICAg
IExFRlRfUEFSRU4gPSAzMjcsCisgICAgIFJJR0hUX1BBUkVOID0gMzI4LAorICAgICBMRUZUX0JS
QUNLRVQgPSAzMjksCisgICAgIFJJR0hUX0JSQUNLRVQgPSAzMzAsCisgICAgIExFRlRfQlJBQ0Ug
PSAzMzEsCisgICAgIFJJR0hUX0JSQUNFID0gMzMyLAorICAgICBET1QgPSAzMzMsCisgICAgIENP
TU1BID0gMzM0LAorICAgICBDT0xPTiA9IDMzNSwKKyAgICAgRVFVQUwgPSAzMzYsCisgICAgIFNF
TUlDT0xPTiA9IDMzNywKKyAgICAgQkFORyA9IDMzOCwKKyAgICAgREFTSCA9IDMzOSwKKyAgICAg
VElMREUgPSAzNDAsCisgICAgIFBMVVMgPSAzNDEsCisgICAgIFNUQVIgPSAzNDIsCisgICAgIFNM
QVNIID0gMzQzLAorICAgICBQRVJDRU5UID0gMzQ0LAorICAgICBMRUZUX0FOR0xFID0gMzQ1LAor
ICAgICBSSUdIVF9BTkdMRSA9IDM0NiwKKyAgICAgVkVSVElDQUxfQkFSID0gMzQ3LAorICAgICBD
QVJFVCA9IDM0OCwKKyAgICAgQU1QRVJTQU5EID0gMzQ5LAorICAgICBRVUVTVElPTiA9IDM1MAog
ICAgfTsKICNlbmRpZgotLyogVG9rZW5zLiAgKi8KLSNkZWZpbmUgSU5WQVJJQU5UIDI1OAotI2Rl
ZmluZSBISUdIX1BSRUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiAyNjAKLSNk
ZWZpbmUgTE9XX1BSRUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJFQ0lTSU9OIDI2MgotI2RlZmluZSBB
VFRSSUJVVEUgMjYzCi0jZGVmaW5lIENPTlNUX1FVQUwgMjY0Ci0jZGVmaW5lIEJPT0xfVFlQRSAy
NjUKLSNkZWZpbmUgRkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUgSU5UX1RZUEUgMjY3Ci0jZGVmaW5l
IEJSRUFLIDI2OAotI2RlZmluZSBDT05USU5VRSAyNjkKLSNkZWZpbmUgRE8gMjcwCi0jZGVmaW5l
IEVMU0UgMjcxCi0jZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUgSUYgMjczCi0jZGVmaW5lIERJU0NB
UkQgMjc0Ci0jZGVmaW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUgQlZFQzIgMjc2Ci0jZGVmaW5lIEJW
RUMzIDI3NwotI2RlZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUgSVZFQzIgMjc5Ci0jZGVmaW5lIElW
RUMzIDI4MAotI2RlZmluZSBJVkVDNCAyODEKLSNkZWZpbmUgVkVDMiAyODIKLSNkZWZpbmUgVkVD
MyAyODMKLSNkZWZpbmUgVkVDNCAyODQKLSNkZWZpbmUgTUFUUklYMiAyODUKLSNkZWZpbmUgTUFU
UklYMyAyODYKLSNkZWZpbmUgTUFUUklYNCAyODcKLSNkZWZpbmUgSU5fUVVBTCAyODgKLSNkZWZp
bmUgT1VUX1FVQUwgMjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwgMjkwCi0jZGVmaW5lIFVOSUZPUk0g
MjkxCi0jZGVmaW5lIFZBUllJTkcgMjkyCi0jZGVmaW5lIFNUUlVDVCAyOTMKLSNkZWZpbmUgVk9J
RF9UWVBFIDI5NAotI2RlZmluZSBXSElMRSAyOTUKLSNkZWZpbmUgU0FNUExFUjJEIDI5NgotI2Rl
ZmluZSBTQU1QTEVSQ1VCRSAyOTcKLSNkZWZpbmUgSURFTlRJRklFUiAyOTgKLSNkZWZpbmUgVFlQ
RV9OQU1FIDI5OQotI2RlZmluZSBGTE9BVENPTlNUQU5UIDMwMAotI2RlZmluZSBJTlRDT05TVEFO
VCAzMDEKLSNkZWZpbmUgQk9PTENPTlNUQU5UIDMwMgotI2RlZmluZSBGSUVMRF9TRUxFQ1RJT04g
MzAzCi0jZGVmaW5lIExFRlRfT1AgMzA0Ci0jZGVmaW5lIFJJR0hUX09QIDMwNQotI2RlZmluZSBJ
TkNfT1AgMzA2Ci0jZGVmaW5lIERFQ19PUCAzMDcKLSNkZWZpbmUgTEVfT1AgMzA4Ci0jZGVmaW5l
IEdFX09QIDMwOQotI2RlZmluZSBFUV9PUCAzMTAKLSNkZWZpbmUgTkVfT1AgMzExCi0jZGVmaW5l
IEFORF9PUCAzMTIKLSNkZWZpbmUgT1JfT1AgMzEzCi0jZGVmaW5lIFhPUl9PUCAzMTQKLSNkZWZp
bmUgTVVMX0FTU0lHTiAzMTUKLSNkZWZpbmUgRElWX0FTU0lHTiAzMTYKLSNkZWZpbmUgQUREX0FT
U0lHTiAzMTcKLSNkZWZpbmUgTU9EX0FTU0lHTiAzMTgKLSNkZWZpbmUgTEVGVF9BU1NJR04gMzE5
Ci0jZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjAKLSNkZWZpbmUgQU5EX0FTU0lHTiAzMjEKLSNkZWZp
bmUgWE9SX0FTU0lHTiAzMjIKLSNkZWZpbmUgT1JfQVNTSUdOIDMyMwotI2RlZmluZSBTVUJfQVNT
SUdOIDMyNAotI2RlZmluZSBMRUZUX1BBUkVOIDMyNQotI2RlZmluZSBSSUdIVF9QQVJFTiAzMjYK
LSNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyNwotI2RlZmluZSBSSUdIVF9CUkFDS0VUIDMyOAotI2Rl
ZmluZSBMRUZUX0JSQUNFIDMyOQotI2RlZmluZSBSSUdIVF9CUkFDRSAzMzAKLSNkZWZpbmUgRE9U
IDMzMQotI2RlZmluZSBDT01NQSAzMzIKLSNkZWZpbmUgQ09MT04gMzMzCi0jZGVmaW5lIEVRVUFM
IDMzNAotI2RlZmluZSBTRU1JQ09MT04gMzM1Ci0jZGVmaW5lIEJBTkcgMzM2Ci0jZGVmaW5lIERB
U0ggMzM3Ci0jZGVmaW5lIFRJTERFIDMzOAotI2RlZmluZSBQTFVTIDMzOQotI2RlZmluZSBTVEFS
IDM0MAotI2RlZmluZSBTTEFTSCAzNDEKLSNkZWZpbmUgUEVSQ0VOVCAzNDIKLSNkZWZpbmUgTEVG
VF9BTkdMRSAzNDMKLSNkZWZpbmUgUklHSFRfQU5HTEUgMzQ0Ci0jZGVmaW5lIFZFUlRJQ0FMX0JB
UiAzNDUKLSNkZWZpbmUgQ0FSRVQgMzQ2Ci0jZGVmaW5lIEFNUEVSU0FORCAzNDcKLSNkZWZpbmUg
UVVFU1RJT04gMzQ4Ci0KLQotCi0KLS8qIENvcHkgdGhlIGZpcnN0IHBhcnQgb2YgdXNlciBkZWNs
YXJhdGlvbnMuICAqLwotCi0KLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFRoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZV9nbHNsYW5nX3BhcnNlci5zaC4gRE8gTk9UIEVESVQh
Ci0KLSNpbmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgotI2luY2x1ZGUgImNvbXBpbGVy
L1BhcnNlSGVscGVyLmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNkZWZp
bmUgWVlMRVhfUEFSQU0gY29udGV4dC0+c2Nhbm5lcgotCi0KLS8qIEVuYWJsaW5nIHRyYWNlcy4g
ICovCi0jaWZuZGVmIFlZREVCVUcKLSMgZGVmaW5lIFlZREVCVUcgMAotI2VuZGlmCiAKLS8qIEVu
YWJsaW5nIHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMuICAqLwotI2lmZGVmIFlZRVJST1JfVkVSQk9T
RQotIyB1bmRlZiBZWUVSUk9SX1ZFUkJPU0UKLSMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAxCi0j
ZWxzZQotIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDAKLSNlbmRpZgogCi0vKiBFbmFibGluZyB0
aGUgdG9rZW4gdGFibGUuICAqLwotI2lmbmRlZiBZWVRPS0VOX1RBQkxFCi0jIGRlZmluZSBZWVRP
S0VOX1RBQkxFIDAKLSNlbmRpZgogCiAjaWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVk
IFlZU1RZUEVfSVNfREVDTEFSRUQKIHR5cGVkZWYgdW5pb24gWVlTVFlQRQotCiB7CisKKwogICAg
IHN0cnVjdCB7CiAgICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5pb24gewpAQCAt
MzI0LDE3ICsyNDEsMTYgQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBUVHlw
ZUxpc3QqIHR5cGVMaXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwotfQotLyogTGluZSAx
OTMgb2YgeWFjYy5jLiAgKi8KIAotCVlZU1RZUEU7CisKKworfSBZWVNUWVBFOworIyBkZWZpbmUg
WVlTVFlQRV9JU19UUklWSUFMIDEKICMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVz
Y2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQg
MQotIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICNlbmRpZgogCiAKLQogLyogQ29weSB0
aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwogCiAKQEAgLTM2NCw4ICsy
ODAsNiBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IGNoYXIqIHJlYXNvbik7CiB9CiAKIAotLyogTGluZSAyMTYgb2YgeWFjYy5jLiAgKi8KLQogCiAj
aWZkZWYgc2hvcnQKICMgdW5kZWYgc2hvcnQKQEAgLTQxNSw3ICszMjksNyBAQCB0eXBlZGVmIHNo
b3J0IGludCB5eXR5cGVfaW50MTY7CiAjZGVmaW5lIFlZU0laRV9NQVhJTVVNICgoWVlTSVpFX1Qp
IC0xKQogCiAjaWZuZGVmIFlZXwotIyBpZiBkZWZpbmVkIFlZRU5BQkxFX05MUyAmJiBZWUVOQUJM
RV9OTFMKKyMgaWYgWVlFTkFCTEVfTkxTCiAjICBpZiBFTkFCTEVfTkxTCiAjICAgaW5jbHVkZSA8
bGliaW50bC5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCiAjICAgZGVmaW5l
IFlZXyhtc2dpZCkgZGdldHRleHQgKCJiaXNvbi1ydW50aW1lIiwgbXNnaWQpCkBAIC00NDAsMTQg
KzM1NCwxNCBAQCB0eXBlZGVmIHNob3J0IGludCB5eXR5cGVfaW50MTY7CiAjaWYgKGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2Nw
bHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIGludAotWVlJRCAoaW50IGkpCitZ
WUlEIChpbnQgeXlpKQogI2Vsc2UKIHN0YXRpYyBpbnQKLVlZSUQgKGkpCi0gICAgaW50IGk7CitZ
WUlEICh5eWkpCisgICAgaW50IHl5aTsKICNlbmRpZgogewotICByZXR1cm4gaTsKKyAgcmV0dXJu
IHl5aTsKIH0KICNlbmRpZgogCkBAIC01MjgsOSArNDQyLDkgQEAgdm9pZCBmcmVlICh2b2lkICop
OyAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCiAvKiBBIHR5cGUgdGhhdCBpcyBw
cm9wZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxsb2MK
IHsKLSAgeXl0eXBlX2ludDE2IHl5c3M7Ci0gIFlZU1RZUEUgeXl2czsKLSAgfTsKKyAgeXl0eXBl
X2ludDE2IHl5c3NfYWxsb2M7CisgIFlZU1RZUEUgeXl2c19hbGxvYzsKK307CiAKIC8qIFRoZSBz
aXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUg
bmV4dC4gICovCiAjIGRlZmluZSBZWVNUQUNLX0dBUF9NQVhJTVVNIChzaXplb2YgKHVuaW9uIHl5
YWxsb2MpIC0gMSkKQEAgLTU2NCwxMiArNDc4LDEyIEBAIHVuaW9uIHl5YWxsb2MKICAgIGVsZW1l
bnRzIGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhl
CiAgICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0aW9u
IGZvciB0aGUgbmV4dAogICAgc3RhY2suICAqLwotIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShT
dGFjaykJCQkJCVwKKyMgZGVmaW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2tfYWxsb2MsIFN0YWNr
KQkJCQlcCiAgICAgZG8JCQkJCQkJCQlcCiAgICAgICB7CQkJCQkJCQkJXAogCVlZU0laRV9UIHl5
bmV3Ynl0ZXM7CQkJCQkJXAotCVlZQ09QWSAoJnl5cHRyLT5TdGFjaywgU3RhY2ssIHl5c2l6ZSk7
CQkJCVwKLQlTdGFjayA9ICZ5eXB0ci0+U3RhY2s7CQkJCQkJXAorCVlZQ09QWSAoJnl5cHRyLT5T
dGFja19hbGxvYywgU3RhY2ssIHl5c2l6ZSk7CQkJXAorCVN0YWNrID0gJnl5cHRyLT5TdGFja19h
bGxvYzsJCQkJCVwKIAl5eW5ld2J5dGVzID0geXlzdGFja3NpemUgKiBzaXplb2YgKCpTdGFjaykg
KyBZWVNUQUNLX0dBUF9NQVhJTVVNOyBcCiAJeXlwdHIgKz0geXluZXdieXRlcyAvIHNpemVvZiAo
Knl5cHRyKTsJCQkJXAogICAgICAgfQkJCQkJCQkJCVwKQEAgLTU3OCwyMiArNDkyLDIyIEBAIHVu
aW9uIHl5YWxsb2MKICNlbmRpZgogCiAvKiBZWUZJTkFMIC0tIFN0YXRlIG51bWJlciBvZiB0aGUg
dGVybWluYXRpb24gc3RhdGUuICAqLwotI2RlZmluZSBZWUZJTkFMICA2OQorI2RlZmluZSBZWUZJ
TkFMICA3MQogLyogWVlMQVNUIC0tIExhc3QgaW5kZXggaW4gWVlUQUJMRS4gICovCi0jZGVmaW5l
IFlZTEFTVCAgIDEzNjIKKyNkZWZpbmUgWVlMQVNUICAgMTM3MAogCiAvKiBZWU5UT0tFTlMgLS0g
TnVtYmVyIG9mIHRlcm1pbmFscy4gICovCi0jZGVmaW5lIFlZTlRPS0VOUyAgOTQKKyNkZWZpbmUg
WVlOVE9LRU5TICA5NgogLyogWVlOTlRTIC0tIE51bWJlciBvZiBub250ZXJtaW5hbHMuICAqLwot
I2RlZmluZSBZWU5OVFMgIDc4CisjZGVmaW5lIFlZTk5UUyAgODAKIC8qIFlZTlJVTEVTIC0tIE51
bWJlciBvZiBydWxlcy4gICovCi0jZGVmaW5lIFlZTlJVTEVTICAxOTMKKyNkZWZpbmUgWVlOUlVM
RVMgIDE5NwogLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHN0YXRlcy4gICovCi0jZGVmaW5lIFlZ
TlNUQVRFUyAgMjk2CisjZGVmaW5lIFlZTlNUQVRFUyAgMzAwCiAKIC8qIFlZVFJBTlNMQVRFKFlZ
TEVYKSAtLSBCaXNvbiBzeW1ib2wgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gWVlMRVguICAqLwog
I2RlZmluZSBZWVVOREVGVE9LICAyCi0jZGVmaW5lIFlZTUFYVVRPSyAgIDM0OAorI2RlZmluZSBZ
WU1BWFVUT0sgICAzNTAKIAogI2RlZmluZSBZWVRSQU5TTEFURShZWVgpCQkJCQkJXAogICAoKHVu
c2lnbmVkIGludCkgKFlZWCkgPD0gWVlNQVhVVE9LID8geXl0cmFuc2xhdGVbWVlYXSA6IFlZVU5E
RUZUT0spCkBAIC02MzUsNyArNTQ5LDggQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRy
YW5zbGF0ZVtdID0KICAgICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAs
ICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LAogICAgICAgNjUsICAgIDY2LCAgICA2NywgICAg
NjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsCiAgICAgICA3NSwg
ICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIDgzLCAg
ICA4NCwKLSAgICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkx
LCAgICA5MiwgICAgOTMKKyAgICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4OSwgICAg
OTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0LAorICAgICAgOTUKIH07CiAKICNpZiBZWURF
QlVHCkBAIC02NTYsNzQgKzU3MSw3NSBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXBy
aHNbXSA9CiAgICAgIDI5OCwgICAzMDMsICAgMzA2LCAgIDMwOCwgICAzMTEsICAgMzEzLCAgIDMx
NSwgICAzMTcsICAgMzIwLCAgIDMyMiwKICAgICAgMzI0LCAgIDMyNywgICAzMjksICAgMzMxLCAg
IDMzMywgICAzMzUsICAgMzQwLCAgIDM0MiwgICAzNDQsICAgMzQ2LAogICAgICAzNDgsICAgMzUw
LCAgIDM1MiwgICAzNTQsICAgMzU2LCAgIDM1OCwgICAzNjAsICAgMzYyLCAgIDM2NCwgICAzNjYs
Ci0gICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAgMzc4LCAgIDM4MCwgICAz
ODYsICAgMzkxLCAgIDM5MywKLSAgICAgMzk2LCAgIDQwMCwgICA0MDIsICAgNDA2LCAgIDQwOCwg
ICA0MTMsICAgNDE1LCAgIDQxNywgICA0MTksICAgNDIxLAotICAgICA0MjMsICAgNDI1LCAgIDQy
NywgICA0MjksICAgNDMxLCAgIDQzNCwgICA0MzUsICAgNDM2LCAgIDQ0MiwgICA0NDQsCi0gICAg
IDQ0NiwgICA0NDksICAgNDUzLCAgIDQ1NSwgICA0NTgsICAgNDYwLCAgIDQ2MywgICA0NjksICAg
NDczLCAgIDQ3NSwKLSAgICAgNDc3LCAgIDQ4MiwgICA0ODMsICAgNDkwLCAgIDQ5MSwgICA1MDAs
ICAgNTAxLCAgIDUwOSwgICA1MTEsICAgNTEzLAotICAgICA1MTUsICAgNTE2LCAgIDUxOSwgICA1
MjMsICAgNTI2LCAgIDUyOSwgICA1MzIsICAgNTM2LCAgIDUzOSwgICA1NDEsCi0gICAgIDU0NCwg
ICA1NDYsICAgNTQ4LCAgIDU0OQorICAgICAzNjgsICAgMzcwLCAgIDM3MiwgICAzNzQsICAgMzc2
LCAgIDM3OCwgICAzODAsICAgMzgyLCAgIDM4NCwgICAzODUsCisgICAgIDM5MiwgICAzOTMsICAg
Mzk5LCAgIDQwMSwgICA0MDQsICAgNDA4LCAgIDQxMCwgICA0MTQsICAgNDE2LCAgIDQyMSwKKyAg
ICAgNDIzLCAgIDQyNSwgICA0MjcsICAgNDI5LCAgIDQzMSwgICA0MzMsICAgNDM1LCAgIDQzNywg
ICA0MzksICAgNDQyLAorICAgICA0NDMsICAgNDQ0LCAgIDQ1MCwgICA0NTIsICAgNDU0LCAgIDQ1
NywgICA0NjEsICAgNDYzLCAgIDQ2NiwgICA0NjgsCisgICAgIDQ3MSwgICA0NzcsICAgNDgxLCAg
IDQ4MywgICA0ODUsICAgNDkwLCAgIDQ5MSwgICA0OTgsICAgNDk5LCAgIDUwOCwKKyAgICAgNTA5
LCAgIDUxNywgICA1MTksICAgNTIxLCAgIDUyMywgICA1MjQsICAgNTI3LCAgIDUzMSwgICA1MzQs
ICAgNTM3LAorICAgICA1NDAsICAgNTQ0LCAgIDU0NywgICA1NDksICAgNTUyLCAgIDU1NCwgICA1
NTYsICAgNTU3CiB9OwogCiAvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2YgdGhl
IHJ1bGVzJyBSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0KIHsK
LSAgICAgMTY4LCAgICAgMCwgICAgLTEsICAgIDQzLCAgICAtMSwgICAgOTUsICAgIC0xLCAgICA0
NiwgICAgLTEsICAgIDQ1LAotICAgICAgLTEsICAgIDQ3LCAgICAtMSwgICAgNzAsICAgMTIyLCAg
ICA3MSwgICAgLTEsICAgIDk2LCAgICAtMSwgICAgOTcsCi0gICAgICA3MiwgICAgOTgsICAgIDcz
LCAgICAtMSwgICAgOTksICAgIC0xLCAgICA5NywgICAgNzYsICAgIDQ4LCAgICAtMSwKLSAgICAg
IDk3LCAgICA1MSwgICAgLTEsICAgIDk3LCAgICA1MiwgICAgLTEsICAgMTIyLCAgICAtMSwgICAx
MDAsICAgIC0xLAotICAgICAxMDEsICAgIC0xLCAgICA5NywgICAgNzYsICAgMTAxLCAgICAtMSwg
ICAxMDMsICAgIDcxLCAgICAtMSwgICAxMDIsCi0gICAgICA3MSwgICAgLTEsICAgMTA0LCAgICAz
OSwgICAgLTEsICAgMTA0LCAgICAtMSwgICAxMDQsICAgMTIwLCAgICAtMSwKLSAgICAgMTAzLCAg
ICA3NywgICAxMjAsICAgIC0xLCAgIDEwNSwgICAgNzAsICAgIC0xLCAgIDE0MCwgICAgLTEsICAg
IDQzLAotICAgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgOTcsICAgIC0xLCAgICA1MSwgICAxMDYs
ICAgIC0xLCAgICA1MiwgICAxMDYsCi0gICAgICAtMSwgICAxMDcsICAgMTA2LCAgICAtMSwgICAg
ODQsICAgIC0xLCAgICA4MiwgICAgLTEsICAgIDgxLCAgICAtMSwKLSAgICAgMTA2LCAgICAtMSwg
ICAxMDgsICAgIDg1LCAgIDEwNiwgICAgLTEsICAgMTA4LCAgICA4NiwgICAxMDYsICAgIC0xLAot
ICAgICAxMDgsICAgIC0xLCAgIDEwOSwgICAgODQsICAgMTA4LCAgICAtMSwgICAxMDksICAgIDgy
LCAgIDEwOCwgICAgLTEsCi0gICAgIDEwOSwgICAgLTEsICAgMTEwLCAgICAtMSwgICAxMTEsICAg
IDg4LCAgIDExMCwgICAgLTEsICAgMTExLCAgICA4OSwKLSAgICAgMTEwLCAgICAtMSwgICAxMTEs
ICAgIDUzLCAgIDExMCwgICAgLTEsICAgMTExLCAgICA1NCwgICAxMTAsICAgIC0xLAotICAgICAx
MTEsICAgIC0xLCAgIDExMiwgICAgNTUsICAgMTExLCAgICAtMSwgICAxMTIsICAgIDU2LCAgIDEx
MSwgICAgLTEsCi0gICAgIDExMiwgICAgLTEsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIC0xLCAg
IDExNSwgICAgLTEsICAgMTE2LCAgICA1NywKLSAgICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0x
LCAgIDExNywgICAgNTksICAgMTE2LCAgICAtMSwgICAxMTcsICAgIC0xLAotICAgICAxMTgsICAg
IDU4LCAgIDExNywgICAgLTEsICAgMTE4LCAgICAtMSwgICAxMTgsICAgIDkzLCAgIDEyMiwgICAg
NzgsCi0gICAgIDEyMCwgICAgLTEsICAgMTE5LCAgICAtMSwgICAxMDYsICAgMTIxLCAgIDEyMCwg
ICAgLTEsICAgIDc5LCAgICAtMSwKLSAgICAgIDYwLCAgICAtMSwgICAgNjEsICAgIC0xLCAgICA2
MiwgICAgLTEsICAgIDY5LCAgICAtMSwgICAxMjAsICAgIC0xLAotICAgICAxMjIsICAgIDc3LCAg
IDEyMCwgICAgLTEsICAgMTE5LCAgICAtMSwgICAxMjUsICAgIDgwLCAgICAtMSwgICAxMzMsCi0g
ICAgICA4MCwgICAgLTEsICAgICA3LCAgIDEzOCwgICAxMzksICAgIDgwLCAgICAtMSwgICAxMjYs
ICAgIDcxLCAgICAtMSwKLSAgICAgMTI4LCAgICAtMSwgICAxMjcsICAgIC0xLCAgIDEyOCwgICAx
MzAsICAgIC0xLCAgIDEyNywgICAgNzcsICAgMTMwLAotICAgICAgLTEsICAgMTM1LCAgICA0Mywg
ICAgNzAsICAgIC0xLCAgIDEzNywgICAgNDMsICAgIC0xLCAgIDEzNywgICAgNDMsCi0gICAgICA3
MiwgICAxMjMsICAgIDczLCAgICAtMSwgICAxMzYsICAgMTMxLCAgIDEyOSwgICAgLTEsICAgMTMx
LCAgIDEyOSwKLSAgICAgIC0xLCAgIDEzNiwgICAxMzEsICAgMTMyLCAgICAtMSwgICAxMzEsICAg
MTMyLCAgICAtMSwgICAgLTEsICAgIDMzLAotICAgICAgLTEsICAgIDM0LCAgICAtMSwgICAgMzUs
ICAgIC0xLCAgIDEzNywgICAgLTEsICAgMTM0LCAgICAtMSwgICAxMzMsCi0gICAgICA3NywgICAg
NDMsICAgIC0xLCAgIDEzMywgICAgNzcsICAgIDQzLCAgICA3MiwgICAgNzMsICAgIC0xLCAgIDEz
MywKLSAgICAgIDc3LCAgICA0MywgICAgNzIsICAgMTIzLCAgICA3MywgICAgLTEsICAgMTMzLCAg
ICA3NywgICAgNDMsICAgIDc5LAotICAgICAxNDYsICAgIC0xLCAgIDEzNSwgICAgLTEsICAgMTM1
LCAgICA0MywgICAgLTEsICAgMTM1LCAgICA0MywgICAgNzIsCi0gICAgICA3MywgICAgLTEsICAg
MTM1LCAgICA0MywgICAgNzIsICAgMTIzLCAgICA3MywgICAgLTEsICAgMTM1LCAgICA0MywKLSAg
ICAgIDc5LCAgIDE0NiwgICAgLTEsICAgICAzLCAgICA0MywgICAgLTEsICAgMTM3LCAgICAtMSwg
ICAxMzYsICAgMTM3LAorICAgICAxNzIsICAgICAwLCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA5
NywgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgNDcsCisgICAgICAtMSwgICAgNDksICAgIC0xLCAg
ICA3MiwgICAxMjQsICAgIDczLCAgICAtMSwgICAgOTgsICAgIC0xLCAgICA5OSwKKyAgICAgIDc0
LCAgIDEwMCwgICAgNzUsICAgIC0xLCAgIDEwMSwgICAgLTEsICAgIDk5LCAgICA3OCwgICAgNTAs
ICAgIC0xLAorICAgICAgOTksICAgIDUzLCAgICAtMSwgICAgOTksICAgIDU0LCAgICAtMSwgICAx
MjQsICAgIC0xLCAgIDEwMiwgICAgLTEsCisgICAgIDEwMywgICAgLTEsICAgIDk5LCAgICA3OCwg
ICAxMDMsICAgIC0xLCAgIDEwNSwgICAgNzMsICAgIC0xLCAgIDEwNCwKKyAgICAgIDczLCAgICAt
MSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsICAgIC0xLCAgIDEwNiwgICAxMjIsICAgIC0x
LAorICAgICAxMDUsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MiwgICAgLTEsICAg
MTQyLCAgICAtMSwgICAgNDUsCisgICAgICAtMSwgICAgNTAsICAgIC0xLCAgICA5OSwgICAgLTEs
ICAgIDUzLCAgIDEwOCwgICAgLTEsICAgIDU0LCAgIDEwOCwKKyAgICAgIC0xLCAgIDEwOSwgICAx
MDgsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIDg0LCAgICAtMSwgICAgODMsICAgIC0xLAorICAg
ICAxMDgsICAgIC0xLCAgIDExMCwgICAgODcsICAgMTA4LCAgICAtMSwgICAxMTAsICAgIDg4LCAg
IDEwOCwgICAgLTEsCisgICAgIDExMCwgICAgLTEsICAgMTExLCAgICA4NiwgICAxMTAsICAgIC0x
LCAgIDExMSwgICAgODQsICAgMTEwLCAgICAtMSwKKyAgICAgMTExLCAgICAtMSwgICAxMTIsICAg
IC0xLCAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDkxLAorICAgICAxMTIs
ICAgIC0xLCAgIDExMywgICAgNTUsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU2LCAgIDExMiwg
ICAgLTEsCisgICAgIDExMywgICAgLTEsICAgMTE0LCAgICA1NywgICAxMTMsICAgIC0xLCAgIDEx
NCwgICAgNTgsICAgMTEzLCAgICAtMSwKKyAgICAgMTE0LCAgICAtMSwgICAxMTUsICAgIC0xLCAg
IDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwgICAxMTgsICAgIDU5LAorICAgICAxMTcsICAgIC0x
LCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MSwgICAxMTgsICAgIC0xLCAgIDExOSwgICAgLTEs
CisgICAgIDEyMCwgICAgNjAsICAgMTE5LCAgICAtMSwgICAxMjAsICAgIC0xLCAgIDEyMCwgICAg
OTUsICAgMTI0LCAgICA4MCwKKyAgICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEwOCwg
ICAxMjMsICAgMTIyLCAgICAtMSwgICAgODEsICAgIC0xLAorICAgICAgNjIsICAgIC0xLCAgICA2
MywgICAgLTEsICAgIDY0LCAgICAtMSwgICAgNzEsICAgIC0xLCAgIDEyMiwgICAgLTEsCisgICAg
IDEyNCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEyNywgICAgODIsICAg
IC0xLCAgIDEzNSwKKyAgICAgIDgyLCAgICAtMSwgICAgIDcsICAgMTQwLCAgIDE0MSwgICAgODIs
ICAgIC0xLCAgIDEyOCwgICAgNzMsICAgIC0xLAorICAgICAxMzAsICAgIC0xLCAgIDEyOSwgICAg
LTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LCAgICA3OSwgICAxMzIsCisgICAgICAtMSwg
ICAxMzcsICAgIDQ1LCAgICA3MiwgICAgLTEsICAgMTM5LCAgICA0NSwgICAgLTEsICAgMTM5LCAg
ICA0NSwKKyAgICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTMx
LCAgICAtMSwgICAxMzMsICAgMTMxLAorICAgICAgLTEsICAgMTM4LCAgIDEzMywgICAxMzQsICAg
IC0xLCAgIDEzMywgICAxMzQsICAgIC0xLCAgICAtMSwgICAgMzMsCisgICAgICAtMSwgICAgMzQs
ICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzYsICAgIC0xLCAgIDEzNSwK
KyAgICAgIDc5LCAgICA0NSwgICAgLTEsICAgMTM1LCAgICA3OSwgICAgNDUsICAgIDc0LCAgICA3
NSwgICAgLTEsICAgMTM1LAorICAgICAgNzksICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LCAg
ICAtMSwgICAxMzUsICAgIDc5LCAgICA0NSwgICAgODEsCisgICAgIDE1MCwgICAgLTEsICAgMTM3
LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwKKyAgICAg
IDc1LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LCAgICAtMSwgICAx
MzcsICAgIDQ1LAorICAgICAgODEsICAgMTUwLCAgICAtMSwgICAgIDMsICAgIDQ1LCAgICAtMSwg
ICAxMzksICAgIC0xLCAgIDEzOCwgICAxMzksCiAgICAgICAtMSwgICAgIDksICAgIC0xLCAgICAg
OCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsICAgIDM3LCAgICAtMSwKLSAgICAgIDM2LCAg
ICAtMSwgICAxMzksICAgIC0xLCAgIDEzOCwgICAxMzksICAgIC0xLCAgICAgNCwgICAgLTEsICAg
ICA1LAotICAgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDAsICAgIC0xLCAgIDE0MCwgICAgNzIs
ICAgMTIzLCAgICA3MywgICAgLTEsCisgICAgICAzNiwgICAgLTEsICAgMTQxLCAgICAtMSwgICAx
NDAsICAgMTQxLCAgICAtMSwgICAgIDQsICAgIC0xLCAgICAgNSwKKyAgICAgIC0xLCAgICAgNiwg
ICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0xLAog
ICAgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwgICAgMTAsICAgIC0x
LCAgICAyNywgICAgLTEsCiAgICAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwgICAgMjEsICAg
IC0xLCAgICAyMiwgICAgLTEsICAgIDIzLCAgICAtMSwKICAgICAgIDI0LCAgICAtMSwgICAgMjUs
ICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwgICAgMzEsICAgIC0xLAotICAgICAg
MzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAxNDEsICAgIC0xLCAgICA0
NCwgICAgLTEsCi0gICAgICAzOCwgICAgNDMsICAgIDc0LCAgIDE0MiwgICAgNzUsICAgIC0xLCAg
ICAzOCwgICAgNzQsICAgMTQyLCAgICA3NSwKLSAgICAgIC0xLCAgIDE0MywgICAgLTEsICAgMTQy
LCAgIDE0MywgICAgLTEsICAgMTM3LCAgIDE0NCwgICAgODAsICAgIC0xLAotICAgICAxNDUsICAg
IC0xLCAgIDE0NCwgICAgNzcsICAgMTQ1LCAgICAtMSwgICAgNDMsICAgIC0xLCAgICA0MywgICAg
NzIsCi0gICAgIDEyMywgICAgNzMsICAgIC0xLCAgIDEyMCwgICAgLTEsICAgMTI0LCAgICAtMSwg
ICAxNTAsICAgIC0xLCAgIDE0OSwKLSAgICAgIC0xLCAgIDE0NywgICAgLTEsICAgMTU2LCAgICAt
MSwgICAxNTcsICAgIC0xLCAgIDE2MCwgICAgLTEsICAgMTY3LAotICAgICAgLTEsICAgIDc0LCAg
ICA3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzQsICAgMTUxLCAgIDE1NSwgICAxNTIsCi0g
ICAgICA3NSwgICAgLTEsICAgMTU0LCAgICAtMSwgICAxNDksICAgIC0xLCAgICA3NCwgICAgNzUs
ICAgIC0xLCAgICA3NCwKLSAgICAgMTU1LCAgICA3NSwgICAgLTEsICAgMTQ4LCAgICAtMSwgICAx
NTUsICAgMTQ4LCAgICAtMSwgICAgODAsICAgIC0xLAotICAgICAxMjIsICAgIDgwLCAgICAtMSwg
ICAgMTgsICAgIDcwLCAgIDEyMiwgICAgNzEsICAgMTU4LCAgICAtMSwgICAxNDgsCi0gICAgICAx
NiwgICAxNDgsICAgIC0xLCAgIDE0OCwgICAgLTEsICAgMTIyLCAgICAtMSwgICAxMzUsICAgIDQz
LCAgICA3OSwKLSAgICAgMTQ2LCAgICAtMSwgICAgLTEsICAgIDQwLCAgICA3MCwgICAxNjEsICAg
MTU5LCAgICA3MSwgICAxNTMsICAgIC0xLAotICAgICAgLTEsICAgIDE1LCAgIDE2MiwgICAxNDgs
ICAgIDQwLCAgICA3MCwgICAxMjIsICAgIDcxLCAgICA4MCwgICAgLTEsCi0gICAgICAtMSwgICAg
MTcsICAgIDcwLCAgIDE2MywgICAxNjQsICAgMTY2LCAgICA3MSwgICAxNTMsICAgIC0xLCAgIDE1
NiwKLSAgICAgIC0xLCAgIDE0NywgICAgLTEsICAgMTU5LCAgICAtMSwgICAgLTEsICAgMTY1LCAg
ICA4MCwgICAgLTEsICAgMTY1LAotICAgICAgODAsICAgMTIyLCAgICAtMSwgICAgMTQsICAgIDgw
LCAgICAtMSwgICAgMTMsICAgIDgwLCAgICAtMSwgICAgMjAsCi0gICAgICA4MCwgICAgLTEsICAg
IDIwLCAgIDEyMiwgICAgODAsICAgIC0xLCAgICAxOSwgICAgODAsICAgIC0xLCAgIDE2OSwKLSAg
ICAgIC0xLCAgIDE2OCwgICAxNjksICAgIC0xLCAgIDE3MCwgICAgLTEsICAgMTI0LCAgICAtMSwg
ICAgLTEsICAgMTI1LAotICAgICAxNzEsICAgMTU0LCAgICAtMQorICAgICAgMzIsICAgIC0xLCAg
ICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAgIC0xLCAgICA0NCwgICAgLTEsCisg
ICAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEsICAgIDM4LCAgICA0NSwgICAgNzYs
ICAgMTQ0LCAgIDE0NiwKKyAgICAgIDc3LCAgICAtMSwgICAgLTEsICAgIDM4LCAgICA3NiwgICAx
NDUsICAgMTQ2LCAgICA3NywgICAgLTEsICAgMTQ3LAorICAgICAgLTEsICAgMTQ2LCAgIDE0Nywg
ICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODIsICAgIC0xLCAgIDE0OSwgICAgLTEsCisgICAgIDE0
OCwgICAgNzksICAgMTQ5LCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA0NSwgICAgNzQsICAgMTI1
LCAgICA3NSwKKyAgICAgIC0xLCAgIDEyMiwgICAgLTEsICAgMTI2LCAgICAtMSwgICAxNTQsICAg
IC0xLCAgIDE1MywgICAgLTEsICAgMTUxLAorICAgICAgLTEsICAgMTYwLCAgICAtMSwgICAxNjEs
ICAgIC0xLCAgIDE2NCwgICAgLTEsICAgMTcxLCAgICAtMSwgICAgNzYsCisgICAgICA3NywgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgMTU1LCAgIDE1OSwgICAxNTYsICAgIDc3LCAgICAt
MSwKKyAgICAgMTU4LCAgICAtMSwgICAxNTMsICAgIC0xLCAgICA3NiwgICAgNzcsICAgIC0xLCAg
ICA3NiwgICAxNTksICAgIDc3LAorICAgICAgLTEsICAgMTUyLCAgICAtMSwgICAxNTksICAgMTUy
LCAgICAtMSwgICAgODIsICAgIC0xLCAgIDEyNCwgICAgODIsCisgICAgICAtMSwgICAgMTgsICAg
IDcyLCAgIDEyNCwgICAgNzMsICAgMTYyLCAgICAtMSwgICAxNTIsICAgIDE2LCAgIDE1MiwKKyAg
ICAgIC0xLCAgIDE1MiwgICAgLTEsICAgMTI0LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA4MSwg
ICAxNTAsICAgIC0xLAorICAgICAgLTEsICAgIDQwLCAgICA3MiwgICAxNjUsICAgMTYzLCAgICA3
MywgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUsCisgICAgIDE2NiwgICAxNTIsICAgIDQwLCAg
ICA3MiwgICAxMjQsICAgIDczLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICAxNywKKyAgICAgIDcy
LCAgIDE2NywgICAxNjgsICAgMTcwLCAgICA3MywgICAxNTcsICAgIC0xLCAgIDE2MCwgICAgLTEs
ICAgMTUxLAorICAgICAgLTEsICAgMTYzLCAgICAtMSwgICAgLTEsICAgMTY5LCAgICA4MiwgICAg
LTEsICAgMTY5LCAgICA4MiwgICAxMjQsCisgICAgICAtMSwgICAgMTQsICAgIDgyLCAgICAtMSwg
ICAgMTMsICAgIDgyLCAgICAtMSwgICAgMjAsICAgIDgyLCAgICAtMSwKKyAgICAgIDIwLCAgIDEy
NCwgICAgODIsICAgIC0xLCAgICAxOSwgICAgODIsICAgIC0xLCAgIDE3MywgICAgLTEsICAgMTcy
LAorICAgICAxNzMsICAgIC0xLCAgIDE3NCwgICAgLTEsICAgMTI2LCAgICAtMSwgICAgLTEsICAg
MTI3LCAgIDE3NSwgICAxNTgsCisgICAgICAtMQogfTsKIAogLyogWVlSTElORVtZWU5dIC0tIHNv
dXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCkBAIC03NDIs
MTMgKzY1OCwxMyBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJsaW5lW10gPQogICAg
IDEzMTYsICAxMzM2LCAgMTQxMiwgIDE0MjEsICAxNDQ0LCAgMTQ0NywgIDE0NTMsICAxNDYxLCAg
MTQ2OSwgIDE0NzcsCiAgICAgMTQ4NywgIDE0OTQsICAxNDk3LCAgMTUwMCwgIDE1MDYsICAxNTA5
LCAgMTUyNCwgIDE1MjgsICAxNTMyLCAgMTUzNiwKICAgICAxNTQ1LCAgMTU1MCwgIDE1NTUsICAx
NTYwLCAgMTU2NSwgIDE1NzAsICAxNTc1LCAgMTU4MCwgIDE1ODUsICAxNTkwLAotICAgIDE1OTYs
ICAxNjAyLCAgMTYwOCwgIDE2MTMsICAxNjE4LCAgMTYyMywgIDE2MzYsICAxNjQ5LCAgMTY1Nywg
IDE2NjAsCi0gICAgMTY3NSwgIDE3MDcsICAxNzExLCAgMTcxNywgIDE3MjUsICAxNzQxLCAgMTc0
NSwgIDE3NDksICAxNzUwLCAgMTc1NiwKLSAgICAxNzU3LCAgMTc1OCwgIDE3NTksICAxNzYwLCAg
MTc2NCwgIDE3NjUsICAxNzY1LCAgMTc2NSwgIDE3NzUsICAxNzc2LAotICAgIDE3ODEsICAxNzg0
LCAgMTc5NCwgIDE3OTcsICAxODAzLCAgMTgwNCwgIDE4MDgsICAxODE2LCAgMTgyMCwgIDE4MzAs
Ci0gICAgMTgzNSwgIDE4NTIsICAxODUyLCAgMTg1NywgIDE4NTcsICAxODY0LCAgMTg2NCwgIDE4
NzIsICAxODc1LCAgMTg4MSwKLSAgICAxODg0LCAgMTg5MCwgIDE4OTQsICAxOTAxLCAgMTkwOCwg
IDE5MTUsICAxOTIyLCAgMTkzMywgIDE5NDIsICAxOTQ2LAotICAgIDE5NTMsICAxOTU2LCAgMTk2
MiwgIDE5NjIKKyAgICAxNTk2LCAgMTYwMiwgIDE2MDgsICAxNjEzLCAgMTYxOCwgIDE2MjcsICAx
NjM2LCAgMTY0MSwgIDE2NTQsICAxNjU0LAorICAgIDE2NjgsICAxNjY4LCAgMTY3NywgIDE2ODAs
ICAxNjk1LCAgMTczMSwgIDE3MzUsICAxNzQxLCAgMTc0OSwgIDE3NjUsCisgICAgMTc2OSwgIDE3
NzMsICAxNzc0LCAgMTc4MCwgIDE3ODEsICAxNzgyLCAgMTc4MywgIDE3ODQsICAxNzg4LCAgMTc4
OSwKKyAgICAxNzg5LCAgMTc4OSwgIDE3OTksICAxODAwLCAgMTgwNSwgIDE4MDgsICAxODE4LCAg
MTgyMSwgIDE4MjcsICAxODI4LAorICAgIDE4MzIsICAxODQwLCAgMTg0NCwgIDE4NTQsICAxODU5
LCAgMTg3NiwgIDE4NzYsICAxODgxLCAgMTg4MSwgIDE4ODgsCisgICAgMTg4OCwgIDE4OTYsICAx
ODk5LCAgMTkwNSwgIDE5MDgsICAxOTE0LCAgMTkxOCwgIDE5MjUsICAxOTMyLCAgMTkzOSwKKyAg
ICAxOTQ2LCAgMTk1NywgIDE5NjYsICAxOTcwLCAgMTk3NywgIDE5ODAsICAxOTg2LCAgMTk4Ngog
fTsKICNlbmRpZgogCkBAIC03NjQsMTYgKzY4MCwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29u
c3QgeXl0bmFtZVtdID0KICAgIkJWRUM0IiwgIklWRUMyIiwgIklWRUMzIiwgIklWRUM0IiwgIlZF
QzIiLCAiVkVDMyIsICJWRUM0IiwgIk1BVFJJWDIiLAogICAiTUFUUklYMyIsICJNQVRSSVg0Iiwg
IklOX1FVQUwiLCAiT1VUX1FVQUwiLCAiSU5PVVRfUVVBTCIsICJVTklGT1JNIiwKICAgIlZBUllJ
TkciLCAiU1RSVUNUIiwgIlZPSURfVFlQRSIsICJXSElMRSIsICJTQU1QTEVSMkQiLCAiU0FNUExF
UkNVQkUiLAotICAiSURFTlRJRklFUiIsICJUWVBFX05BTUUiLCAiRkxPQVRDT05TVEFOVCIsICJJ
TlRDT05TVEFOVCIsCi0gICJCT09MQ09OU1RBTlQiLCAiRklFTERfU0VMRUNUSU9OIiwgIkxFRlRf
T1AiLCAiUklHSFRfT1AiLCAiSU5DX09QIiwKLSAgIkRFQ19PUCIsICJMRV9PUCIsICJHRV9PUCIs
ICJFUV9PUCIsICJORV9PUCIsICJBTkRfT1AiLCAiT1JfT1AiLAotICAiWE9SX09QIiwgIk1VTF9B
U1NJR04iLCAiRElWX0FTU0lHTiIsICJBRERfQVNTSUdOIiwgIk1PRF9BU1NJR04iLAotICAiTEVG
VF9BU1NJR04iLCAiUklHSFRfQVNTSUdOIiwgIkFORF9BU1NJR04iLCAiWE9SX0FTU0lHTiIsICJP
Ul9BU1NJR04iLAotICAiU1VCX0FTU0lHTiIsICJMRUZUX1BBUkVOIiwgIlJJR0hUX1BBUkVOIiwg
IkxFRlRfQlJBQ0tFVCIsCi0gICJSSUdIVF9CUkFDS0VUIiwgIkxFRlRfQlJBQ0UiLCAiUklHSFRf
QlJBQ0UiLCAiRE9UIiwgIkNPTU1BIiwgIkNPTE9OIiwKLSAgIkVRVUFMIiwgIlNFTUlDT0xPTiIs
ICJCQU5HIiwgIkRBU0giLCAiVElMREUiLCAiUExVUyIsICJTVEFSIiwgIlNMQVNIIiwKLSAgIlBF
UkNFTlQiLCAiTEVGVF9BTkdMRSIsICJSSUdIVF9BTkdMRSIsICJWRVJUSUNBTF9CQVIiLCAiQ0FS
RVQiLAotICAiQU1QRVJTQU5EIiwgIlFVRVNUSU9OIiwgIiRhY2NlcHQiLCAidmFyaWFibGVfaWRl
bnRpZmllciIsCisgICJTQU1QTEVSX0VYVEVSTkFMX09FUyIsICJTQU1QTEVSMkRSRUNUIiwgIklE
RU5USUZJRVIiLCAiVFlQRV9OQU1FIiwKKyAgIkZMT0FUQ09OU1RBTlQiLCAiSU5UQ09OU1RBTlQi
LCAiQk9PTENPTlNUQU5UIiwgIkZJRUxEX1NFTEVDVElPTiIsCisgICJMRUZUX09QIiwgIlJJR0hU
X09QIiwgIklOQ19PUCIsICJERUNfT1AiLCAiTEVfT1AiLCAiR0VfT1AiLCAiRVFfT1AiLAorICAi
TkVfT1AiLCAiQU5EX09QIiwgIk9SX09QIiwgIlhPUl9PUCIsICJNVUxfQVNTSUdOIiwgIkRJVl9B
U1NJR04iLAorICAiQUREX0FTU0lHTiIsICJNT0RfQVNTSUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJ
R0hUX0FTU0lHTiIsICJBTkRfQVNTSUdOIiwKKyAgIlhPUl9BU1NJR04iLCAiT1JfQVNTSUdOIiwg
IlNVQl9BU1NJR04iLCAiTEVGVF9QQVJFTiIsICJSSUdIVF9QQVJFTiIsCisgICJMRUZUX0JSQUNL
RVQiLCAiUklHSFRfQlJBQ0tFVCIsICJMRUZUX0JSQUNFIiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIs
CisgICJDT01NQSIsICJDT0xPTiIsICJFUVVBTCIsICJTRU1JQ09MT04iLCAiQkFORyIsICJEQVNI
IiwgIlRJTERFIiwgIlBMVVMiLAorICAiU1RBUiIsICJTTEFTSCIsICJQRVJDRU5UIiwgIkxFRlRf
QU5HTEUiLCAiUklHSFRfQU5HTEUiLCAiVkVSVElDQUxfQkFSIiwKKyAgIkNBUkVUIiwgIkFNUEVS
U0FORCIsICJRVUVTVElPTiIsICIkYWNjZXB0IiwgInZhcmlhYmxlX2lkZW50aWZpZXIiLAogICAi
cHJpbWFyeV9leHByZXNzaW9uIiwgInBvc3RmaXhfZXhwcmVzc2lvbiIsICJpbnRlZ2VyX2V4cHJl
c3Npb24iLAogICAiZnVuY3Rpb25fY2FsbCIsICJmdW5jdGlvbl9jYWxsX29yX21ldGhvZCIsICJm
dW5jdGlvbl9jYWxsX2dlbmVyaWMiLAogICAiZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFyYW1l
dGVycyIsCkBAIC03OTIsMTYgKzcwOCwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0
bmFtZVtdID0KICAgImluaXRfZGVjbGFyYXRvcl9saXN0IiwgInNpbmdsZV9kZWNsYXJhdGlvbiIs
ICJmdWxseV9zcGVjaWZpZWRfdHlwZSIsCiAgICJ0eXBlX3F1YWxpZmllciIsICJ0eXBlX3NwZWNp
ZmllciIsICJwcmVjaXNpb25fcXVhbGlmaWVyIiwKICAgInR5cGVfc3BlY2lmaWVyX25vX3ByZWMi
LCAidHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkiLCAic3RydWN0X3NwZWNpZmllciIsCi0gICJzdHJ1
Y3RfZGVjbGFyYXRpb25fbGlzdCIsICJzdHJ1Y3RfZGVjbGFyYXRpb24iLAorICAiJEAxIiwgIiRA
MiIsICJzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCIsICJzdHJ1Y3RfZGVjbGFyYXRpb24iLAogICAi
c3RydWN0X2RlY2xhcmF0b3JfbGlzdCIsICJzdHJ1Y3RfZGVjbGFyYXRvciIsICJpbml0aWFsaXpl
ciIsCiAgICJkZWNsYXJhdGlvbl9zdGF0ZW1lbnQiLCAic3RhdGVtZW50IiwgInNpbXBsZV9zdGF0
ZW1lbnQiLAotICAiY29tcG91bmRfc3RhdGVtZW50IiwgIkAxIiwgIkAyIiwgInN0YXRlbWVudF9u
b19uZXdfc2NvcGUiLAorICAiY29tcG91bmRfc3RhdGVtZW50IiwgIiRAMyIsICIkQDQiLCAic3Rh
dGVtZW50X25vX25ld19zY29wZSIsCiAgICJjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3Bl
IiwgInN0YXRlbWVudF9saXN0IiwKICAgImV4cHJlc3Npb25fc3RhdGVtZW50IiwgInNlbGVjdGlv
bl9zdGF0ZW1lbnQiLAotICAic2VsZWN0aW9uX3Jlc3Rfc3RhdGVtZW50IiwgImNvbmRpdGlvbiIs
ICJpdGVyYXRpb25fc3RhdGVtZW50IiwgIkAzIiwKLSAgIkA0IiwgIkA1IiwgImZvcl9pbml0X3N0
YXRlbWVudCIsICJjb25kaXRpb25vcHQiLCAiZm9yX3Jlc3Rfc3RhdGVtZW50IiwKKyAgInNlbGVj
dGlvbl9yZXN0X3N0YXRlbWVudCIsICJjb25kaXRpb24iLCAiaXRlcmF0aW9uX3N0YXRlbWVudCIs
ICIkQDUiLAorICAiJEA2IiwgIiRANyIsICJmb3JfaW5pdF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9u
b3B0IiwgImZvcl9yZXN0X3N0YXRlbWVudCIsCiAgICJqdW1wX3N0YXRlbWVudCIsICJ0cmFuc2xh
dGlvbl91bml0IiwgImV4dGVybmFsX2RlY2xhcmF0aW9uIiwKLSAgImZ1bmN0aW9uX2RlZmluaXRp
b24iLCAiQDYiLCAwCisgICJmdW5jdGlvbl9kZWZpbml0aW9uIiwgIiRAOCIsIDAKIH07CiAjZW5k
aWYKIApAQCAtODE5LDMzICs3MzUsMzMgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXl0
b2tudW1bXSA9CiAgICAgIDMxNSwgICAzMTYsICAgMzE3LCAgIDMxOCwgICAzMTksICAgMzIwLCAg
IDMyMSwgICAzMjIsICAgMzIzLCAgIDMyNCwKICAgICAgMzI1LCAgIDMyNiwgICAzMjcsICAgMzI4
LCAgIDMyOSwgICAzMzAsICAgMzMxLCAgIDMzMiwgICAzMzMsICAgMzM0LAogICAgICAzMzUsICAg
MzM2LCAgIDMzNywgICAzMzgsICAgMzM5LCAgIDM0MCwgICAzNDEsICAgMzQyLCAgIDM0MywgICAz
NDQsCi0gICAgIDM0NSwgICAzNDYsICAgMzQ3LCAgIDM0OAorICAgICAzNDUsICAgMzQ2LCAgIDM0
NywgICAzNDgsICAgMzQ5LCAgIDM1MAogfTsKICMgZW5kaWYKIAogLyogWVlSMVtZWU5dIC0tIFN5
bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gICovCiBzdGF0aWMg
Y29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9CiB7Ci0gICAgICAgMCwgICAgOTQsICAgIDk1LCAg
ICA5NiwgICAgOTYsICAgIDk2LCAgICA5NiwgICAgOTYsICAgIDk3LCAgICA5NywKLSAgICAgIDk3
LCAgICA5NywgICAgOTcsICAgIDk3LCAgICA5OCwgICAgOTksICAgMTAwLCAgIDEwMCwgICAxMDEs
ICAgMTAxLAotICAgICAxMDIsICAgMTAyLCAgIDEwMywgICAxMDMsICAgMTA0LCAgIDEwNSwgICAx
MDUsICAgMTA1LCAgIDEwNiwgICAxMDYsCi0gICAgIDEwNiwgICAxMDYsICAgMTA3LCAgIDEwNywg
ICAxMDcsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA5LCAgIDEwOSwKLSAgICAgMTA5LCAgIDEx
MCwgICAxMTEsICAgMTExLCAgIDExMSwgICAxMTEsICAgMTExLCAgIDExMiwgICAxMTIsICAgMTEy
LAotICAgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE2LCAgIDExNywgICAxMTcsICAg
MTE4LCAgIDExOCwgICAxMTksCi0gICAgIDExOSwgICAxMjAsICAgMTIwLCAgIDEyMSwgICAxMjEs
ICAgMTIxLCAgIDEyMSwgICAxMjEsICAgMTIyLCAgIDEyMiwKLSAgICAgMTIzLCAgIDEyNCwgICAx
MjQsICAgMTI0LCAgIDEyNSwgICAxMjYsICAgMTI2LCAgIDEyNywgICAxMjcsICAgMTI4LAotICAg
ICAxMjksICAgMTI5LCAgIDEzMCwgICAxMzAsICAgMTMwLCAgIDEzMCwgICAxMzEsICAgMTMxLCAg
IDEzMSwgICAxMzEsCi0gICAgIDEzMiwgICAxMzMsICAgMTMzLCAgIDEzMywgICAxMzMsICAgMTMz
LCAgIDEzNCwgICAxMzQsICAgMTM0LCAgIDEzNCwKLSAgICAgMTM0LCAgIDEzNCwgICAxMzUsICAg
MTM1LCAgIDEzNiwgICAxMzYsICAgMTM2LCAgIDEzNiwgICAxMzYsICAgMTM3LAotICAgICAxMzcs
ICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM5LCAgIDEzOSwgICAxNDAsICAgMTQwLCAgIDE0MCwg
ICAxNDAsCi0gICAgIDE0MCwgICAxNDAsICAgMTQwLCAgIDE0MCwgICAxNDAsICAgMTQwLCAgIDE0
MCwgICAxNDAsICAgMTQwLCAgIDE0MCwKLSAgICAgMTQwLCAgIDE0MCwgICAxNDAsICAgMTQwLCAg
IDE0MCwgICAxNDAsICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQyLAotICAgICAxNDMsICAgMTQ0
LCAgIDE0NCwgICAxNDUsICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OCwgICAxNDks
Ci0gICAgIDE0OSwgICAxNDksICAgMTQ5LCAgIDE0OSwgICAxNTAsICAgMTUxLCAgIDE1MiwgICAx
NTAsICAgMTUzLCAgIDE1MywKLSAgICAgMTU0LCAgIDE1NCwgICAxNTUsICAgMTU1LCAgIDE1Niwg
ICAxNTYsICAgMTU3LCAgIDE1OCwgICAxNTgsICAgMTU5LAotICAgICAxNTksICAgMTYxLCAgIDE2
MCwgICAxNjIsICAgMTYwLCAgIDE2MywgICAxNjAsICAgMTY0LCAgIDE2NCwgICAxNjUsCi0gICAg
IDE2NSwgICAxNjYsICAgMTY2LCAgIDE2NywgICAxNjcsICAgMTY3LCAgIDE2NywgICAxNjcsICAg
MTY4LCAgIDE2OCwKLSAgICAgMTY5LCAgIDE2OSwgICAxNzEsICAgMTcwCisgICAgICAgMCwgICAg
OTYsICAgIDk3LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk5LCAgICA5
OSwKKyAgICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAg
IDEwMiwgICAxMDMsICAgMTAzLAorICAgICAxMDQsICAgMTA0LCAgIDEwNSwgICAxMDUsICAgMTA2
LCAgIDEwNywgICAxMDcsICAgMTA3LCAgIDEwOCwgICAxMDgsCisgICAgIDEwOCwgICAxMDgsICAg
MTA5LCAgIDEwOSwgICAxMDksICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTExLCAgIDExMSwKKyAg
ICAgMTExLCAgIDExMiwgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExNCwg
ICAxMTQsICAgMTE0LAorICAgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE4LCAgIDEx
OSwgICAxMTksICAgMTIwLCAgIDEyMCwgICAxMjEsCisgICAgIDEyMSwgICAxMjIsICAgMTIyLCAg
IDEyMywgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTI0LCAgIDEyNCwKKyAgICAgMTI1
LCAgIDEyNiwgICAxMjYsICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTI4LCAgIDEyOSwgICAxMjks
ICAgMTMwLAorICAgICAxMzEsICAgMTMxLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAx
MzMsICAgMTMzLCAgIDEzMywgICAxMzMsCisgICAgIDEzNCwgICAxMzUsICAgMTM1LCAgIDEzNSwg
ICAxMzUsICAgMTM1LCAgIDEzNiwgICAxMzYsICAgMTM2LCAgIDEzNiwKKyAgICAgMTM2LCAgIDEz
NiwgICAxMzcsICAgMTM3LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM5
LAorICAgICAxMzksICAgMTQwLCAgIDE0MCwgICAxNDAsICAgMTQxLCAgIDE0MSwgICAxNDIsICAg
MTQyLCAgIDE0MiwgICAxNDIsCisgICAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIs
ICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwKKyAgICAgMTQyLCAgIDE0MiwgICAx
NDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDQsICAgMTQzLAorICAg
ICAxNDUsICAgMTQzLCAgIDE0NiwgICAxNDYsICAgMTQ3LCAgIDE0OCwgICAxNDgsICAgMTQ5LCAg
IDE0OSwgICAxNTAsCisgICAgIDE1MSwgICAxNTIsICAgMTUyLCAgIDE1MywgICAxNTMsICAgMTUz
LCAgIDE1MywgICAxNTMsICAgMTU0LCAgIDE1NSwKKyAgICAgMTU2LCAgIDE1NCwgICAxNTcsICAg
MTU3LCAgIDE1OCwgICAxNTgsICAgMTU5LCAgIDE1OSwgICAxNjAsICAgMTYwLAorICAgICAxNjEs
ICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTYzLCAgIDE2NSwgICAxNjQsICAgMTY2LCAgIDE2NCwg
ICAxNjcsCisgICAgIDE2NCwgICAxNjgsICAgMTY4LCAgIDE2OSwgICAxNjksICAgMTcwLCAgIDE3
MCwgICAxNzEsICAgMTcxLCAgIDE3MSwKKyAgICAgMTcxLCAgIDE3MSwgICAxNzIsICAgMTcyLCAg
IDE3MywgICAxNzMsICAgMTc1LCAgIDE3NAogfTsKIAogLyogWVlSMltZWU5dIC0tIE51bWJlciBv
ZiBzeW1ib2xzIGNvbXBvc2luZyByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uICAqLwpAQCAt
ODY0LDEzICs3ODAsMTMgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIyW10gPQogICAg
ICAgIDQsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAyLCAg
ICAgMSwgICAgIDEsCiAgICAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICA0
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKICAgICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDUsICAgICA0LCAgICAgMSwg
ICAgIDIsCi0gICAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwKLSAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMiwgICAgIDAsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLAotICAgICAgIDIsICAgICAz
LCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMSwgICAgIDEs
Ci0gICAgICAgNCwgICAgIDAsICAgICA2LCAgICAgMCwgICAgIDgsICAgICAwLCAgICAgNywgICAg
IDEsICAgICAxLCAgICAgMSwKLSAgICAgICAwLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAyLAotICAgICAgIDEsICAgICAxLCAgICAg
MCwgICAgIDMKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDAsICAgICA2LAorICAgICAgIDAsICAgICA1LCAgICAgMSwgICAgIDIs
ICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgNCwgICAgIDEsCisgICAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAyLCAgICAg
MCwKKyAgICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAxLCAg
ICAgMiwgICAgIDEsICAgICAyLAorICAgICAgIDUsICAgICAzLCAgICAgMSwgICAgIDEsICAgICA0
LCAgICAgMCwgICAgIDYsICAgICAwLCAgICAgOCwgICAgIDAsCisgICAgICAgNywgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMiwKKyAg
ICAgICAzLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMwog
fTsKIAogLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0gRGVmYXVsdCBydWxlIHRvIHJlZHVjZSB3
aXRoIGluIHN0YXRlCkBAIC04ODAsOTcgKzc5Niw5NyBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3Vp
bnQ4IHl5ZGVmYWN0W10gPQogewogICAgICAgIDAsICAgICAwLCAgIDExMSwgICAxMTIsICAgMTEz
LCAgICAgMCwgICAxMDUsICAgMTA0LCAgIDExOSwgICAxMTcsCiAgICAgIDExOCwgICAxMjMsICAg
MTI0LCAgIDEyNSwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjAsICAgMTIxLCAgIDEyMiwKLSAg
ICAgMTI5LCAgIDEzMCwgICAxMzEsICAgMTA4LCAgIDEwNiwgICAgIDAsICAgMTE2LCAgIDEzMiwg
ICAxMzMsICAgMTM1LAotICAgICAxOTEsICAgMTkyLCAgICAgMCwgICAgNzYsICAgIDg2LCAgICAg
MCwgICAgOTEsICAgIDk2LCAgICAgMCwgICAxMDIsCi0gICAgICAgMCwgICAxMDksICAgMTE0LCAg
IDEzNCwgICAgIDAsICAgMTg4LCAgIDE5MCwgICAxMDcsICAgMTAxLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgNzEsICAgICAwLCAgICA3NCwgICAgODYsICAgICAwLCAgICA4NywgICAgODgs
ICAgIDg5LAotICAgICAgNzcsICAgICAwLCAgICA4NiwgICAgIDAsICAgIDcyLCAgICA5NywgICAx
MDMsICAgMTEwLCAgICAgMCwgICAgIDEsCi0gICAgIDE4OSwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMTM4LCAgICAgMCwgICAxOTMsICAgIDc4LCAgICA4MywKKyAgICAgMTI5LCAgIDEz
MCwgICAxMzEsICAgMTA4LCAgIDEwNiwgICAgIDAsICAgMTE2LCAgIDEzMiwgICAxMzMsICAgMTM0
LAorICAgICAxMzUsICAgMTM3LCAgIDE5NSwgICAxOTYsICAgICAwLCAgICA3NiwgICAgODYsICAg
ICAwLCAgICA5MSwgICAgOTYsCisgICAgICAgMCwgICAxMDIsICAgICAwLCAgIDEwOSwgICAxMTQs
ICAgMTM2LCAgICAgMCwgICAxOTIsICAgMTk0LCAgIDEwNywKKyAgICAgMTAxLCAgICAgMCwgICAg
IDAsICAgMTQwLCAgICA3MSwgICAgIDAsICAgIDc0LCAgICA4NiwgICAgIDAsICAgIDg3LAorICAg
ICAgODgsICAgIDg5LCAgICA3NywgICAgIDAsICAgIDg2LCAgICAgMCwgICAgNzIsICAgIDk3LCAg
IDEwMywgICAxMTAsCisgICAgICAgMCwgICAgIDEsICAgMTkzLCAgICAgMCwgICAxMzgsICAgICAw
LCAgICAgMCwgICAxOTcsICAgIDc4LCAgICA4MywKICAgICAgIDg1LCAgICA5MCwgICAgIDAsICAg
IDkyLCAgICA3OSwgICAgIDAsICAgICAwLCAgICAgMiwgICAgIDUsICAgICA0LAogICAgICAgIDYs
ICAgIDI3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAzNCwgICAgMzMsICAgIDMyLCAgICAgMywg
ICAgIDgsCiAgICAgICAyOCwgICAgMTAsICAgIDE1LCAgICAxNiwgICAgIDAsICAgICAwLCAgICAy
MSwgICAgIDAsICAgIDM1LCAgICAgMCwKICAgICAgIDM4LCAgICA0MSwgICAgNDIsICAgIDQ3LCAg
ICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTUsICAgIDU3LAotICAgICAgNTksICAgIDcw
LCAgICAgMCwgICAgMjUsICAgIDczLCAgICAgMCwgICAxNDMsICAgICAwLCAgIDE0MSwgICAxMzcs
Ci0gICAgIDEzOSwgICAgIDAsICAgICAwLCAgIDE3MywgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgIDE1NSwKLSAgICAgMTYwLCAgIDE2NCwgICAgMzUsICAgIDYxLCAgICA2OCwg
ICAgIDAsICAgMTQ2LCAgICAgMCwgICAxMTQsICAgMTQ5LAotICAgICAxNjIsICAgMTQ4LCAgIDE0
NywgICAgIDAsICAgMTUwLCAgIDE1MSwgICAxNTIsICAgMTUzLCAgICA4MCwgICAgODIsCi0gICAg
ICA4NCwgICAgIDAsICAgICAwLCAgICA5OCwgICAgIDAsICAgMTQ1LCAgIDEwMCwgICAgMjksICAg
IDMwLCAgICAgMCwKLSAgICAgIDEyLCAgICAxMywgICAgIDAsICAgICAwLCAgICAxOSwgICAgMTgs
ICAgICAwLCAgICAyMCwgICAgMjIsICAgIDI0LAotICAgICAgMzEsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTE1LCAgIDEzNiwgICAgIDAsICAgICAwLCAg
IDE0MCwKLSAgICAgMTg0LCAgIDE4MywgICAgIDAsICAgMTc1LCAgICAgMCwgICAxODcsICAgMTg1
LCAgICAgMCwgICAxNzEsICAgMTU0LAotICAgICAgIDAsICAgIDY0LCAgICA2NSwgICAgNjYsICAg
IDY3LCAgICA2MywgICAgIDAsICAgICAwLCAgIDE2NSwgICAxNjEsCi0gICAgIDE2MywgICAgIDAs
ICAgIDkzLCAgICAgMCwgICAgOTUsICAgIDk5LCAgICAgNywgICAgIDAsICAgIDE0LCAgICAyNiwK
KyAgICAgIDU5LCAgICA3MCwgICAgIDAsICAgIDI1LCAgICA3MywgICAgIDAsICAgICAwLCAgICAg
MCwgICAxNDIsICAgICAwLAorICAgICAgIDAsICAgMTc3LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTU5LCAgIDE2NCwgICAxNjgsCisgICAgICAzNSwgICAgNjEsICAgIDY4
LCAgICAgMCwgICAxNTAsICAgICAwLCAgIDExNCwgICAxNTMsICAgMTY2LCAgIDE1MiwKKyAgICAg
MTUxLCAgICAgMCwgICAxNTQsICAgMTU1LCAgIDE1NiwgICAxNTcsICAgIDgwLCAgICA4MiwgICAg
ODQsICAgICAwLAorICAgICAgIDAsICAgIDk4LCAgICAgMCwgICAxNDksICAgMTAwLCAgICAyOSwg
ICAgMzAsICAgICAwLCAgICAxMiwgICAgMTMsCisgICAgICAgMCwgICAgIDAsICAgIDE5LCAgICAx
OCwgICAgIDAsICAgIDIwLCAgICAyMiwgICAgMjQsICAgIDMxLCAgICAgMCwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxMTUsICAgICAwLCAgIDE0NywgICAgIDAs
ICAgMTQ1LCAgIDE0MSwgICAxNDMsCisgICAgIDE4OCwgICAxODcsICAgICAwLCAgIDE3OSwgICAg
IDAsICAgMTkxLCAgIDE4OSwgICAgIDAsICAgMTc1LCAgIDE1OCwKKyAgICAgICAwLCAgICA2NCwg
ICAgNjUsICAgIDY2LCAgICA2NywgICAgNjMsICAgICAwLCAgICAgMCwgICAxNjksICAgMTY1LAor
ICAgICAxNjcsICAgICAwLCAgICA5MywgICAgIDAsICAgIDk1LCAgICA5OSwgICAgIDcsICAgICAw
LCAgICAxNCwgICAgMjYsCiAgICAgICAxMSwgICAgMTcsICAgIDIzLCAgICAzNiwgICAgMzcsICAg
IDQwLCAgICAzOSwgICAgNDUsICAgIDQ2LCAgICA0MywKLSAgICAgIDQ0LCAgICA0OCwgICAgNDks
ICAgIDU0LCAgICA1NiwgICAgNTgsICAgICAwLCAgICAgMCwgICAxNDIsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgIDE4NiwgICAgIDAsICAgMTU2LCAgICA2MiwgICAgNjksICAgICAwLCAgICA5
NCwgICAgIDksCi0gICAgICAgMCwgICAxNDQsICAgICAwLCAgIDE3OCwgICAxNzcsICAgMTgwLCAg
ICAgMCwgICAxNjksICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICA4MSwgICAgNjAsICAgICAw
LCAgIDE3OSwgICAgIDAsICAgICAwLCAgIDE2OCwgICAxNjYsICAgICAwLAotICAgICAgIDAsICAg
MTU3LCAgICAgMCwgICAxODEsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTU5LCAgIDE3MiwgICAx
NTgsCi0gICAgICAgMCwgICAxODIsICAgMTc2LCAgIDE2NywgICAxNzAsICAgMTc0CisgICAgICA0
NCwgICAgNDgsICAgIDQ5LCAgICA1NCwgICAgNTYsICAgIDU4LCAgICAgMCwgICAxMzksICAgICAw
LCAgICAgMCwKKyAgICAgMTQ0LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5MCwgICAgIDAsICAg
MTYwLCAgICA2MiwgICAgNjksICAgICAwLAorICAgICAgOTQsICAgICA5LCAgICAgMCwgICAgIDAs
ICAgMTQ2LCAgICAgMCwgICAxODIsICAgMTgxLCAgIDE4NCwgICAgIDAsCisgICAgIDE3MywgICAg
IDAsICAgICAwLCAgICAgMCwgICAgODEsICAgIDYwLCAgIDE0OCwgICAgIDAsICAgMTgzLCAgICAg
MCwKKyAgICAgICAwLCAgIDE3MiwgICAxNzAsICAgICAwLCAgICAgMCwgICAxNjEsICAgICAwLCAg
IDE4NSwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgMTYzLCAgIDE3NiwgICAxNjIsICAgICAw
LCAgIDE4NiwgICAxODAsICAgMTcxLCAgIDE3NCwgICAxNzgKIH07CiAKIC8qIFlZREVGR09UT1tO
VEVSTS1OVU1dLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlkZWZnb3RvW10gPQog
ewogICAgICAgLTEsICAgIDk4LCAgICA5OSwgICAxMDAsICAgMjI3LCAgIDEwMSwgICAxMDIsICAg
MTAzLCAgIDEwNCwgICAxMDUsCi0gICAgIDEwNiwgICAxMDcsICAgMTQyLCAgIDEwOSwgICAxMTAs
ICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwKLSAgICAgMTE2LCAgIDExNywgICAx
MTgsICAgMTE5LCAgIDEyMCwgICAxNDMsICAgMTQ0LCAgIDIxNiwgICAxNDUsICAgMTIyLAotICAg
ICAxNDYsICAgMTQ3LCAgICAzMiwgICAgMzMsICAgIDM0LCAgICA3OSwgICAgNjAsICAgIDYxLCAg
ICA4MCwgICAgMzUsCi0gICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LCAgIDEyMywgICAgNDMsICAgIDc0LCAgICA3NSwKLSAgICAgMTI3LCAgIDEyOCwgICAxNjYsICAg
MTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDIxMCwgICAyNzAsICAgMjg4LAotICAgICAyODks
ICAgMTUzLCAgIDE1NCwgICAxNTUsICAgMjc4LCAgIDI2OSwgICAxNTYsICAgMjUzLCAgIDIwMiwg
ICAyNTAsCi0gICAgIDI2NSwgICAyNzUsICAgMjc2LCAgIDE1NywgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNTMKKyAgICAgMTA2LCAgIDEwNywgICAxNDAsICAgMTA5LCAgIDExMCwgICAxMTEsICAg
MTEyLCAgIDExMywgICAxMTQsICAgMTE1LAorICAgICAxMTYsICAgMTE3LCAgIDExOCwgICAxMTks
ICAgMTIwLCAgIDE0MSwgICAxNDIsICAgMjE2LCAgIDE0MywgICAxMjIsCisgICAgIDE0NCwgICAx
NDUsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDc5LCAgICA2MiwgICAgNjMsICAgIDgwLCAgICAz
NywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgMTIzLCAg
ICA0NSwgICAxMjUsICAgIDc1LAorICAgICAxMjcsICAgMTI4LCAgIDE5NiwgICAxOTcsICAgMTY0
LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAyMTAsCisgICAgIDI3MywgICAyOTIsICAg
MjkzLCAgIDE1MSwgICAxNTIsICAgMTUzLCAgIDI4MiwgICAyNzIsICAgMTU0LCAgIDI1NSwKKyAg
ICAgMjAyLCAgIDI1MiwgICAyNjgsICAgMjc5LCAgIDI4MCwgICAxNTUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDU1CiB9OwogCiAvKiBZWVBBQ1RbU1RBVEUtTlVNXSAtLSBJbmRleCBpbiBZWVRB
QkxFIG9mIHRoZSBwb3J0aW9uIGRlc2NyaWJpbmcKICAgIFNUQVRFLU5VTS4gICovCi0jZGVmaW5l
IFlZUEFDVF9OSU5GIC0yNTAKKyNkZWZpbmUgWVlQQUNUX05JTkYgLTI1MQogc3RhdGljIGNvbnN0
IHl5dHlwZV9pbnQxNiB5eXBhY3RbXSA9CiB7Ci0gICAgMTIxOCwgICAtMTMsICAtMjUwLCAgLTI1
MCwgIC0yNTAsICAgMTM3LCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwKLSAgICAtMjUwLCAg
LTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAt
MjUwLAotICAgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgIC0yOCwgIC0yNTAs
ICAtMjUwLCAgLTI1MCwgIC0yNTAsCi0gICAgLTI1MCwgICAtNTUsICAgLTM4LCAgICAtNCwgICAg
MzMsICAgLTIwLCAgLTI1MCwgICAgNDQsICAxMjU5LCAgLTI1MCwKLSAgICAxMzE4LCAgLTI1MCwg
ICAgMTgsICAtMjUwLCAgMTE3NiwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAxMzE4LAot
ICAgICAtMjIsICAxMjU5LCAgLTI1MCwgICAgMjksICAtMjUwLCAgICA4NSwgICAgNzMsICAtMjUw
LCAgLTI1MCwgIC0yNTAsCi0gICAgLTI1MCwgIDEyNTksICAgMTEzLCAgICA3MCwgIC0yNTAsICAg
IDEzLCAgLTI1MCwgIC0yNTAsICAgOTQ5LCAgLTI1MCwKLSAgICAtMjUwLCAgICA0OSwgIDEyNTks
ICAgIDkwLCAgMTA4MCwgIC0yNTAsICAgMjgzLCAgLTI1MCwgIC0yNTAsICAtMjUwLAotICAgIC0y
NTAsICAgMTAxLCAgMTI1OSwgICAtNTYsICAtMjUwLCAgIDc1NywgICA5NDksICAgIDgwLCAgLTI1
MCwgIC0yNTAsCi0gICAgLTI1MCwgIC0yNTAsICAgOTQ5LCAgIDk0OSwgICA5NDksICAtMjUwLCAg
LTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwKLSAgICAgLTMzLCAgLTI1MCwgIC0yNTAsICAtMjUw
LCAgICA4MSwgICAtMTUsICAxMDEzLCAgICA5MiwgIC0yNTAsICAgOTQ5LAotICAgICAgNTIsICAg
LTc1LCAgLTI1MCwgICAtMjUsICAgIDQwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgIDEwNiwgICAx
MDUsCi0gICAgIC00NiwgIC0yNTAsICAgIDkzLCAgLTI1MCwgIC0yNTAsICAxMTIxLCAgICA5NSwg
ICAgIDksICAtMjUwLCAgLTI1MCwKLSAgICAtMjUwLCAgICA4OCwgICAgODksICAtMjUwLCAgIDEw
MCwgICAxMDIsICAgIDkxLCAgIDgyMSwgICAxMDQsICAgMTAzLAotICAgIC0yNTAsICAtMjUwLCAg
ICA2NiwgIC0yNTAsICAtMjUwLCAgICAyMCwgIC0yNTAsICAgLTU1LCAgICA3OSwgIC0yNTAsCi0g
ICAgLTI1MCwgIC0yNTAsICAtMjUwLCAgIDM2NSwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAs
ICAgMTA3LCAgLTI1MCwKLSAgICAtMjUwLCAgIDg4NSwgICA5NDksICAtMjUwLCAgIDEwOSwgIC0y
NTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAgIC02LAotICAgIC0yNTAsICAtMjUwLCAgIDk0OSwg
IDEyODMsICAtMjUwLCAgLTI1MCwgICA5NDksICAgMTEwLCAgLTI1MCwgIC0yNTAsCi0gICAgLTI1
MCwgICA5NDksICAgOTQ5LCAgIDk0OSwgICA5NDksICAgOTQ5LCAgIDk0OSwgICA5NDksICAgOTQ5
LCAgIDk0OSwKLSAgICAgOTQ5LCAgIDk0OSwgICA5NDksICAgOTQ5LCAgIDk0OSwgIC0yNTAsICAt
MjUwLCAgIDk0OSwgICAgOTAsICAtMjUwLAotICAgIC0yNTAsICAtMjUwLCAgIDQ0NywgIC0yNTAs
ICAgOTQ5LCAgLTI1MCwgIC0yNTAsICAgIDM0LCAgLTI1MCwgIC0yNTAsCi0gICAgIDQ0NywgIC0y
NTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgIDk0OSwgICA5NDksICAtMjUwLCAgLTI1
MCwKLSAgICAtMjUwLCAgIDk0OSwgIC0yNTAsICAgMTExLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAg
IDExMiwgICAgOTksICAtMjUwLAotICAgICAxMTYsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUw
LCAgICA1MiwgICAgNTIsICAtMjUwLCAgLTI1MCwgIC0yNTAsCi0gICAgLTI1MCwgICAtMjUsICAg
LTI1LCAgLTI1MCwgICAxMDYsICAgMTA1LCAgICA3NywgICAxMTQsICAtMjUwLCAgIDEyNSwKLSAg
ICAgNjExLCAgICAgNCwgIC0yNTAsICAgNjkzLCAgIDQ0NywgIC0yNTAsICAtMjUwLCAgIDExNSwg
IC0yNTAsICAtMjUwLAotICAgICA5NDksICAtMjUwLCAgIDExOSwgIC0yNTAsICAtMjUwLCAgIDY5
MywgICA0NDcsICAgIDk5LCAgIDEzNCwgICAxMjIsCi0gICAgIDEwOCwgIC0yNTAsICAtMjUwLCAg
IDk0OSwgIC0yNTAsICAgMTE3LCAgIDEyMywgICAxNzQsICAtMjUwLCAgIDEyMCwKLSAgICAgNTI5
LCAgLTI1MCwgICAgIDcsICAgOTQ5LCAgIDUyOSwgICA0NDcsICAgOTQ5LCAgLTI1MCwgIC0yNTAs
ICAtMjUwLAotICAgICAxMTgsICAgIDk5LCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MAorICAg
IDEyNTAsICAgLTE3LCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgIDExMywgIC0yNTEsICAtMjUxLCAg
LTI1MSwgIC0yNTEsCisgICAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUx
LCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwKKyAgICAtMjUxLCAgLTI1MSwgIC0yNTEsICAt
MjUxLCAgLTI1MSwgICAtMzksICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUxLAorICAgIC0yNTEs
ICAtMjUxLCAgLTI1MSwgICAtNjUsICAgLTM0LCAgIC0xMCwgICAgMjEsICAgLTMyLCAgLTI1MSwg
ICAgMjgsCisgICAgIDIwNywgIC0yNTEsICAxMzI0LCAgLTI1MSwgICAgNTYsICAtMjUxLCAgMTIw
NiwgIC0yNTEsICAtMjUxLCAgLTI1MSwKKyAgICAtMjUxLCAgMTMyNCwgICAgNzQsICAtMjUxLCAg
LTI1MSwgICAgODYsICAtMjUxLCAgICA3MSwgICAgOTUsICAtMjUxLAorICAgIC0yNTEsICAtMjUx
LCAgLTI1MSwgICAyMDcsICAgMTE5LCAgIDEyMCwgIC0yNTEsICAgLTU2LCAgLTI1MSwgIC0yNTEs
CisgICAgIDk3MSwgIC0yNTEsICAtMjUxLCAgICA4NCwgIC0yNTEsICAgMjA3LCAgIDI4NywgIC0y
NTEsICAtMjUxLCAgLTI1MSwKKyAgICAtMjUxLCAgIDEyNCwgICAyMDcsICAgLTU5LCAgLTI1MSwg
ICA3NzMsICAgOTcxLCAgICA5OCwgIC0yNTEsICAtMjUxLAorICAgIC0yNTEsICAtMjUxLCAgIDk3
MSwgICA5NzEsICAgOTcxLCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwgIC0yNTEsCisgICAg
ICAzNSwgIC0yNTEsICAtMjUxLCAgLTI1MSwgICAxMDAsICAgIC05LCAgMTAzNywgICAxMDIsICAt
MjUxLCAgIDk3MSwKKyAgICAgLTI3LCAgICAtMSwgIC0yNTEsICAgLTI0LCAgICA5OSwgIC0yNTEs
ICAtMjUxLCAgLTI1MSwgICAxMTIsICAgMTExLAorICAgICAtNTEsICAtMjUxLCAgIDEwMywgIC0y
NTEsICAtMjUxLCAgIDIwNywgICAxMzUsICAxMTA2LCAgLTI1MSwgICAxMDEsCisgICAgIDEwNCwg
IC0yNTEsICAgMTA5LCAgIDExNSwgICAxMDYsICAgODM5LCAgIDExNywgICAxMDcsICAtMjUxLCAg
LTI1MSwKKyAgICAgIDM5LCAgLTI1MSwgIC0yNTEsICAgLTExLCAgLTI1MSwgICAtNjUsICAgIDU0
LCAgLTI1MSwgIC0yNTEsICAtMjUxLAorICAgIC0yNTEsICAgMzcxLCAgLTI1MSwgIC0yNTEsICAt
MjUxLCAgLTI1MSwgICAxMTYsICAtMjUxLCAgLTI1MSwgICA5MDUsCisgICAgIDk3MSwgIC0yNTEs
ICAgMTE4LCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwgICAgIDgsICAtMjUxLCAgLTI1MSwK
KyAgICAgOTcxLCAgMTI4NywgIC0yNTEsICAtMjUxLCAgIDk3MSwgICAxMjUsICAtMjUxLCAgLTI1
MSwgIC0yNTEsICAgOTcxLAorICAgICA5NzEsICAgOTcxLCAgIDk3MSwgICA5NzEsICAgOTcxLCAg
IDk3MSwgICA5NzEsICAgOTcxLCAgIDk3MSwgICA5NzEsCisgICAgIDk3MSwgICA5NzEsICAgOTcx
LCAgLTI1MSwgIDExNDksICAgMTIyLCAgICAxNywgIC0yNTEsICAtMjUxLCAgLTI1MSwKKyAgICAt
MjUxLCAgLTI1MSwgICA0NTUsICAtMjUxLCAgIDk3MSwgIC0yNTEsICAtMjUxLCAgICAzMiwgIC0y
NTEsICAtMjUxLAorICAgICA0NTUsICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwg
ICA5NzEsICAgOTcxLCAgLTI1MSwgIC0yNTEsCisgICAgLTI1MSwgICA5NzEsICAtMjUxLCAgIDEy
MywgIC0yNTEsICAtMjUxLCAgLTI1MSwgICAxMjYsICAgMTIxLCAgLTI1MSwKKyAgICAgMTI3LCAg
LTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwgICAtMjcsICAgLTI3LCAgLTI1MSwgIC0yNTEsICAt
MjUxLAorICAgIC0yNTEsICAgLTI0LCAgIC0yNCwgIC0yNTEsICAgMTEyLCAgIDExMSwgICAgNzks
ICAtMjUxLCAgIDk3MSwgICAxMzUsCisgICAgLTI1MSwgICAxNTEsICAgNjIzLCAgICAxMSwgIC0y
NTEsICAgNzA3LCAgIDQ1NSwgIC0yNTEsICAtMjUxLCAgIDEyOCwKKyAgICAtMjUxLCAgLTI1MSwg
ICA5NzEsICAgMTMwLCAgLTI1MSwgICAxMzQsICAtMjUxLCAgLTI1MSwgICA3MDcsICAgNDU1LAor
ICAgICAxMjEsICAgMTQ3LCAgIDEzNiwgICAxMzEsICAtMjUxLCAgLTI1MSwgIC0yNTEsICAgOTcx
LCAgLTI1MSwgICAxMzIsCisgICAgIDE0MiwgICAyMDAsICAtMjUxLCAgIDEzOSwgICA1MzksICAt
MjUxLCAgICAxOSwgICA5NzEsICAgNTM5LCAgIDQ1NSwKKyAgICAgOTcxLCAgLTI1MSwgIC0yNTEs
ICAtMjUxLCAgIDE0MCwgICAxMjEsICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUxCiB9OwogCiAv
KiBZWVBHT1RPW05URVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBn
b3RvW10gPQogewotICAgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwg
IC0yNTAsICAgIDIyLCAgLTI1MCwgIC0yNTAsCi0gICAgLTI1MCwgIC0yNTAsICAgIDMxLCAgLTI1
MCwgICAtMjcsICAtMjUwLCAgIC03OSwgICAtMzAsICAtMjUwLCAgLTI1MCwKLSAgICAtMjUwLCAg
ICAgNSwgICAgIDgsICAgIDEyLCAgLTI1MCwgICAtNjMsICAgLTg1LCAgLTI1MCwgICAtOTIsICAg
LTgyLAotICAgICAgMTAsICAgIDExLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgIDEyMSwgICAxNDks
ICAgMTQ0LCAgIDEyNiwgIC0yNTAsCi0gICAgLTI1MCwgIC0yMzMsICAgLTIxLCAgIC0yNCwgICAy
MDIsICAgLTIzLCAgICAgMCwgIC0yNTAsICAgMTM5LCAgIC02NiwKLSAgICAtMjUwLCAgICAyNywg
IC0xNTYsICAgLTQxLCAgLTE0OSwgIC0yNDksICAtMjUwLCAgLTI1MCwgIC0yNTAsICAgLTU4LAot
ICAgICAxNzYsICAgIDE3LCAgIC0xOSwgIC0yNTAsICAtMjUwLCAgIC0zNSwgIC0yNTAsICAtMjUw
LCAgLTI1MCwgIC0yNTAsCi0gICAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAg
MTg4LCAgLTI1MCwgIC0yNTAKKyAgICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwg
IC0yNTEsICAtMjUxLCAgICA1MCwgIC0yNTEsICAtMjUxLAorICAgIC0yNTEsICAtMjUxLCAgIC00
NCwgIC0yNTEsICAgLTIxLCAgLTI1MSwgICAtNjIsICAgLTIwLCAgLTI1MSwgIC0yNTEsCisgICAg
LTI1MSwgICAgMzQsICAgIDM2LCAgICAzMywgIC0yNTEsICAgLTY2LCAgIC04MywgIC0yNTEsICAg
LTkyLCAgIC03MywKKyAgICAgICA3LCAgICAxMywgIC0yNTEsICAtMjUxLCAgLTI1MSwgICAxNDMs
ICAgMTcwLCAgIDE3NiwgICAxNTksICAtMjUxLAorICAgIC0yNTEsICAtMjQ3LCAgIC0yMiwgICAt
MzAsICAgMjM3LCAgIC0xNSwgICAgIDAsICAtMjUxLCAgLTI1MSwgIC0yNTEsCisgICAgIDEyOSwg
IC0xMjIsICAtMjUxLCAgICAtNiwgIC0xNTksICAgIC04LCAgLTE0MCwgIC0yNTAsICAtMjUxLCAg
LTI1MSwKKyAgICAtMjUxLCAgIC00MSwgICAyMDIsICAgIDQ4LCAgICAgOSwgIC0yNTEsICAtMjUx
LCAgICAtNSwgIC0yNTEsICAtMjUxLAorICAgIC0yNTEsICAtMjUxLCAgLTI1MSwgIC0yNTEsICAt
MjUxLCAgLTI1MSwgIC0yNTEsICAgMjEzLCAgLTI1MSwgIC0yNTEKIH07CiAKIC8qIFlZVEFCTEVb
WVlQQUNUW1NUQVRFLU5VTV1dLiAgV2hhdCB0byBkbyBpbiBzdGF0ZSBTVEFURS1OVU0uICBJZgpA
QCAtOTgwLDI4NCArODk2LDI4NiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cGdvdG9b
XSA9CiAjZGVmaW5lIFlZVEFCTEVfTklORiAtMTE3CiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2
IHl5dGFibGVbXSA9CiB7Ci0gICAgICA0MiwgICAxNjUsICAgMTY5LCAgIDE2NCwgICAyMjAsICAg
MTIxLCAgIDIyNCwgICAxODMsICAgMTMwLCAgIDE4NCwKLSAgICAgIDMwLCAgICAzMSwgICAxOTMs
ICAgIDYyLCAgICA2NiwgICAgNTAsICAgMTYxLCAgICA2NywgICAxNzAsICAgMTcxLAotICAgICAy
NjgsICAgMTc4LCAgIDEyMSwgICAxNjIsICAgIDQ3LCAgICA1MiwgICAgNzEsICAgIDczLCAgIDE4
NSwgICAxODYsCi0gICAgICA0OCwgICAyODcsICAgMjY4LCAgICA1NCwgICAgNjIsICAgMjg3LCAg
ICA1NiwgICAgODEsICAgIDQyLCAgIDE3MiwKLSAgICAgIDQyLCAgICAgNiwgICAgIDcsICAgMTcz
LCAgICA0MiwgICAyMDcsICAgIDUxLCAgIDE5NCwgICAgNzMsICAgIDQyLAotICAgICAgNzMsICAg
IDQyLCAgICA3MiwgICAyNDksICAgIDMwLCAgICAzMSwgICAxNzUsICAgIDYzLCAgICA4MSwgICAx
MzAsCi0gICAgICA2NCwgICAgNDIsICAgMTc2LCAgIDE4NywgICAxODgsICAgMjI2LCAgICA1Nywg
ICAgNTgsICAgIDU5LCAgICAyMywKLSAgICAgIDI0LCAgIDIxNywgICAgNDIsICAgIDU1LCAgICA0
MiwgICAyNjYsICAgMTQ4LCAgIDE2NSwgICAyOTAsICAgMjIzLAotICAgICAyMjgsICAgMjE3LCAg
ICA0MiwgICAgODQsICAgMjE3LCAgICA4NSwgICAxOTgsICAgIDY1LCAgICA1NiwgICAxOTksCi0g
ICAgICA2OCwgICAyMzIsICAgIDg2LCAgICAgNiwgICAgIDcsICAgMTg5LCAgIDE5MCwgICAyMTcs
ICAgMTIxLCAgIDEwOCwKLSAgICAgMjE4LCAgICA3MywgICAyNDYsICAgIDc2LCAgIC03NSwgICAy
MjAsICAgMjM3LCAgIDIzOCwgICAyMzksICAgMjQwLAotICAgICAgNDcsICAgMjE3LCAgIDI1MSwg
ICAgODMsICAgMjUyLCAgIDI0NywgICAxMDgsICAgMjc3LCAgICA1NywgICAgNTgsCi0gICAgICA1
OSwgICAgMjMsICAgIDI0LCAgIDE2NywgICAxNjgsICAgIDQyLCAgIDIxMSwgICAyMTIsICAgMjEz
LCAgIDEyNCwKLSAgICAgMjk0LCAgIDI1NSwgICAyNTYsICAgMTI2LCAgIDEyMSwgICAyMTQsICAg
MjkzLCAgIDE4MSwgICAxODIsICAgMjU3LAotICAgICAxODAsICAgICAyLCAgICAgMywgICAgIDQs
ICAgMTU4LCAgIDIxNSwgICAgNTcsICAgIDU4LCAgICA1OSwgICAtMjUsCi0gICAgIC0yNiwgICAg
NjgsICAgMTc0LCAgIDE0OCwgICAyMTcsICAgMjYwLCAgIDIzNSwgICAyMzYsICAgMTIxLCAgIDI0
MSwKLSAgICAgMjQyLCAgIDI2NywgICAxNzksICAgMTkxLCAgIDE5MiwgICAyNjIsICAgMTk1LCAg
IDE5NywgICAyMDAsICAgMjAxLAotICAgICAyMDMsICAgMjA1LCAgIDIwNCwgICAyNjcsICAgMjA4
LCAgIDI3MiwgICAyMTcsICAgMjc5LCAgIDIwOSwgICAyMjEsCi0gICAgLTExNiwgICAyODIsICAg
MjI1LCAgIDI4MSwgICAyNTgsICAgMjU5LCAgIC0yNywgICAyNjEsICAgMjcxLCAgIDI3MywKLSAg
ICAgMjg1LCAgIDI5MSwgICAxMDgsICAgMjgwLCAgIDI4NCwgICAyMzEsICAgMjQzLCAgIDI4Mywg
ICAyOTUsICAgMjg2LAotICAgICAyNDQsICAgMTY1LCAgIDE0OCwgICAxNTksICAgIDc4LCAgIDI0
NSwgICAgODIsICAgIDQ5LCAgIDE2MCwgICAyNjMsCi0gICAgIDE0OCwgICAxMjUsICAgMjMzLCAg
IDIzNCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwKLSAgICAgMTA4
LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAyNDgsICAgMjkyLCAgIDI1NCwgICAxMDgs
ICAgIDc3LAotICAgICAyNzQsICAgMjY0LCAgICA3MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgMTQ4LCAgICAg
MCwgICAxMDgsICAgMTQ4LCAgIDE0OCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0OCwgICAxNDgsICAg
ICAwLCAgICAgMCwgICAgIDAsCisgICAgICA0NCwgICAyMjQsICAgMTY3LCAgIDE2MywgICAxMjEs
ICAgMTk5LCAgICA1MiwgICAgMzIsICAgMjcxLCAgIDE5MSwKKyAgICAgIDY4LCAgIDIyMCwgICAx
NjIsICAgIDMzLCAgICA2NCwgICAxNTksICAgIDg0LCAgICA1NCwgICAgODUsICAgMTIxLAorICAg
ICAgNDksICAgMjcxLCAgIDE2MCwgICAxNzYsICAgIDU4LCAgICA4NiwgICAxMDgsICAgIDY5LCAg
ICA1MCwgICAgIDYsCisgICAgICAgNywgICAxODMsICAgMTg0LCAgICA4MSwgICAyOTEsICAgIDY0
LCAgICA3MywgICAgNTMsICAgMjkxLCAgICA1NiwKKyAgICAgIDQ0LCAgIDEwOCwgICAgNDQsICAg
MjA3LCAgIDE5MiwgICAxMjYsICAgIDQ0LCAgICA2NSwgICAxNjUsICAgMTY2LAorICAgICAgNjYs
ICAgIDQ0LCAgICA4MSwgICAgMzIsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDIzLCAgICAyNCwg
ICAgMzMsCisgICAgIDE3OSwgICAxODAsICAgMjUxLCAgICA0NCwgICAxNzMsICAgMTc4LCAgIDE4
NSwgICAxODYsICAgMjE3LCAgICA1NywKKyAgICAgMTc0LCAgIDIxOCwgICAxOTksICAgIDY3LCAg
ICA1OCwgICAgNDQsICAgMTQ2LCAgIDE2MywgICAyMjgsICAgICA2LAorICAgICAgIDcsICAgMjI2
LCAgICA0NCwgICAxODEsICAgMjY5LCAgIDE4MiwgICAyMjMsICAgMjE3LCAgIDE2OCwgICAxNjks
CisgICAgIDIxNywgICAyMzIsICAgMjk0LCAgIDEyMSwgICAtNzUsICAgMTI2LCAgIDI0OSwgICAx
MjYsICAgMjE3LCAgIDI1MCwKKyAgICAgMjQ2LCAgIDIxMSwgICAyMTIsICAgMjEzLCAgICA1OSwg
ICAgNjAsICAgIDYxLCAgICAyMywgICAgMjQsICAgMTcwLAorICAgICAyMTQsICAgMjE3LCAgIDI1
MywgICAxNzEsICAgMjU0LCAgIDEwOCwgICAyMjAsICAgICAyLCAgICAgMywgICAgIDQsCisgICAg
IDIxNSwgICAyMzcsICAgMjM4LCAgIDIzOSwgICAyNDAsICAgIDQ0LCAgIC0yNSwgICAgNDQsICAg
IDcwLCAgIDI4MSwKKyAgICAgIDcwLCAgIDI5OCwgICAgNDksICAgMjU3LCAgIDI1OCwgICAyMzMs
ICAgMjM0LCAgIDEwOCwgICAxMDgsICAgMTA4LAorICAgICAxMDgsICAgMTA4LCAgIDEwOCwgICAx
MDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDI1OSwgICAyOTcsCisgICAgICA3NCwg
ICAxNDYsICAgIDU5LCAgICA2MCwgICAgNjEsICAgMTIxLCAgIDE4NywgICAxODgsICAgMjE3LCAg
IDI2MiwKKyAgICAgMjM1LCAgIDIzNiwgICAgNzYsICAgMjcwLCAgIDEyNiwgICAgODMsICAgMTI0
LCAgIDI0MSwgICAyNDIsICAgMTU2LAorICAgICAtMjYsICAgMTg5LCAgIDE5MCwgICAxNzIsICAg
MTc3LCAgIDI2MywgICAyNzAsICAgMTA4LCAgIDE5MywgICAyNzUsCisgICAgIDE5NSwgICAyMDMs
ICAgMTIxLCAgIDIwMCwgICAyMDksICAgMjg2LCAgIDIwMSwgICAyMDQsICAgMjA1LCAgIDIwOCwK
KyAgICAgMjIxLCAgIDI2NSwgICAyODMsICAgMjI1LCAgICA0NCwgICAyOTUsICAgMjQ4LCAgLTEx
NiwgICAyNjAsICAgLTI3LAorICAgICAyMTcsICAgMjYxLCAgIDE0NiwgICAyNzQsICAgMTA4LCAg
IDI3NiwgICAyNzcsICAgMTYzLCAgIDI4NSwgICAyODQsCisgICAgIDE0NiwgICAgIDIsICAgICAz
LCAgICAgNCwgICAyODcsICAgMjg4LCAgIDI4OSwgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAg
MjkwLCAgIDIzMSwgICAyOTksICAgMjQzLCAgIDI0NSwgICAxNTcsICAgMjQ0LCAgICA3OCwgICAg
MTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCisgICAgICA4MiwgICAxNTgsICAgIDUxLCAgIDI2
NCwgICAyNjYsICAgIDI1LCAgICAyNiwgICAyOTYsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAg
ICAzMCwgICAxNDYsICAgIDMxLCAgIDE5NCwgICAxNDYsICAgMTQ2LCAgICA3NywgICAyNTYsICAg
IDcyLAorICAgICAgIDAsICAgMjY3LCAgICAgMCwgICAyNzgsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDE0NiwgICAxNDYsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgMTQ4LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDE0OCwgICAxNDgsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAot
ICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMy
LCAgIDEzMywgICAgIDAsCi0gICAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKLSAgICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLAotICAgICAg
MjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgODcsICAgIDI5LCAgICA4
OCwgICAgODksCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDYsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTQ2LCAgIDE0NiwKKyAgICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0
LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAxMjksICAg
MTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwgICAg
MTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAg
ICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsCisg
ICAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxMzcsICAgMTM4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksCisgICAgICA5
NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwKKyAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEyOSwgICAxMzAsICAg
MTMxLCAgICAgMCwgICAxMzIsICAgMTMzLAorICAgICAxMzQsICAgMTM1LCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAy
NSwKKyAgICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAg
ICAzMSwgICAgODgsICAgIDg5LAogICAgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDky
LCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzOSwg
ICAxNDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk1LCAgICA5
NiwgICAgIDAsICAgIDk3LCAgICAgMSwgICAgIDIsCi0gICAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwKLSAgICAgMTMz
LCAgICAgMCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwgICAg
IDAsICAgMTM3LCAgIDIxOSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzOSwg
ICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwKKyAgICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksICAgMTMw
LAorICAgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEsICAg
IDEyLCAgICAxMywgICAgMTQsCiAgICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgODcsICAgIDI5LAotICAg
ICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LAotICAgICAyMTks
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgOTUsICAgIDk2LCAgICAgMCwg
ICAgOTcsCi0gICAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAg
NywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgMTMxLCAgIDEzMiwgICAxMzMsICAgICAwLCAg
IDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLAotICAgICAgMTMsICAgIDE0
LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
Ci0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAx
MzgsICAgIDI3LCAgICAyOCwKLSAgICAgIDg3LCAgICAyOSwgICAgODgsICAgIDg5LCAgICA5MCwg
ICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLAorICAgICAgIDAsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCisgICAg
ICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAg
IDkyLCAgICA5MywKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwg
ICAxMzksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk1LCAg
ICA5NiwKKyAgICAgICAwLCAgIDEzNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgIDEzOSwgICAgOTUsICAgIDk2LAogICAgICAgIDAsICAgIDk3LCAgICAgMSwgICAgIDIsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCi0gICAgICAgOSwgICAgMTAs
ICAgMTMxLCAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywK
KyAgICAgICA5LCAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEz
MywgICAxMzQsICAgMTM1LAogICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAg
ICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgICAw
LCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzOCwKLSAgICAg
IDI3LCAgICAyOCwgICAgODcsICAgIDI5LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAg
IDAsICAgICAwLAotICAgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwKLSAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDc2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MTQxLAotICAgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMs
ICAgICA0LCAgICAgNSwgICAgIDYsCi0gICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAot
ICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIz
LCAgICAyNCwgICAgMjUsCi0gICAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgODcsICAg
IDI5LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwKKyAgICAgIDIxLCAgICAyMiwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2LAorICAgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5
MCwgICAgOTEsCiAgICAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAg
IDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAxNDEsICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICA1Niwg
ICAgIDIsICAgICAzLCAgICAgNCwKLSAgICAgICAwLCAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgIDk0LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICA3NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisg
ICAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAgMSwgICAgIDIs
ICAgICAzLCAgICAgNCwKKyAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCiAgICAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyMywKLSAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
IDg3LCAgICAyOSwgICAgODgsICAgIDg5LAotICAgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAs
ICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAz
MSwKKyAgICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAg
ICA5MywgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5Nywg
ICAgMTEsICAgIDEyLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5
NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywKKyAgICAgIDU4
LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDks
ICAgIDEwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAxMSwgICAgMTIsCiAgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4
LAotICAgICAgODcsICAgIDI5LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAg
ICAwLCAgICA5MiwgICAgOTMsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAg
ODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLAorICAg
ICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgOTUs
ICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgMTYsCisgICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLAorICAgICAgODgsICAgIDg5
LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAs
CiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLAotICAgICAxNjMsICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwgICAgOTYsCi0gICAg
ICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAxOCwKLSAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAotICAgICAgMjYsICAgICAwLCAgICAyNywgICAg
MjgsICAgIDg3LCAgICAyOSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgMTYxLCAg
ICAgOCwKKyAgICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1
LCAgICA5NiwgICAgIDAsICAgIDk3LAorICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAgMjIs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwK
KyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4
OSwgICAgOTAsICAgIDkxLAogICAgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAg
ICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAg
IDAsICAgICAwLAogICAgICAgIDAsICAgMjA2LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5Nywg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCiAgICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgODcsICAg
IDI5LAotICAgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIs
ICAgIDkzLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAg
MjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKKyAgICAgIDg3LCAgICAzMSwg
ICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLAog
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICAgMCwgICAgIDAsICAgMjIyLCAgICAgOCwKLSAgICAgICA5LCAgICAxMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LAotICAgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAx
OSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgIDI3LCAgICAyOCwgICAgODcsICAgIDI5
LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLAotICAgICAgOTIsICAg
IDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTUsICAgIDk2LCAg
ICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCi0g
ICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAyNSwgICAxNzcsICAgICAwLCAgICAyNywgICAg
MjgsICAgIDg3LCAgICAyOSwgICAgODgsICAgIDg5LAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsCisgICAgIDIy
MiwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1
LCAgICA5NiwKKyAgICAgICAwLCAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAorICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsCisgICAgICAyNiwgICAg
IDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4
OSwKICAgICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5Nywg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAx
NSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwKLSAgICAgICAw
LCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAs
ICAgICAwLAotICAgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKLSAgICAgIDE5LCAgICAy
MCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAxMjksICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1
LAotICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA2OSwgICAgIDAsICAgICAwLCAgICAgMSwKLSAgICAgICAyLCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAotICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTYsICAgIDExLCAg
ICAxMiwgICAgMTMsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsICAgIDEyLAorICAgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgIDE3
NSwgICAgIDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAg
ICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLAorICAgICAgOTIsICAgIDkz
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICA5NCwKKyAgICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAorICAgICAgOTUsICAgIDk2LCAgICAg
MCwgICAgOTcsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsCiAgICAg
ICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDIyLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgICAwLCAgICAyNywgICAgMjgsICAgICAwLAotICAgICAgMjksICAgICAxLCAgICAgMiwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAxMSwKLSAgICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLAotICAgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsCi0gICAgICAyOCwgICAgIDAs
ICAgIDI5LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwK
KyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAy
NywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgICAwLCAgICAzMSwgICAgIDIsICAgICAzLCAg
ICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsCiAgICAgICAgOSwgICAgMTAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLAotICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsCi0gICAgICAyNywgICAgMjgsICAgICAwLCAgICAy
OSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKLSAgICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAyMjks
ICAgIDI5LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwgICAyMzAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwKLSAgICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAot
ICAgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2
LCAgICAgMCwgICAgMjcsCi0gICAgICAyOCwgICAgIDAsICAgIDI5CisgICAgICAyMSwgICAgMjIs
ICAgICAwLCAgIDE5OCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwK
KyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgNzEsICAgICAwLCAgICAgMCwgICAgIDEsCisgICAgICAgMiwgICAgIDMsICAgICA0
LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKKyAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjQ3LCAgICAxMSwgICAg
MTIsICAgIDEzLAorICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKKyAgICAgIDMwLCAg
ICAgMCwgICAgMzEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LAorICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKKyAgICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAor
ICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICA4
LCAgICAgOSwgICAgMTAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwKKyAgICAgIDEzLCAgICAxNCwgICAgMTUs
ICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAy
NywgICAgMjgsCisgICAgICAyOSwgICAgMzAsICAgMjI5LCAgICAzMSwgICAgIDgsICAgICA5LCAg
ICAxMCwgICAyMzAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAorICAgICAgMTYsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAgMCwKKyAgICAgIDMxCiB9OwogCiBzdGF0aWMgY29uc3QgeXl0eXBl
X2ludDE2IHl5Y2hlY2tbXSA9CiB7Ci0gICAgICAgMCwgICAgODYsICAgIDk0LCAgICA4NSwgICAx
NTMsICAgIDY4LCAgIDE2MiwgICAgODIsICAgIDc0LCAgICA4NCwKLSAgICAgICAwLCAgICAgMCwg
ICAgNTgsICAgIDM0LCAgICAzOCwgICAgNDMsICAgIDcyLCAgICA0MCwgICAgNTEsICAgIDUyLAot
ICAgICAyNTMsICAgMTA2LCAgICA4NSwgICAgNzksICAgIDM3LCAgICA4MCwgICAgNDksICAgIDUx
LCAgICA1MywgICAgNTQsCi0gICAgICA0MywgICAyODAsICAgMjY1LCAgICA3MSwgICAgNTUsICAg
Mjg0LCAgICAgMywgICAgNjEsICAgIDM4LCAgICA3MiwKLSAgICAgIDQwLCAgICAgOCwgICAgIDks
ICAgIDc2LCAgICA0NCwgICAxMzcsICAgIDc0LCAgICA5MywgICAgNzIsICAgIDQ5LAotICAgICAg
NzQsICAgIDUxLCAgICA3NCwgICAyMDIsICAgIDQ0LCAgICA0NCwgICAgNzEsICAgIDc3LCAgICA4
MiwgICAxMjUsCi0gICAgICA4MCwgICAgNjEsICAgIDc3LCAgICA4OCwgICAgODksICAgIDcxLCAg
ICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwKLSAgICAgIDM3LCAgICA3NywgICAgNzIsICAgIDc3
LCAgICA3NCwgICAgNzEsICAgIDc2LCAgIDE2MiwgICAgNzEsICAgMTYxLAotICAgICAxNzIsICAg
IDc3LCAgICA4MiwgICAgNzAsICAgIDc3LCAgICA3MiwgICAgNzcsICAgIDQzLCAgICAgMywgICAg
ODAsCi0gICAgICA3MiwgICAxNzYsICAgIDc5LCAgICAgOCwgICAgIDksICAgIDU1LCAgICA1Niwg
ICAgNzcsICAgMTYxLCAgICA2OCwKLSAgICAgIDgwLCAgIDEyNSwgICAxOTQsICAgIDc0LCAgICA3
MSwgICAyNTQsICAgMTg1LCAgIDE4NiwgICAxODcsICAgMTg4LAotICAgICAgMzcsICAgIDc3LCAg
IDIwNCwgICAgNDMsICAgIDgwLCAgIDE5NywgICAgODUsICAgMjY2LCAgICAzMywgICAgMzQsCi0g
ICAgICAzNSwgICAgMzYsICAgIDM3LCAgICA5MiwgICAgOTMsICAgMTI1LCAgICA2MCwgICAgNjEs
ICAgIDYyLCAgICA4MCwKLSAgICAgMjg2LCAgIDIxNiwgICAyMTcsICAgIDQzLCAgIDE5NywgICAg
NjksICAgMjg1LCAgICA4NSwgICAgODYsICAgMjIxLAotICAgICAxMDksICAgICA0LCAgICAgNSwg
ICAgIDYsICAgIDQzLCAgICA3OSwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgNzAsCi0gICAgICA3
MCwgICAgNzIsICAgIDcxLCAgIDE1MywgICAgNzcsICAgIDc4LCAgIDE4MywgICAxODQsICAgMjIx
LCAgIDE4OSwKLSAgICAgMTkwLCAgIDI1MywgICAgNzAsICAgIDU3LCAgICA1OSwgICAgNDAsICAg
IDczLCAgICA3MiwgICAgODAsICAgIDgwLAotICAgICAgNzAsICAgIDgwLCAgICA3MCwgICAyNjUs
ICAgIDcwLCAgIDI2MCwgICAgNzcsICAgIDQzLCAgICA3NSwgICAgNzIsCi0gICAgICA3MCwgICAy
NzMsICAgIDczLCAgICA3NSwgICAgNzMsICAgIDczLCAgICA3MCwgICAgNzMsICAgIDczLCAgICA3
MCwKLSAgICAgIDE2LCAgIDI4MywgICAxNjEsICAgIDcxLCAgICA3MSwgICAxNzMsICAgMTkxLCAg
ICA4MCwgICAgODAsICAgIDc5LAotICAgICAxOTIsICAgMjg2LCAgIDIwMiwgICAgODIsICAgIDU1
LCAgIDE5MywgICAgNjIsICAgICA1LCAgICA4MiwgICAyNTAsCi0gICAgIDIxMCwgICAgNzIsICAg
MTgxLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwKLSAg
ICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAxOTgsICAgMjg0LCAgIDIxMCwg
ICAxOTcsICAgIDUzLAotICAgICAyNjUsICAgMjUwLCAgICA0NCwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgMjUw
LCAgICAtMSwgICAyMjEsICAgMjUzLCAgIDI1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDI2NSwgICAy
NjYsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAgMCwgICAxNjAsICAgIDk0LCAgICA4Niwg
ICAgNzAsICAgMTI3LCAgICA0NSwgICAgIDAsICAgMjU1LCAgICA2MCwKKyAgICAgIDQwLCAgIDE1
MSwgICAgODUsICAgICAwLCAgICAzNiwgICAgNzQsICAgIDcyLCAgICA4MiwgICAgNzQsICAgIDg1
LAorICAgICAgMzcsICAgMjY4LCAgICA4MSwgICAxMDYsICAgICAzLCAgICA4MSwgICAgNzAsICAg
IDQyLCAgICA0NSwgICAgIDgsCisgICAgICAgOSwgICAgNTUsICAgIDU2LCAgICA2MywgICAyODQs
ICAgIDU3LCAgICA1MSwgICAgNzYsICAgMjg4LCAgICA3MywKKyAgICAgIDQwLCAgICA4NSwgICAg
NDIsICAgMTM1LCAgICA5NSwgICAgNzUsICAgIDQ2LCAgICA3OSwgICAgOTIsICAgIDkzLAorICAg
ICAgODIsICAgIDUxLCAgICA4MiwgICAgNDYsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAg
ICAzNywgICAgNDYsCisgICAgICA4NywgICAgODgsICAgMjAyLCAgICA2MywgICAgNzMsICAgMTA5
LCAgICA5MCwgICAgOTEsICAgIDc5LCAgICA3OSwKKyAgICAgIDc5LCAgICA4MiwgICAxOTQsICAg
IDQ1LCAgICAgMywgICAgNzUsICAgIDc2LCAgIDE2MCwgICAxNzAsICAgICA4LAorICAgICAgIDks
ICAgIDczLCAgICA4MiwgICAgODQsICAgIDczLCAgICA4NiwgICAxNTksICAgIDc5LCAgICA1Mywg
ICAgNTQsCisgICAgICA3OSwgICAxNzQsICAgIDczLCAgIDE1OSwgICAgNzMsICAgMTI1LCAgICA3
OSwgICAxMjcsICAgIDc5LCAgICA4MiwKKyAgICAgMTkyLCAgICA2MiwgICAgNjMsICAgIDY0LCAg
ICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDc0LAorICAgICAgNzEsICAgIDc5
LCAgIDIwNCwgICAgNzgsICAgIDgyLCAgIDE1OSwgICAyNTYsICAgICA0LCAgICAgNSwgICAgIDYs
CisgICAgICA4MSwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTI1LCAgICA3MiwgICAx
MjcsICAgIDc0LCAgIDI2OSwKKyAgICAgIDc0LCAgIDI5MCwgICAgMzcsICAgMjE2LCAgIDIxNywg
ICAxNzksICAgMTgwLCAgIDE4MSwgICAxODIsICAgMTgzLAorICAgICAxODQsICAgMTg1LCAgIDE4
NiwgICAxODcsICAgMTg4LCAgIDE4OSwgICAxOTAsICAgMTkxLCAgIDIyMSwgICAyODksCisgICAg
ICA3NiwgICAxNTEsICAgIDMzLCAgICAzNCwgICAgMzUsICAgMjIxLCAgICA1NywgICAgNTgsICAg
IDc5LCAgICA4MCwKKyAgICAgMTgxLCAgIDE4MiwgICAgNzYsICAgMjU1LCAgIDE5NCwgICAgNDUs
ICAgIDgyLCAgIDE4NywgICAxODgsICAgIDQ1LAorICAgICAgNzIsICAgIDU5LCAgICA2MSwgICAg
NzMsICAgIDcyLCAgIDI0OCwgICAyNjgsICAgMjIxLCAgICA3NSwgICAyNjIsCisgICAgICA0NSwg
ICAgNzIsICAgMjQ4LCAgICA4MiwgICAgNzcsICAgMjc3LCAgICA4MiwgICAgNzIsICAgIDgyLCAg
ICA3MiwKKyAgICAgIDc0LCAgICA0MCwgICAgNDUsICAgIDc1LCAgIDE5NCwgICAyODcsICAgIDc0
LCAgICA3MiwgICAgNzUsICAgIDcyLAorICAgICAgNzksICAgIDc1LCAgIDIwMiwgICAgNzUsICAg
MjQ4LCAgICA3NSwgICAgNzIsICAgMjkwLCAgICA3NywgICAgNzMsCisgICAgIDIxMCwgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgODIsICAgIDczLCAgICAxNiwgICAgMTAsICAgIDExLCAgICAxMiwK
KyAgICAgIDgxLCAgIDE3MSwgICAgODIsICAgMTg5LCAgIDE5MSwgICAgODIsICAgMTkwLCAgICA1
NywgICAgMjEsICAgIDIyLAorICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCisgICAgICA2NCwgICAgODIsICAgICA1
LCAgIDI0OSwgICAyNTIsICAgIDM4LCAgICAzOSwgICAyODgsICAgIDQxLCAgICA0MiwKKyAgICAg
IDQzLCAgICA0NCwgICAyNTIsICAgIDQ2LCAgIDEyNSwgICAyNTUsICAgMjU2LCAgICA1NSwgICAy
MTAsICAgIDQ2LAorICAgICAgLTEsICAgMjUyLCAgICAtMSwgICAyNjgsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgIDI2OCwgICAyNjksCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgMjgwLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgIDI4NCwgICAyODUsICAgICAzLCAgICAgNCwgICAgIDUsICAg
ICA2LAotICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgLTEsCi0gICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LAot
ICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsCi0gICAgICA0NywgICAgNDgsICAgIC0xLCAgICAtMSwgICAgNTEsICAg
IDUyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgIDI4NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyODgsICAgMjg5LAorICAgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAx
MSwgICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAg
NDIsCisgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwg
ICAgNTAsICAgIC0xLCAgICAtMSwKKyAgICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsCisg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NiwgICAgNzcsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA4MiwKKyAgICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAorICAgICAgIDksICAgIDEwLCAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsCisgICAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzNiwgICAgMzcsICAgIDM4LAorICAgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisgICAgICA0OSwgICAg
NTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzAsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDc0LCAgICA3NSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MCwgICAgODEsICAgIDgyLCAgICAtMSwgICAgODQsICAgICAzLCAgICAgNCwKKyAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3Niwg
ICAgNzcsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4
NCwgICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsCiAgICAgICAgNSwgICAgIDYsICAgICA3LCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwKICAgICAgIDE1
LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LAogICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwg
ICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwKLSAgICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICAtMSwgICAgLTEsICAgIDUxLCAgICA1MiwgICAgLTEsICAgIC0x
LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDcwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NCwKLSAgICAgIDc1LCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIDg0LAotICAg
ICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAg
ICAxMSwgICAgMTIsCi0gICAgICAxMywgICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwg
ICAgNDIsCi0gICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICAt
MSwgICAgLTEsICAgIDUxLCAgICA1MiwKKyAgICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAg
ICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LAogICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzAsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICA3NCwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA4MCwgICAgODEsICAgIDgyLAotICAgICAgLTEsICAgIDg0LCAgICAg
MywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAg
IC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LAorICAgICAgLTEsICAgIDg2LCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCiAgICAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwKICAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLAogICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCi0gICAgICA0MSwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIC0xLCAgICAtMSwK
LSAgICAgIDUxLCAgICA1MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzAsCi0gICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MCwKLSAgICAg
IDgxLCAgICA4MiwgICAgLTEsICAgIDg0LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAg
IDcsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDIxLCAgICAy
MiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAg
ICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAg
IDM4LAotICAgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUs
ICAgIDQ2LCAgICA0NywgICAgNDgsCi0gICAgICAtMSwgICAgLTEsICAgIDUxLCAgICA1MiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLAor
ICAgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICA3MCwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIDgwLCAgICA4MSwgICAgODIsICAgIC0xLCAgICA4NCwgICAgIDMsICAgICA0LCAgICAg
NSwgICAgIDYsCi0gICAgICAtMSwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAg
IDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
IDYsCisgICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAy
MSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAogICAgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsCiAg
ICAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwKLSAgICAgIDQ3LCAgICA0OCwgICAgLTEsICAgIC0xLCAgICA1MSwgICAg
NTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgNDcsICAgIDQ4LCAgICA0OSwg
ICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsCiAgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcwLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAxMCwgICAgMTEsICAgIDEyLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDgxLCAgICA4MiwgICAgLTEsICAgIDg0LCAgICAyMSwgICAgMjIsCisgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAg
ICA4NCwgICAgLTEsICAgIDg2LAorICAgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0x
LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwKICAg
ICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgMzEsICAgIDMyLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAz
OCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCi0gICAgICA0MywgICAgNDQsICAgIDQ1LCAg
ICA0NiwgICAgNDcsICAgIDQ4LCAgICAtMSwgICAgLTEsICAgIDUxLCAgICA1MiwKKyAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEs
ICAgIDQyLAorICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICAtMSwgICAgLTEsCisgICAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcy
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCisgICAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEs
ICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKKyAgICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAg
ICA0NSwgICAgNDYsCisgICAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0x
LCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcwLCAgICAtMSwg
ICAgLTEsCi0gICAgICA3MywgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDgxLCAgICA4MiwKLSAgICAgIC0xLCAgICA4NCwgICAgMjEsICAgIDIyLCAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAotICAgICAgMjksICAgIDMw
LCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgs
Ci0gICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAg
NDYsICAgIDQ3LCAgICA0OCwKLSAgICAgIC0xLCAgICAtMSwgICAgNTEsICAgIDUyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICA3NSwgICAgMTAsCisgICAg
ICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MywgICAgODQsICAg
IC0xLCAgICA4NiwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsCisgICAgICA0MSwg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwKKyAgICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgNzAs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgICA4MCwgICAgODEsICAgIDgyLCAgICAtMSwgICAgODQsICAgIDIxLCAgICAy
MiwgICAgMjMsICAgIDI0LAorICAgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgODIsICAgIDgz
LCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKICAgICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCi0gICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0
OCwgICAgLTEsICAgIC0xLCAgICA1MSwgICAgNTIsICAgIC0xLCAgICAtMSwKKyAgICAgIDQ1LCAg
ICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAg
IDU0LAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDcwLCAgICAtMSwgICAgLTEsICAgIDczLCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIDg0LAot
ICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwKLSAgICAgIDQxLCAgICA0MiwgICAgNDMs
ICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgLTEsICAgIC0xLAotICAgICAg
NTEsICAgIDUyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA3MCwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEw
LCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgODEsICAg
IDgyLCAgICAtMSwgICAgODQsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0
MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAg
ICAtMSwgICAgLTEsICAgIDUxLCAgICA1MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIs
ICAgIC0xLCAgICAtMSwKKyAgICAgIDc1LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgODMsICAgIDg0LAorICAgICAgLTEsICAgIDg2LCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCisgICAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzOCwKKyAgICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAorICAgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEs
ICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcwLCAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIDgx
LCAgICA4MiwgICAgLTEsICAgIDg0LCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAg
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMzgsICAgIDM5LAotICAgICAgLTEsICAgIDQxLCAgICA0MiwgICAgLTEsICAgIDQ0LCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0x
LCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
ICAgIDI4LAotICAgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICA3NSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgMzgsCi0gICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0Miwg
ICAgLTEsICAgIDQ0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAgLTEsICAgICAz
LAotICAgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAg
IDExLCAgICAxMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAg
ICAyMSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMs
ICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwg
ICAgLTEsCisgICAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLAorICAgICAgIDQsICAgICA1
LCAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEs
CisgICAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MjEsICAgIDIyLCAgICAyMywKICAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAz
NiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgLTEsCi0gICAg
ICA0NCwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwKLSAgICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLAotICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsCi0gICAgICAzMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0xLCAg
ICA0MSwKLSAgICAgIDQyLCAgICAtMSwgICAgNDQsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDEwLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgLTEs
ICAgIDQ2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwK
ICAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAogICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIC0x
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwKLSAgICAg
IDQxLCAgICA0MiwgICAgLTEsICAgIDQ0LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LAotICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgMzgsICAgIDM5LCAgICAt
MSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDEwLCAgICAxMSwKLSAgICAgIDEyLCAg
ICA0OCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDIxLAotICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsCi0gICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwKLSAgICAgIDQyLCAgICAtMSwg
ICAgNDQKKyAgICAgIDMxLCAgICAzMiwgICAgLTEsICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzOCwgICAgMzksICAgIC0xLAorICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAg
IC0xLCAgICA0NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMCwgICAgLTEsICAgIC0xLCAgICAgMywK
KyAgICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgNzcsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKKyAgICAg
IC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAg
NDIsICAgIDQzLAorICAgICAgNDQsICAgIC0xLCAgICA0NiwgICAgIDMsICAgICA0LCAgICAgNSwg
ICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAg
IDI5LAorICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYs
ICAgIDM3LCAgICAzOCwgICAgMzksCisgICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAg
NDQsICAgIC0xLCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLAor
ICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAzMSwgICAgMzIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwKKyAgICAgIDQzLCAgICA0NCwgICAgNDUs
ICAgIDQ2LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICA1MCwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLAorICAgICAgNDYKIH07
CiAKIC8qIFlZU1RPU1tTVEFURS1OVU1dIC0tIFRoZSAoaW50ZXJuYWwgbnVtYmVyIG9mIHRoZSkg
YWNjZXNzaW5nCkBAIC0xMjY2LDM0ICsxMTg0LDM0IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWlu
dDggeXlzdG9zW10gPQogewogICAgICAgIDAsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsCiAgICAgICAxMiwgICAgMjEsICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MSwgICAg
NDIsICAgIDQ0LAotICAgICAxMjQsICAgMTI1LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEzMywg
ICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsCi0gICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0
MSwgICAxNjgsICAgMTY5LCAgIDE3MCwgICAgMzcsICAgIDQzLCAgIDEzOCwKLSAgICAgIDQzLCAg
ICA3NCwgICAgODAsICAgMTcxLCAgICA3MSwgICAgNzcsICAgICAzLCAgICAzMywgICAgMzQsICAg
IDM1LAotICAgICAxMzAsICAgMTMxLCAgIDEzNiwgICAgNzcsICAgIDgwLCAgICA0MywgICAxMzcs
ICAgMTM5LCAgICA3MiwgICAgIDAsCi0gICAgIDE2OSwgICAxMzksICAgIDc0LCAgIDEzNywgICAx
NDIsICAgMTQzLCAgICA3NCwgICAxNTQsICAgMTMwLCAgIDEyOSwKLSAgICAgMTMyLCAgIDEzNywg
ICAxMzEsICAgIDQzLCAgICA3MCwgICAgNzIsICAgIDc5LCAgICA0MywgICAgNDUsICAgIDQ2LAot
ICAgICAgNDcsICAgIDQ4LCAgICA1MSwgICAgNTIsICAgIDcwLCAgICA4MSwgICAgODIsICAgIDg0
LCAgICA5NSwgICAgOTYsCi0gICAgICA5NywgICAgOTksICAgMTAwLCAgIDEwMSwgICAxMDIsICAg
MTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LCAgIDEwNywKLSAgICAgMTA4LCAgIDEwOSwgICAxMTAs
ICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LAotICAgICAx
MTgsICAgMTE5LCAgIDEyMywgICAxNDAsICAgIDgwLCAgIDE0MiwgICAgNDMsICAgMTQ0LCAgIDE0
NSwgICAgNzUsCi0gICAgIDE0MywgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDQwLCAgICA3NCwKLSAgICAgIDc1LCAgICA4MCwgICAxMDYsICAgMTE5
LCAgIDEyMCwgICAxMjIsICAgMTI0LCAgIDEyNSwgICAxNDAsICAgMTQ3LAotICAgICAxNDgsICAg
MTQ5LCAgIDE1MCwgICAxNTUsICAgMTU2LCAgIDE1NywgICAxNjAsICAgMTY3LCAgICA0MywgICAx
MjksCi0gICAgIDEzMiwgICAgNzIsICAgIDc5LCAgICA3MywgICAxMjMsICAgMTIwLCAgIDE0Niwg
ICAxMDYsICAgMTA2LCAgIDEyMiwKLSAgICAgIDUxLCAgICA1MiwgICAgNzIsICAgIDc2LCAgICA3
MSwgICAgNzEsICAgIDc3LCAgICAzOSwgICAxMjAsICAgIDcwLAotICAgICAxMDYsICAgIDg1LCAg
ICA4NiwgICAgODIsICAgIDg0LCAgICA1MywgICAgNTQsICAgIDg4LCAgICA4OSwgICAgNTUsCi0g
ICAgICA1NiwgICAgNTcsICAgIDU5LCAgICA1OCwgICAgOTMsICAgIDczLCAgICA3NSwgICAgNzIs
ICAgIDc3LCAgICA4MCwKLSAgICAgIDgwLCAgICA4MCwgICAxNjIsICAgIDcwLCAgICA3MCwgICAg
ODAsICAgIDgwLCAgIDEyMiwgICAgNzAsICAgIDc1LAotICAgICAxNTEsICAgIDYwLCAgICA2MSwg
ICAgNjIsICAgIDY5LCAgICA3OSwgICAxMjEsICAgIDc3LCAgICA4MCwgICAgNzUsCi0gICAgIDE0
OCwgICAgNzIsICAgIDczLCAgIDEyMywgICAxNDYsICAgIDczLCAgICA3MSwgICAgOTgsICAgMTIy
LCAgICA0MywKLSAgICAgIDQ4LCAgIDEwMSwgICAxMjAsICAgMTA2LCAgIDEwNiwgICAxMDgsICAg
MTA4LCAgIDExMCwgICAxMTAsICAgMTEwLAotICAgICAxMTAsICAgMTExLCAgIDExMSwgICAxMTUs
ICAgMTE2LCAgIDExNywgICAxMjIsICAgMTIzLCAgIDE0NSwgICAxNDgsCi0gICAgIDE2MywgICAx
MjIsICAgIDgwLCAgIDE2MSwgICAxNTUsICAgMTIwLCAgIDEyMCwgICAxMjMsICAgIDczLCAgICA3
MywKLSAgICAgIDc4LCAgICA3MywgICAgNDAsICAgMTQ3LCAgIDE1NiwgICAxNjQsICAgIDcxLCAg
IDEyMiwgICAxMzUsICAgMTU5LAotICAgICAxNTIsICAgIDczLCAgIDEyMCwgICAgNzAsICAgMTU5
LCAgIDE2NSwgICAxNjYsICAgMTQ4LCAgIDE1OCwgICAgNDMsCi0gICAgICA3MSwgICAgNzUsICAg
MTIyLCAgICA4MCwgICAgNzEsICAgIDE2LCAgICA3OSwgICAxNDksICAgMTUzLCAgIDE1NCwKLSAg
ICAgIDcxLCAgIDEyMiwgICAxNTMsICAgMTQ4LCAgIDE0NiwgICAgODAKKyAgICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MSwgICAgNDIsICAgIDQz
LAorICAgICAgNDQsICAgIDQ2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwgICAxMzAsICAg
MTM1LCAgIDEzNiwgICAxMzcsCisgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIs
ICAgMTQzLCAgIDE3MiwgICAxNzMsICAgMTc0LCAgICAzNywKKyAgICAgIDQ1LCAgIDE0MCwgICAg
NDUsICAgIDc2LCAgICA4MiwgICAxNzUsICAgIDczLCAgICA3OSwgICAgIDMsICAgIDMzLAorICAg
ICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OSwgICAgODIsICAgIDQ1LCAg
IDEzOSwgICAxNDEsCisgICAgICA3NCwgICAgIDAsICAgMTczLCAgIDE0MSwgICAgNzYsICAgMTQ1
LCAgICA3NiwgICAxNTgsICAgMTMyLCAgIDEzMSwKKyAgICAgMTM0LCAgIDEzOSwgICAxMzMsICAg
IDQ1LCAgICA3MiwgICAgNzQsICAgIDgxLCAgICA0NSwgICAgNDcsICAgIDQ4LAorICAgICAgNDks
ICAgIDUwLCAgICA1MywgICAgNTQsICAgIDcyLCAgICA4MywgICAgODQsICAgIDg2LCAgICA5Nywg
ICAgOTgsCisgICAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEw
NiwgICAxMDcsICAgMTA4LCAgIDEwOSwKKyAgICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAg
IDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5LAorICAgICAxMjAsICAgMTIx
LCAgIDEyNSwgICAxNDIsICAgIDgyLCAgIDE0NCwgICAxMzksICAgMTQ2LCAgIDE0NywgICAgMTMs
CisgICAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwgICAg
NzYsICAgIDc3LCAgICA4MiwKKyAgICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAgIDEyNiwg
ICAxMjcsICAgMTQyLCAgIDE1MSwgICAxNTIsICAgMTUzLAorICAgICAxNTQsICAgMTU5LCAgIDE2
MCwgICAxNjEsICAgMTY0LCAgIDE3MSwgICAgNDUsICAgMTMxLCAgIDEzNCwgICAgNzQsCisgICAg
ICA4MSwgICAgNzUsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwgICAxMjQsICAg
IDUzLCAgICA1NCwKKyAgICAgIDc0LCAgICA3OCwgICAgNzMsICAgIDczLCAgICA3OSwgICAgMzks
ICAgMTIyLCAgICA3MiwgICAxMDgsICAgIDg3LAorICAgICAgODgsICAgIDg0LCAgICA4NiwgICAg
NTUsICAgIDU2LCAgICA5MCwgICAgOTEsICAgIDU3LCAgICA1OCwgICAgNTksCisgICAgICA2MSwg
ICAgNjAsICAgIDk1LCAgICA3NSwgICAxNDYsICAgIDQ1LCAgIDE0OCwgICAxNDksICAgIDc3LCAg
IDE0NywKKyAgICAgIDgyLCAgICA4MiwgICAxNjYsICAgIDcyLCAgICA3MiwgICAgODIsICAgIDgy
LCAgIDEyNCwgICAgNzIsICAgIDc3LAorICAgICAxNTUsICAgIDYyLCAgICA2MywgICAgNjQsICAg
IDcxLCAgICA4MSwgICAxMjMsICAgIDc5LCAgICA4MiwgICAgNzcsCisgICAgIDE1MiwgICAgNzQs
ICAgIDc1LCAgIDEyNSwgICAxNTAsICAgIDc1LCAgICA3MywgICAxMDAsICAgMTI0LCAgICA0NSwK
KyAgICAgIDUwLCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEwOCwgICAxMTAsICAgMTEwLCAgIDEx
MiwgICAxMTIsICAgMTEyLAorICAgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTcsICAgMTE4LCAg
IDExOSwgICAxMjQsICAgIDc3LCAgICA3NCwgICAgNzksCisgICAgICA4MiwgICAxNTIsICAgMTY3
LCAgIDEyNCwgICAgODIsICAgMTY1LCAgIDE1OSwgICAxMjIsICAgMTIyLCAgIDEyNSwKKyAgICAg
IDc1LCAgICA3NSwgICAgODAsICAgMTI1LCAgIDE0OSwgICAgNDAsICAgMTUxLCAgIDE2MCwgICAx
NjgsICAgIDczLAorICAgICAxMjQsICAgMTM3LCAgIDE2MywgICAxNTYsICAgIDc1LCAgIDEyMiwg
ICAgNzUsICAgIDcyLCAgIDE2MywgICAxNjksCisgICAgIDE3MCwgICAxNTIsICAgMTYyLCAgICA0
NSwgICAgNzMsICAgIDc3LCAgIDEyNCwgICAgODIsICAgIDczLCAgICAxNiwKKyAgICAgIDgxLCAg
IDE1MywgICAxNTcsICAgMTU4LCAgICA3MywgICAxMjQsICAgMTU3LCAgIDE1MiwgICAxNTAsICAg
IDgyCiB9OwogCiAjZGVmaW5lIHl5ZXJyb2sJCSh5eWVycnN0YXR1cyA9IDApCkBAIC0xMzY3LDcg
KzEyODUsNyBAQCB3aGlsZSAoWVlJRCAoMCkpCiAgICB3ZSB3b24ndCBicmVhayB1c2VyIGNvZGU6
IHdoZW4gdGhlc2UgYXJlIHRoZSBsb2NhdGlvbnMgd2Uga25vdy4gICovCiAKICNpZm5kZWYgWVlf
TE9DQVRJT05fUFJJTlQKLSMgaWYgZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQ
RV9JU19UUklWSUFMCisjIGlmIFlZTFRZUEVfSVNfVFJJVklBTAogIyAgZGVmaW5lIFlZX0xPQ0FU
SU9OX1BSSU5UKEZpbGUsIExvYykJCQlcCiAgICAgIGZwcmludGYgKEZpbGUsICIlZC4lZC0lZC4l
ZCIsCQkJXAogCSAgICAgIChMb2MpLmZpcnN0X2xpbmUsIChMb2MpLmZpcnN0X2NvbHVtbiwJXApA
QCAtMTQ4MSwxNyArMTM5OSwyMCBAQCB5eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUs
IHl5dmFsdWVwLCBjb250ZXh0KQogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19D
OTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVND
X1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmludCAoeXl0eXBlX2ludDE2ICpib3R0b20s
IHl5dHlwZV9pbnQxNiAqdG9wKQoreXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqeXlib3R0
b20sIHl5dHlwZV9pbnQxNiAqeXl0b3ApCiAjZWxzZQogc3RhdGljIHZvaWQKLXl5X3N0YWNrX3By
aW50IChib3R0b20sIHRvcCkKLSAgICB5eXR5cGVfaW50MTYgKmJvdHRvbTsKLSAgICB5eXR5cGVf
aW50MTYgKnRvcDsKK3l5X3N0YWNrX3ByaW50ICh5eWJvdHRvbSwgeXl0b3ApCisgICAgeXl0eXBl
X2ludDE2ICp5eWJvdHRvbTsKKyAgICB5eXR5cGVfaW50MTYgKnl5dG9wOwogI2VuZGlmCiB7CiAg
IFlZRlBSSU5URiAoc3RkZXJyLCAiU3RhY2sgbm93Iik7Ci0gIGZvciAoOyBib3R0b20gPD0gdG9w
OyArK2JvdHRvbSkKLSAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsICpib3R0b20pOworICBm
b3IgKDsgeXlib3R0b20gPD0geXl0b3A7IHl5Ym90dG9tKyspCisgICAgeworICAgICAgaW50IHl5
Ym90ID0gKnl5Ym90dG9tOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCB5eWJvdCk7
CisgICAgfQogICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CiB9CiAKQEAgLTE1MjYsMTEgKzE0
NDcsMTEgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlydWxlLCBjb250ZXh0KQogICAvKiBU
aGUgc3ltYm9scyBiZWluZyByZWR1Y2VkLiAgKi8KICAgZm9yICh5eWkgPSAwOyB5eWkgPCB5eW5y
aHM7IHl5aSsrKQogICAgIHsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5
aSArIDEpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsK
ICAgICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5
aV0sCiAJCSAgICAgICAmKHl5dnNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKIAkJICAgICAgIAkJ
ICAgICAgICwgY29udGV4dCk7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOworICAgICAg
WVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KIApAQCAtMTgxMiwxMCArMTczMyw4
IEBAIHl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KQogCWJyZWFr
OwogICAgIH0KIH0KLQwKIAogLyogUHJldmVudCB3YXJuaW5ncyBmcm9tIC1XbWlzc2luZy1wcm90
b3R5cGVzLiAgKi8KLQogI2lmZGVmIFlZUEFSU0VfUEFSQU0KICNpZiBkZWZpbmVkIF9fU1REQ19f
IHx8IGRlZmluZWQgX19jcGx1c3BsdXMKIGludCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFN
KTsKQEAgLTE4MzQsMTAgKzE3NTMsOSBAQCBpbnQgeXlwYXJzZSAoKTsKIAogCiAKLQotLyotLS0t
LS0tLS0tLgotfCB5eXBhcnNlLiAgfAotYC0tLS0tLS0tLS0qLworLyotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLgorfCB5eXBhcnNlIG9yIHl5cHVzaF9wYXJzZS4gIHwKK2AtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KIAogI2lmZGVmIFlZUEFSU0VfUEFSQU0KICNpZiAoZGVmaW5lZCBfX1NU
RENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXApAQCAtMTg2MSw3NCArMTc3OSw3NSBAQCB5
eXBhcnNlIChjb250ZXh0KQogI2VuZGlmCiAjZW5kaWYKIHsKLSAgLyogVGhlIGxvb2stYWhlYWQg
c3ltYm9sLiAgKi8KKy8qIFRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KIGludCB5eWNoYXI7CiAK
LS8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworLyog
VGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KIFlZU1RZUEUg
eXlsdmFsOwogCi0vKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIuICAqLwotaW50IHl5
bmVycnM7Ci0KLSAgaW50IHl5c3RhdGU7Ci0gIGludCB5eW47Ci0gIGludCB5eXJlc3VsdDsKLSAg
LyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxl
ZC4gICovCi0gIGludCB5eWVycnN0YXR1czsKLSAgLyogTG9vay1haGVhZCB0b2tlbiBhcyBhbiBp
bnRlcm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8KLSAgaW50IHl5dG9rZW4gPSAw
OwotI2lmIFlZRVJST1JfVkVSQk9TRQotICAvKiBCdWZmZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCBh
bmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KLSAgY2hhciB5eW1zZ2J1ZlsxMjhdOwotICBjaGFy
ICp5eW1zZyA9IHl5bXNnYnVmOwotICBZWVNJWkVfVCB5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1z
Z2J1ZjsKLSNlbmRpZgotCi0gIC8qIFRocmVlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6Ci0gICAg
IGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMsCi0gICAgIGB5eXZzJzogcmVsYXRlZCB0byBzZW1h
bnRpYyB2YWx1ZXMsCi0gICAgIGB5eWxzJzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCisgICAgLyog
TnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KKyAgICBpbnQgeXluZXJyczsKIAot
ICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93
IHl5b3ZlcmZsb3cKLSAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisgICAg
aW50IHl5c3RhdGU7CisgICAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJy
b3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCisgICAgaW50IHl5ZXJyc3RhdHVzOwogCi0gIC8qIFRo
ZSBzdGF0ZSBzdGFjay4gICovCi0gIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07Ci0g
IHl5dHlwZV9pbnQxNiAqeXlzcyA9IHl5c3NhOwotICB5eXR5cGVfaW50MTYgKnl5c3NwOworICAg
IC8qIFRoZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgorICAgICAgIGB5eXNzJzogcmVsYXRlZCB0
byBzdGF0ZXMuCisgICAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcy4KIAot
ICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAqLwotICBZWVNUWVBFIHl5dnNhW1lZSU5J
VERFUFRIXTsKLSAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwotICBZWVNUWVBFICp5eXZzcDsKKyAg
ICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93
IHl5b3ZlcmZsb3cKKyAgICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KIAor
ICAgIC8qIFRoZSBzdGF0ZSBzdGFjay4gICovCisgICAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5J
VERFUFRIXTsKKyAgICB5eXR5cGVfaW50MTYgKnl5c3M7CisgICAgeXl0eXBlX2ludDE2ICp5eXNz
cDsKIAorICAgIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCisgICAgWVlTVFlQRSB5
eXZzYVtZWUlOSVRERVBUSF07CisgICAgWVlTVFlQRSAqeXl2czsKKyAgICBZWVNUWVBFICp5eXZz
cDsKIAotI2RlZmluZSBZWVBPUFNUQUNLKE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4p
KQotCi0gIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisgICAgWVlTSVpFX1Qg
eXlzdGFja3NpemU7CiAKKyAgaW50IHl5bjsKKyAgaW50IHl5cmVzdWx0OworICAvKiBMb29rYWhl
YWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCisg
IGludCB5eXRva2VuOwogICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0dXJuIHNlbWFudGlj
IHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQogICAgICBhY3Rpb24gcm91dGluZXMuICAqLwog
ICBZWVNUWVBFIHl5dmFsOwogCisjaWYgWVlFUlJPUl9WRVJCT1NFCisgIC8qIEJ1ZmZlciBmb3Ig
ZXJyb3IgbWVzc2FnZXMsIGFuZCBpdHMgYWxsb2NhdGVkIHNpemUuICAqLworICBjaGFyIHl5bXNn
YnVmWzEyOF07CisgIGNoYXIgKnl5bXNnID0geXltc2didWY7CisgIFlZU0laRV9UIHl5bXNnX2Fs
bG9jID0gc2l6ZW9mIHl5bXNnYnVmOworI2VuZGlmCisKKyNkZWZpbmUgWVlQT1BTVEFDSyhOKSAg
ICh5eXZzcCAtPSAoTiksIHl5c3NwIC09IChOKSkKIAogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJv
bHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBydWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hl
biBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4gICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAg
eXl0b2tlbiA9IDA7CisgIHl5c3MgPSB5eXNzYTsKKyAgeXl2cyA9IHl5dnNhOworICB5eXN0YWNr
c2l6ZSA9IFlZSU5JVERFUFRIOworCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBh
cnNlXG4iKSk7CiAKICAgeXlzdGF0ZSA9IDA7CiAgIHl5ZXJyc3RhdHVzID0gMDsKICAgeXluZXJy
cyA9IDA7Ci0gIHl5Y2hhciA9IFlZRU1QVFk7CQkvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQu
ICAqLworICB5eWNoYXIgPSBZWUVNUFRZOyAvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAq
LwogCiAgIC8qIEluaXRpYWxpemUgc3RhY2sgcG9pbnRlcnMuCiAgICAgIFdhc3RlIG9uZSBlbGVt
ZW50IG9mIHZhbHVlIGFuZCBsb2NhdGlvbiBzdGFjawogICAgICBzbyB0aGF0IHRoZXkgc3RheSBv
biB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgc3RhdGUgc3RhY2suCiAgICAgIFRoZSB3YXN0ZWQgZWxl
bWVudHMgYXJlIG5ldmVyIGluaXRpYWxpemVkLiAgKi8KLQogICB5eXNzcCA9IHl5c3M7CiAgIHl5
dnNwID0geXl2czsKIApAQCAtMTk1OCw3ICsxODc3LDYgQEAgaW50IHl5bmVycnM7CiAJWVlTVFlQ
RSAqeXl2czEgPSB5eXZzOwogCXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwogCi0KIAkvKiBF
YWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUK
IAkgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4gIFRoaXMgdXNlZCB0byBi
ZSBhCiAJICAgY29uZGl0aW9uYWwgYXJvdW5kIGp1c3QgdGhlIHR3byBleHRyYSBhcmdzLCBidXQg
dGhhdCBtaWdodApAQCAtMTk2Niw3ICsxODg0LDYgQEAgaW50IHl5bmVycnM7CiAJeXlvdmVyZmxv
dyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCiAJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVv
ZiAoKnl5c3NwKSwKIAkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAotCiAJ
CSAgICAmeXlzdGFja3NpemUpOwogCiAJeXlzcyA9IHl5c3MxOwpAQCAtMTk4OSw5ICsxOTA2LDgg
QEAgaW50IHl5bmVycnM7CiAJICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNU
QUNLX0JZVEVTICh5eXN0YWNrc2l6ZSkpOwogCWlmICghIHl5cHRyKQogCSAgZ290byB5eWV4aGF1
c3RlZGxhYjsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXNzKTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5
eXZzKTsKLQorCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOworCVlZU1RBQ0tf
UkVMT0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQog
CWlmICh5eXNzMSAhPSB5eXNzYSkKIAkgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwpAQCAtMjAwMiw3
ICsxOTE4LDYgQEAgaW50IHl5bmVycnM7CiAgICAgICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAx
OwogICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXplIC0gMTsKIAotCiAgICAgICBZWURQUklOVEYg
KChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCiAJCSAgKHVuc2lnbmVk
IGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOwogCkBAIC0yMDEyLDYgKzE5MjcsOSBAQCBpbnQgeXlu
ZXJyczsKIAogICBZWURQUklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlz
dGF0ZSkpOwogCisgIGlmICh5eXN0YXRlID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKICAg
Z290byB5eWJhY2t1cDsKIAogLyotLS0tLS0tLS0tLS4KQEAgLTIwMjAsMTYgKzE5MzgsMTYgQEAg
aW50IHl5bmVycnM7CiB5eWJhY2t1cDoKIAogICAvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5n
IGdpdmVuIHRoZSBjdXJyZW50IHN0YXRlLiAgUmVhZCBhCi0gICAgIGxvb2stYWhlYWQgdG9rZW4g
aWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAgICBsb29r
YWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAq
LwogCi0gIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5j
ZSB0byBsb29rLWFoZWFkIHRva2VuLiAgKi8KKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0
IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxvb2thaGVhZCB0b2tlbi4gICovCiAgIHl5biA9
IHl5cGFjdFt5eXN0YXRlXTsKICAgaWYgKHl5biA9PSBZWVBBQ1RfTklORikKICAgICBnb3RvIHl5
ZGVmYXVsdDsKIAotICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBk
b24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2th
aGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KIAotICAvKiBZWUNIQVIg
aXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4g
ICovCisgIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxv
b2thaGVhZCBzeW1ib2wuICAqLwogICBpZiAoeXljaGFyID09IFlZRU1QVFkpCiAgICAgewogICAg
ICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7CkBAIC0yMDYxLDIw
ICsxOTc5LDE2IEBAIHl5YmFja3VwOgogICAgICAgZ290byB5eXJlZHVjZTsKICAgICB9CiAKLSAg
aWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENvdW50IHRva2VucyBz
aGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKICAgICAgc3Rh
dHVzLiAgKi8KICAgaWYgKHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVzLS07CiAKLSAgLyog
U2hpZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0aGUgbG9va2FoZWFk
IHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXls
dmFsLCAmeXlsbG9jKTsKIAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuIHVubGVzcyBp
dCBpcyBlb2YuICAqLwotICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5Y2hhciA9IFlZRU1Q
VFk7CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5eWNoYXIgPSBZWUVN
UFRZOwogCiAgIHl5c3RhdGUgPSB5eW47CiAgICorK3l5dnNwID0geXlsdmFsOwpAQCAtMjE0Niwx
NCArMjA2MCwxNCBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdl
dFVuaXF1ZUlkKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDQ6CkBAIC0yMTcwLDcgKzIwODQsNyBAQCB5eXJlZHVjZToK
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5p
KTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDU6CkBAIC0yMTc5LDcgKzIwOTMsNyBAQCB5
eXJlZHVjZToKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFu
dFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5mKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjoKQEAgLTIxODgsMjEg
KzIxMDIsMjEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KCh5
eXZzcFsoMSkgLSAoMSldLmxleCkuYik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSA4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDk6CkBAIC0yMjc5LDE0ICsyMTkz
LDE0IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE6CkBAIC0y
Mzk5LDcgKzIzMTMsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgICAgICB9CiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMy5zdHJpbmcsIGl0J3MgZnJv
bSB0aGUgcG9vbAotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI6CkBAIC0y
NDEzLDcgKzIzMjcsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzoKQEAgLTI0MjcsNyArMjM0MSw3IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDE0OgpAQCAtMjQzNiw3ICsyMzUwLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGlmIChjb250
ZXh0LT5pbnRlZ2VyRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgIltdIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTU6CkBAIC0yNTM2LDE0ICsyNDUwLDE0IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGRlbGV0ZSBmbkNhbGw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTc6CkBAIC0yNTUyLDcgKzI0NjYsNyBAQCB5eXJlZHVjZToKICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKS5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBv
cnRlZCIsICIiLCAiIik7CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5
dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTg6CkBAIC0yNTYwLDcgKzI0NzQsNyBAQCB5eXJlZHVjZToK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
KTsKICAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5OgpAQCAtMjU2OCw3
ICsyNDgyLDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMSkgLSAoMildLmludGVybSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAyMDoKQEAgLTI1NzYsNyArMjQ5MCw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVu
Y3Rpb24pOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0gMDsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIxOgpAQCAtMjU4NCw3ICsyNDk4LDcgQEAgeXly
ZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVy
bU5vZGUgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjI6CkBAIC0y
NTk0LDcgKzI1MDgsNyBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmZ1bmN0aW9uKS0+YWRkUGFyYW1ldGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFsLmludGVy
bSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAg
ICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMzoK
QEAgLTI2MDQsMTQgKzI1MTgsMTQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZzcFsoMSkgLSAo
MyldLmludGVybSkuZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihwYXJhbSk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbjsK
ICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNDoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0uZnVuY3Rpb24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MjU6CkBAIC0yNjcwLDcgKzI1ODQsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVFR5cGUgdHlwZSgo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkpOwogICAgICAgICBURnVuY3Rpb24gKmZ1bmN0
aW9uID0gbmV3IFRGdW5jdGlvbigmdGVtcFN0cmluZywgdHlwZSwgb3ApOwogICAgICAgICAoeXl2
YWwuaW50ZXJtLmZ1bmN0aW9uKSA9IGZ1bmN0aW9uOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMjY6CkBAIC0yNjgxLDcgKzI1OTUsNyBAQCB5eXJlZHVjZToKICAgICAgICAg
VFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICBURnVuY3Rpb24gKmZ1
bmN0aW9uID0gbmV3IFRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlw
ZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNzoKQEAgLTI2OTIsMTQgKzI2MDYsMTQgQEAg
eXlyZWR1Y2U6CiAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAg
ICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5zdHJpbmcsIHR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9
IGZ1bmN0aW9uOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjg6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMjk6CkBAIC0yNzEzLDcgKzI2MjcsNyBAQCB5eXJlZHVjZToKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwog
ICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzMDoKQEAgLTI3
MjcsNyArMjY0MSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDMxOgpAQCAtMjc0OCwyNyArMjY2MiwyNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDMyOgogCi0g
ICAgeyAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAo
eXl2YWwuaW50ZXJtKS5vcCA9IEVPcE51bGw7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5saW5l
ID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE51
bGw7IH0KICAgICBicmVhazsKIAogICBjYXNlIDMzOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5s
aW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVP
cE5lZ2F0aXZlOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOZWdhdGl2ZTsgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMzQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTG9naWNhbE5vdDsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTG9naWNhbE5vdDsgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMzU6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM2OgpAQCAtMjc4MSw3ICsyNjk1LDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMzc6CkBAIC0yNzk0LDEyICsyNzA4LDEyIEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDM4OgogCi0g
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAzOToKQEAgLTI4MTEsNyArMjcyNSw3IEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDQw
OgpAQCAtMjgyMywxNyArMjczNywxNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0MToKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgNDI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDQzOgpAQCAtMjg0Nyw3ICsyNzYxLDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwog
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CiAgICAg
ICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDQ0OgpAQCAtMjg2MSw3
ICsyNzc1LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3Qo
ZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDQ1OgpA
QCAtMjg3NSw3ICsyNzg5LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5z
ZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDQ2OgpAQCAtMjg4OSwxMiArMjgwMywxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgNDc6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDQ4OgpAQCAtMjkwOCw3
ICsyODIyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3Qo
ZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDQ5OgpA
QCAtMjkyMiwyNyArMjgzNiwyNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIHVuaW9uQXJyYXkt
PnNldEJDb25zdChmYWxzZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgNTA6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDUxOgogCi0gICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSA1MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTM6CiAKLSAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBj
YXNlIDU0OgpAQCAtMjk1NiwxMiArMjg3MCwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgNTU6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDU2OgpAQCAtMjk3NSwx
MiArMjg4OSwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25z
dChmYWxzZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTc6
CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
IH0KICAgICBicmVhazsKIAogICBjYXNlIDU4OgpAQCAtMjk5NCwxMiArMjkwOCwxMiBAQCB5eXJl
ZHVjZToKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7CiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKICAgICAgICAgfQot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTk6CiAKLSAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDYwOgpAQCAtMzAxNywxMiArMjkzMSwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAg
ICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2MToKIAotICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgNjI6CkBAIC0zMDM2LDM5ICsyOTUwLDM5IEBAIHl5cmVkdWNlOgogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDYzOgog
Ci0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0g
RU9wQXNzaWduOyA7fQorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwu
aW50ZXJtKS5vcCA9IEVPcEFzc2lnbjsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjQ6CiAKLSAg
ICB7IEZSQUdfVkVSVF9PTkxZKCIqPSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAg
ICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2
YWwuaW50ZXJtKS5vcCA9IEVPcE11bEFzc2lnbjsgO30KKyAgICB7IEZSQUdfVkVSVF9PTkxZKCIq
PSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJtKS5saW5l
ID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE11
bEFzc2lnbjsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjU6CiAKLSAgICB7IEZSQUdfVkVSVF9P
TkxZKCIvPSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJt
KS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcERpdkFzc2lnbjsgO30KKyAgICB7IEZSQUdfVkVSVF9PTkxZKCIvPSIsICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcERpdkFzc2lnbjsgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgNjY6CiAKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247IDt9CisgICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQWRkQXNzaWduOyB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA2NzoKIAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5s
aW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcFN1YkFzc2lnbjsgO30KKyAgICB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BTdWJBc3NpZ247IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDY4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDY5OgpAQCAtMzA4MCw3
ICsyOTk0LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNzA6CkBAIC0zMDg5LDcgKzMwMDMsNyBAQCB5eXJlZHVjZToK
ICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgNzE6CkBAIC0zMTE4LDcgKzMwMzIsNyBAQCB5eXJlZHVjZToKICAgICAgICAgCiAg
ICAgICAgIHByb3RvdHlwZS0+c2V0T3AoRU9wUHJvdG90eXBlKTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9IHByb3RvdHlwZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAogICBjYXNlIDcyOgpAQCAtMzEyNyw3ICszMDQxLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGlm
ICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSkKICAgICAgICAgICAg
ICh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJtQWdncmVnYXRlLT5zZXRPcChFT3BEZWNs
YXJhdGlvbik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDczOgpAQCAtMzEzNSw3ICszMDQ5LDcgQEAgeXlyZWR1Y2U6CiAgICAgewog
ICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAoeXl2c3Bb
KDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlwZSwgKHl5dnNwWygyKSAtICg0KV0uaW50ZXJtLnBy
ZWNpc2lvbikgKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3NDoKQEAgLTMxNzIsMjEgKzMwODYsMjEg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLmxpbmU7CiAKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCoo
eXl2YWwuaW50ZXJtKS5mdW5jdGlvbik7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSA3NToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNzY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24p
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDc3OgpAQCAtMzE5OCw3ICszMTEyLDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0
ZXIoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGRlbGV0ZSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGU7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3ODoKQEAgLTMyMjAsNyArMzEzNCw3IEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmZ1bmN0aW9uKS0+YWRkUGFyYW1ldGVyKCh5eXZzcFsoMykgLSAoMyldLmludGVy
bSkucGFyYW0pOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSA3OToKQEAgLTMyMzksNyArMzE1Myw3IEBAIHl5cmVkdWNlOgogICAgICAgICBUVHlwZSB0eXBl
KCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSk7CiAgICAgICAgIGZ1bmN0aW9uID0gbmV3
IFRGdW5jdGlvbigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLnN0cmluZywgdHlwZSk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSA4MDoKQEAgLTMyNTQsNyArMzE2OCw3IEBAIHl5cmVkdWNlOgogICAg
ICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBu
ZXcgVFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKX07CiAgICAgICAgICh5eXZh
bC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFyYW07Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSA4MToKQEAgLTMyNzYsNyArMzE5MCw3IEBAIHl5cmVkdWNlOgogICAgICAgICBUUGFy
YW1ldGVyIHBhcmFtID0geyAoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgdHlwZSB9Owog
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5l
OwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgODI6CkBAIC0zMjg1LDcgKzMxOTksNyBAQCB5eXJlZHVjZToK
ICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwogICAg
ICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVy
bSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNw
WygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgODM6CkBAIC0zMjk2LDcgKzMyMTAsNyBAQCB5eXJlZHVjZToKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJy
b3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUsIEV2cVRlbXBvcmFyeSwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgODQ6CkBAIC0zMzA1LDcgKzMyMTksNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwogICAgICAg
ICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybSku
bGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygy
KSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgODU6CkBAIC0zMzE2LDM1ICszMjMwLDM1IEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJv
ckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGluZSwgRXZxVGVtcG9yYXJ5LCAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlw
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSA4NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFs
aWZpZXIpID0gRXZxSW47Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4NzoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW47Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4ODoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxT3V0OwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgODk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVy
KSA9IEV2cUluT3V0OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTA6CkBA
IC0zMzUyLDE0ICszMjY2LDE0IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgVFBhcmFtZXRl
ciBwYXJhbSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSkg
fTsKICAgICAgICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDkxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSA5MjoKQEAgLTMzNzksNyArMzI5Myw3IEBAIHl5cmVkdWNlOgogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoc3ltYm9sICYmIHZhcmlhYmxlKQog
ICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5MzoKQEAgLTM0MDEsNyArMzMxNSw3IEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2
c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSA5NDoKQEAgLTM0MjksNyArMzM0Myw3IEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgdHlwZS5zZXRBcnJheVNpemUoc2l6ZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgo
eXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2
c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNwWygzKSAtICg2KV0ubGV4KS5s
aW5lKSwgKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lKTsKICAgICAgICAgfQotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTU6CkBAIC0zNDUzLDcgKzMzNjcsNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDk2OgpAQCAtMzQ2MSw3ICszMzc1LDcgQEAgeXlyZWR1Y2U6
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICIiLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkpLCAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSksICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKS5saW5lKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDk3
OgpAQCAtMzQ4Myw3ICszMzk3LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAgICAgICAgICBz
eW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDk4OgpAQCAtMzQ5NSw3ICszNDA5LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
eW1ib2woMCwgKih5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0udHlwZSkpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwogICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlw
ZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5OToKQEAgLTM1MzEsNyAr
MzQ0NSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkK
ICAgICAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsK
ICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTAwOgpAQCAt
MzU1NSw3ICszNDY5LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAg
ICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMDE6CkBAIC0zNTY0
LDcgKzM0NzgsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVkVSVEVYX09OTFkoImludmFyaWFudCBk
ZWNsYXJhdGlvbiIsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0pLnF1YWxpZmllciA9IEV2cUludmFyaWFudFZhcnlpbmdPdXQ7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMDI6CkBAIC0zNTc3LDcgKzM0OTEsNyBAQCB5eXJlZHVjZToKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS5zZXRBcnJheShmYWxzZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDEwMzoKQEAgLTM2MDEsMTQgKzM1MTUsMTQgQEAgeXlyZWR1
Y2U6CiAgICAgICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikg
LSAoMildLmludGVybS50eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZp
ZXIgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA0OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA1OgpA
QCAtMzYxOCw3ICszNTMyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGlmIChjb250ZXh0LT5nbG9i
YWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9p
ZCwgRXZxQXR0cmlidXRlLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA2OgpAQCAtMzYzMCw3ICszNTQ0LDcgQEAgeXly
ZWR1Y2U6CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQs
IEV2cVZhcnlpbmdPdXQsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZx
VmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTA3OgpAQCAtMzY0Miw3ICszNTU2LDcgQEAgeXlyZWR1Y2U6
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUlu
dmFyaWFudFZhcnlpbmdPdXQsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwg
RXZxSW52YXJpYW50VmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA4OgpAQCAtMzY1MSw3ICszNTY1LDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpLCAidW5pZm9ybSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxMDk6CkBAIC0zNjY1LDcgKzM1NzksNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExMDoKQEAgLTM2NzMsMzUgKzM1ODcsMzUgQEAg
eXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNp
c2lvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5wcmVjaXNpb24pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTExOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtLnByZWNpc2lvbikgPSBFYnBIaWdoOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBF
YnBNZWRpdW07Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTM6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicExvdzsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExNDoKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExNToKQEAgLTM3MTcsNyArMzYzMSw3IEBAIHl5
cmVkdWNlOgogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgIH0KLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExNjoKQEAgLTM3MjUsNyArMzYzOSw3
IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxMTc6CkBAIC0zNzMzLDcgKzM2NDcsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExODoKQEAgLTM3NDEsNyArMzY1NSw3
IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDExOToKQEAgLTM3NDksNyArMzY2Myw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjA6CkBAIC0zNzU4LDcgKzM2NzIsNyBA
QCB5eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLmxpbmUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0
ZSgyKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyMToKQEAgLTM3Njcs
NyArMzY4MSw3IEBAIHl5cmVkdWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QWdncmVnYXRlKDMpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTIy
OgpAQCAtMzc3Niw3ICszNjkwLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9h
dCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMjM6CkBAIC0zNzg1LDcgKzM2OTksNyBAQCB5eXJlZHVjZToKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEJvb2wsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTI0OgpAQCAtMzc5NCw3ICszNzA4LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyNToKQEAgLTM4MDMsNyArMzcxNyw3IEBAIHl5
cmVkdWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjY6CkBAIC0zODEyLDcgKzM3
MjYsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dy
ZWdhdGUoMik7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjc6CkBAIC0z
ODIxLDcgKzM3MzUsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoMyk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
Mjg6CkBAIC0zODMwLDcgKzM3NDQsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidElu
dCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMjk6CkBAIC0zODQwLDcgKzM3NTQsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDEzMDoKQEAgLTM4NTAsNyArMzc2NCw3IEBAIHl5cmVk
dWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMsIHRy
dWUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMxOgpAQCAtMzg2MCw3
ICszNzc0LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxMzI6CkBAIC0zODY5LDcgKzM3ODMsNyBAQCB5eXJlZHVjZToKICAgICAgICAgRlJBR19WRVJU
X09OTFkoInNhbXBsZXIyRCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRTYW1wbGVyMkQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6CkBAIC0zODc4LDE5ICsz
NzkyLDQ1IEBAIHl5cmVkdWNlOgogICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckN1YmUi
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxl
ckN1YmUsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzQ6CiAKICAgICB7CisgICAgICAgIGlmICghY29udGV4
dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkgeworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAidW5z
dXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiLCAiIik7CisgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIH0KKyAgICAgICAgRlJBR19WRVJUX09OTFkoInNh
bXBsZXJFeHRlcm5hbE9FUyIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CisgICAgfQorICAgIGJyZWFrOworCisgIGNhc2UgMTM1OgorCisgICAgeworICAg
ICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfdGV4dHVyZV9yZWN0
YW5nbGUiKSkgeworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0IiwgIiIpOworICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICB9CisgICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJzYW1wbGVyMkRSZWN0IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CisgICAgfQorICAgIGJyZWFrOworCisgIGNhc2UgMTM2OgorCisgICAgewogICAg
ICAgICBGUkFHX1ZFUlRfT05MWSgic3RydWN0IiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpLmxpbmUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEzNToKKyAgY2Fz
ZSAxMzc6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0zOTAxLDQzICszODQxLDU1IEBAIHl5cmVk
dWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnVzZXJEZWYgPSAmc3RydWN0
dXJlOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM2OgorICBjYXNlIDEz
ODoKKworICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgzKV0ubGV4KS5zdHJpbmcpKSBjb250
ZXh0LT5yZWNvdmVyKCk7IH0KKyAgICBicmVhazsKKworICBjYXNlIDEzOToKIAogICAgIHsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5s
ZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChj
b250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg2KV0ubGV4KS5saW5lLCAq
KHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogCi0gICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoKHl5dnNwWyg0
KSAtICg1KV0uaW50ZXJtLnR5cGVMaXN0KSwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5n
KTsKLSAgICAgICAgVFZhcmlhYmxlKiB1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoKHl5dnNw
WygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICpzdHJ1Y3R1cmUsIHRydWUpOworICAgICAgICBUVHlw
ZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNSkgLSAoNildLmludGVybS50eXBlTGlz
dCksICooeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZyk7CisgICAgICAgIFRWYXJpYWJsZSog
dXNlclR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5n
LCAqc3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUu
aW5zZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMikgLSAoNSldLmxleCkubGluZSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikgLSAoNSld
LmxleCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLmxpbmUsICJyZWRlZmluaXRpb24iLCAoeXl2c3Bb
KDIpIC0gKDYpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNSldLmxl
eCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0
LCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNildLmxleCkubGluZSk7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkudXNlckRlZiA9IHN0cnVjdHVyZTsKLSAgICA7fQorICAgICAgICBj
b250ZXh0LT5leGl0U3RydWN0RGVjbGFyYXRpb24oKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxMzc6CisgIGNhc2UgMTQwOgorCisgICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3RE
ZWNsYXJhdGlvbigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfQorICAgIGJyZWFrOworCisgIGNh
c2UgMTQxOgogCiAgICAgewotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5
eXZzcFsoMykgLSAoNCldLmludGVybS50eXBlTGlzdCksIFRTdHJpbmcoIiIpKTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5
dnNwWygxKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5l
dyBUVHlwZSgoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0udHlwZUxpc3QpLCBUU3RyaW5nKCIiKSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1w
b3JhcnksICh5eXZzcFsoMSkgLSAoNSldLmxleCkubGluZSk7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkudXNlckRlZiA9IHN0cnVjdHVyZTsKLSAgICA7fQorICAgICAgICBjb250ZXh0LT5l
eGl0U3RydWN0RGVjbGFyYXRpb24oKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzg6
CisgIGNhc2UgMTQyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlTGlzdCk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxMzk6CisgIGNhc2UgMTQzOgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlTGlzdCk7
CkBAIC0zOTUwLDEwICszOTAyLDEwIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnB1c2hfYmFjaygoKih5eXZzcFsoMikgLSAo
MildLmludGVybS50eXBlTGlzdCkpW2ldKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTQwOgorICBjYXNlIDE0NDoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlTGlzdCkgPSAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0udHlwZUxpc3Qp
OwpAQCAtMzk4MiwyNiArMzkzNCwzMCBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICB0eXBl
LT5zZXRTdHJ1Y3QoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnVzZXJEZWYtPmdldFN0
cnVjdCgpKTsKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRUeXBlTmFtZSgoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkudXNlckRlZi0+Z2V0VHlwZU5hbWUoKSk7CiAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjaygoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwgKnR5cGUpKSB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDE6CisgIGNhc2UgMTQ1OgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0udHlwZUxpbmUpKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNl
IDE0MjoKKyAgY2FzZSAxNDY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxp
c3QpLT5wdXNoX2JhY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLnR5cGVMaW5lKSk7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDM6CisgIGNhc2UgMTQ3OgogCiAgICAg
ewogICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKQEAgLTQwMTAs
MTAgKzM5NjYsMTAgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUp
LnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlTGluZSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZS0+c2V0RmllbGROYW1lKCooeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLnN0cmluZyk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxNDQ6CisgIGNhc2UgMTQ4OgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+cmVz
ZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZSwgKih5eXZzcFsoMSkg
LSAoNCldLmxleCkuc3RyaW5nKSkKQEAgLTQwMjcsNzAgKzM5ODMsNzAgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCld
LmxleCkubGluZSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNp
emUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGVMaW5lKS50eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNDU6CisgIGNhc2UgMTQ5OgogCi0gICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxNDY6CisgIGNhc2UgMTUwOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2Rl
KTsgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ3OgorICBjYXNlIDE1MToKIAotICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOyB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNDg6CisgIGNhc2UgMTUyOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ5OgorICBjYXNlIDE1MzoKIAotICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2Rl
KTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE1MDoKKyAgY2Fz
ZSAxNTQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNTE6CisgIGNhc2UgMTU1OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTUyOgorICBjYXNlIDE1NjoKIAotICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE1
MzoKKyAgY2FzZSAxNTc6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNTQ6CisgIGNhc2UgMTU4OgogCi0gICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAwOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpID0gMDsgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTU1OgorICBjYXNlIDE1OToK
IAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQorICAgIHsgY29udGV4dC0+
c3ltYm9sVGFibGUucHVzaCgpOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTY6CisgIGNhc2Ug
MTYwOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICB7IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTc6CisgIGNh
c2UgMTYxOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmlu
dGVybUFnZ3JlZ2F0ZSkgIT0gMCkgewpAQCAtNDA5OCwyNyArNDA1NCwyNyBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5z
ZXRFbmRMaW5lKCh5eXZzcFsoNSkgLSAoNSldLmxleCkubGluZSk7CiAgICAgICAgIH0KICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gKHl5dnNwWygzKSAtICg1KV0uaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNTg6CisgIGNhc2UgMTYyOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTU5OgorICBjYXNlIDE2MzoKIAotICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2Rl
KTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE2MDoKKyAgY2Fz
ZSAxNjQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTYxOgorICBjYXNlIDE2NToKIAog
ICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpKSB7CkBAIC00MTI2LDY4ICs0MDgyLDY4IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5
dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5dnNw
WygzKSAtICgzKV0ubGV4KS5saW5lKTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjI6CisgIGNhc2UgMTY2Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtTm9kZSksIDApOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTYzOgor
ICBjYXNlIDE2NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRl
cm1Ob2RlKSwgMCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjQ6Cisg
IGNhc2UgMTY4OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgO30KKyAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOyB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNjU6CisgIGNhc2UgMTY5OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
c3RhdGljX2Nhc3Q8VEludGVybU5vZGUqPigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gc3RhdGlj
X2Nhc3Q8VEludGVybU5vZGUqPigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE2NjoKKyAgY2FzZSAxNzA6CiAKICAgICB7
CiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDUpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oKHl5dnNwWygzKSAt
ICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5u
b2RlUGFpciksICh5eXZzcFsoMSkgLSAoNSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNjc6CisgIGNhc2UgMTcxOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1Ob2RlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNjg6CisgIGNhc2UgMTcyOgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1O
b2RlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAwOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY5OgorICBjYXNlIDE3MzoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0TGlu
ZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxNzA6CisgIGNhc2UgMTc0OgogCiAgICAgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50
ZXJtTm9kZTsKQEAgLTQyMDIsMjkgKzQxNTgsMjkgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAwOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNzE6CisgIGNhc2UgMTc1OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7
ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRh
YmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNzI6CisgIGNhc2UgMTc2OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1i
b2xUYWJsZS5wb3AoKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICh5eXZzcFsoNCkgLSAoNild
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50
ZXJtTm9kZSksICh5eXZzcFsoMSkgLSAoNildLmxleCkubGluZSk7CiAgICAgICAgIC0tY29udGV4
dC0+bG9vcE5lc3RpbmdMZXZlbDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNl
IDE3MzoKKyAgY2FzZSAxNzc6CiAKLSAgICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsg
O30KKyAgICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTc0OgorICBjYXNlIDE3ODoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmJv
b2xFcnJvckNoZWNrKCh5eXZzcFsoOCkgLSAoOCldLmxleCkubGluZSwgKHl5dnNwWyg2KSAtICg4
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQpAQCAtNDIzMiw2OCArNDE4OCw2OCBAQCB5eXJl
ZHVjZToKIAogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAoeXl2c3BbKDYpIC0gKDgpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5dnNwWygzKSAtICg4KV0uaW50ZXJtLmludGVybU5v
ZGUpLCAoeXl2c3BbKDQpIC0gKDgpXS5sZXgpLmxpbmUpOwogICAgICAgICAtLWNvbnRleHQtPmxv
b3BOZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzU6
CisgIGNhc2UgMTc5OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1
c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNzY6CisgIGNhc2UgMTgwOgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5wb3AoKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRm9yLCAoeXl2c3BbKDQpIC0gKDcpXS5pbnRlcm0uaW50
ZXJtTm9kZSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3
KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVk
Kj4oKHl5dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiksICh5eXZzcFsoNykg
LSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5dnNwWygxKSAtICg3KV0ubGV4KS5saW5lKTsK
ICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTc3OgorICBjYXNlIDE4MToKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1O
b2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE3ODoKKyAgY2FzZSAx
ODI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNzk6CisgIGNhc2UgMTgzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE4MDoKKyAgY2Fz
ZSAxODQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODE6CisgIGNhc2UgMTg1
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZz
cFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICAoeXl2YWwuaW50
ZXJtLm5vZGVQYWlyKS5ub2RlMiA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxODI6CisgIGNhc2UgMTg2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5v
ZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiA9ICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTgzOgorICBjYXNlIDE4NzoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQt
Pmxvb3BOZXN0aW5nTGV2ZWwgPD0gMCkgewpAQCAtNDMwMSwxMCArNDI1NywxMCBAQCB5eXJlZHVj
ZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5j
aChFT3BDb250aW51ZSwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDE4NDoKKyAgY2FzZSAxODg6CiAKICAgICB7CiAgICAg
ICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDApIHsKQEAgLTQzMTIsMTAgKzQy
NjgsMTAgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6CisgIGNhc2UgMTg5Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMSkgLSAoMildLmxleCkubGlu
ZSk7CkBAIC00MzIzLDEwICs0Mjc5LDEwIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAibm9uLXZvaWQgZnVuY3Rpb24g
bXVzdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBj
YXNlIDE4NjoKKyAgY2FzZSAxOTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgKHl5
dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMSkgLSAoMyld
LmxleCkubGluZSk7CkBAIC00MzM4LDQ4ICs0Mjk0LDQ4IEBAIHl5cmVkdWNlOgogICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lLCAiZnVuY3Rpb24g
cmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iLCAiIik7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDE4NzoKKyAgY2FzZSAxOTE6CiAKICAgICB7CiAgICAgICAgIEZSQUdfT05M
WSgiZGlzY2FyZCIsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVP
cEtpbGwsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxODg6CisgIGNhc2UgMTkyOgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5v
ZGUpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODk6CisgIGNhc2UgMTkz
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVy
bU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwogICAgICAg
ICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTA6CisgIGNhc2UgMTk0OgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkx
OgorICBjYXNlIDE5NToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDE5MjoKKyAgY2FzZSAxOTY6CiAKICAgICB7CiAgICAgICAg
IFRGdW5jdGlvbiogZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9u
OwpAQCAtNDQ2MSwxMCArNDQxNywxMCBAQCB5eXJlZHVjZToKICAgICAgICAgY29udGV4dC0+aW50
ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMs
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CiAgICAgICAgICh5eXZzcFsoMSkgLSAo
MSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4
dC0+bG9vcE5lc3RpbmdMZXZlbCA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxOTM6CisgIGNhc2UgMTk3OgogCiAgICAgewogICAgICAgICAvLz8/IENoZWNrIHRoYXQg
YWxsIHBhdGhzIHJldHVybiBhIHZhbHVlIGlmIHJldHVybiB0eXBlICE9IHZvaWQgPwpAQCAtNDQ4
NywxMSArNDQ0MywxMCBAQCB5eXJlZHVjZToKIAogICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybU5vZGUpICYmICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1O
b2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKSkKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldEVuZExpbmUoKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRFbmRMaW5lKCkpOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAqLwogCiAg
ICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CkBAIC00NTAzLDcgKzQ0NTgsNiBAQCB5eXJlZHVj
ZToKIAogICAqKyt5eXZzcCA9IHl5dmFsOwogCi0KICAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3Vs
dCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2Vz
IHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCiAg
ICAgIG51bWJlciByZWR1Y2VkIGJ5LiAgKi8KQEAgLTQ1NjgsNyArNDUyMiw3IEBAIHl5ZXJybGFi
OgogCiAgIGlmICh5eWVycnN0YXR1cyA9PSAzKQogICAgIHsKLSAgICAgIC8qIElmIGp1c3QgdHJp
ZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIGFuCisgICAgICAv
KiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVy
IGFuCiAJIGVycm9yLCBkaXNjYXJkIGl0LiAgKi8KIAogICAgICAgaWYgKHl5Y2hhciA8PSBZWUVP
RikKQEAgLTQ1ODUsNyArNDUzOSw3IEBAIHl5ZXJybGFiOgogCX0KICAgICB9CiAKLSAgLyogRWxz
ZSB3aWxsIHRyeSB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBl
cnJvcgorICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBz
aGlmdGluZyB0aGUgZXJyb3IKICAgICAgdG9rZW4uICAqLwogICBnb3RvIHl5ZXJybGFiMTsKIApA
QCAtNDY0Miw5ICs0NTk2LDYgQEAgeXllcnJsYWIxOgogICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5
c3MsIHl5c3NwKTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBU
OwotCiAgICorK3l5dnNwID0geXlsdmFsOwogCiAKQEAgLTQ2NjksNyArNDYyMCw3IEBAIHl5YWJv
cnRsYWI6CiAgIHl5cmVzdWx0ID0gMTsKICAgZ290byB5eXJldHVybjsKIAotI2lmbmRlZiB5eW92
ZXJmbG93CisjaWYgIWRlZmluZWQoeXlvdmVyZmxvdykgfHwgWVlFUlJPUl9WRVJCT1NFCiAvKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCiB8IHl5ZXho
YXVzdGVkbGFiIC0tIG1lbW9yeSBleGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CiBgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC00NjgwLDcgKzQ2
MzEsNyBAQCB5eWV4aGF1c3RlZGxhYjoKICNlbmRpZgogCiB5eXJldHVybjoKLSAgaWYgKHl5Y2hh
ciAhPSBZWUVPRiAmJiB5eWNoYXIgIT0gWVlFTVBUWSkKKyAgaWYgKHl5Y2hhciAhPSBZWUVNUFRZ
KQogICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQiLAogCQkg
eXl0b2tlbiwgJnl5bHZhbCwgY29udGV4dCk7CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1i
b2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgKaW5kZXggZmE4NDgwZDNh
ZDExMGUxYTVjMzdiMDZkYTZkYzU4NjA2NzE4NDc1OC4uOTg3YzMwODg2Yzc1ZGZhN2RmNTBkNDli
MmM4NGMwMGQ5ODhlM2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgKQEAgLTEsMjQgKzEsMjMgQEAKLS8qIEEgQmlzb24gcGFy
c2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMuICAqLwogCi0vKiBTa2VsZXRvbiBpbnRlcmZhY2Ug
Zm9yIEJpc29uJ3MgWWFjYy1saWtlIHBhcnNlcnMgaW4gQworLyogQSBCaXNvbiBwYXJzZXIsIG1h
ZGUgYnkgR05VIEJpc29uIDIuNC4xLiAgKi8KIAotICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5
LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2CisvKiBTa2Vs
ZXRvbiBpbnRlcmZhY2UgZm9yIEJpc29uJ3MgWWFjYy1saWtlIHBhcnNlcnMgaW4gQworICAgCisg
ICAgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIsIDIw
MDMsIDIwMDQsIDIwMDUsIDIwMDYKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot
Ci0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yIG1vZGlmeQorICAgCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5
b3VyIG9wdGlvbikKLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotCisgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIAogICAgVGhpcyBwcm9ncmFtIGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQorICAgCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4gICovCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v
d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKIC8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24s
IHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucwogICAgcGFydCBvciBh
bGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsK
QEAgLTI5LDEwICsyOCwxMSBAQAogICAgc3BlY2lhbCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1
c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUgcmVzdWx0aW5nCiAgICBCaXNvbiBvdXRwdXQgZmlsZXMg
dG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSB3
aXRob3V0IHRoaXMgc3BlY2lhbCBleGNlcHRpb24uCi0KKyAgIAogICAgVGhpcyBzcGVjaWFsIGV4
Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbgogICAg
dmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLwogCisKIC8qIFRva2Vucy4gICovCiAjaWZuZGVmIFlZ
VE9LRU5UWVBFCiAjIGRlZmluZSBZWVRPS0VOVFlQRQpAQCAtNzksMTU5ICs3OSw2OSBAQAogICAg
ICBXSElMRSA9IDI5NSwKICAgICAgU0FNUExFUjJEID0gMjk2LAogICAgICBTQU1QTEVSQ1VCRSA9
IDI5NywKLSAgICAgSURFTlRJRklFUiA9IDI5OCwKLSAgICAgVFlQRV9OQU1FID0gMjk5LAotICAg
ICBGTE9BVENPTlNUQU5UID0gMzAwLAotICAgICBJTlRDT05TVEFOVCA9IDMwMSwKLSAgICAgQk9P
TENPTlNUQU5UID0gMzAyLAotICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDMsCi0gICAgIExFRlRf
T1AgPSAzMDQsCi0gICAgIFJJR0hUX09QID0gMzA1LAotICAgICBJTkNfT1AgPSAzMDYsCi0gICAg
IERFQ19PUCA9IDMwNywKLSAgICAgTEVfT1AgPSAzMDgsCi0gICAgIEdFX09QID0gMzA5LAotICAg
ICBFUV9PUCA9IDMxMCwKLSAgICAgTkVfT1AgPSAzMTEsCi0gICAgIEFORF9PUCA9IDMxMiwKLSAg
ICAgT1JfT1AgPSAzMTMsCi0gICAgIFhPUl9PUCA9IDMxNCwKLSAgICAgTVVMX0FTU0lHTiA9IDMx
NSwKLSAgICAgRElWX0FTU0lHTiA9IDMxNiwKLSAgICAgQUREX0FTU0lHTiA9IDMxNywKLSAgICAg
TU9EX0FTU0lHTiA9IDMxOCwKLSAgICAgTEVGVF9BU1NJR04gPSAzMTksCi0gICAgIFJJR0hUX0FT
U0lHTiA9IDMyMCwKLSAgICAgQU5EX0FTU0lHTiA9IDMyMSwKLSAgICAgWE9SX0FTU0lHTiA9IDMy
MiwKLSAgICAgT1JfQVNTSUdOID0gMzIzLAotICAgICBTVUJfQVNTSUdOID0gMzI0LAotICAgICBM
RUZUX1BBUkVOID0gMzI1LAotICAgICBSSUdIVF9QQVJFTiA9IDMyNiwKLSAgICAgTEVGVF9CUkFD
S0VUID0gMzI3LAotICAgICBSSUdIVF9CUkFDS0VUID0gMzI4LAotICAgICBMRUZUX0JSQUNFID0g
MzI5LAotICAgICBSSUdIVF9CUkFDRSA9IDMzMCwKLSAgICAgRE9UID0gMzMxLAotICAgICBDT01N
QSA9IDMzMiwKLSAgICAgQ09MT04gPSAzMzMsCi0gICAgIEVRVUFMID0gMzM0LAotICAgICBTRU1J
Q09MT04gPSAzMzUsCi0gICAgIEJBTkcgPSAzMzYsCi0gICAgIERBU0ggPSAzMzcsCi0gICAgIFRJ
TERFID0gMzM4LAotICAgICBQTFVTID0gMzM5LAotICAgICBTVEFSID0gMzQwLAotICAgICBTTEFT
SCA9IDM0MSwKLSAgICAgUEVSQ0VOVCA9IDM0MiwKLSAgICAgTEVGVF9BTkdMRSA9IDM0MywKLSAg
ICAgUklHSFRfQU5HTEUgPSAzNDQsCi0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0NSwKLSAgICAgQ0FS
RVQgPSAzNDYsCi0gICAgIEFNUEVSU0FORCA9IDM0NywKLSAgICAgUVVFU1RJT04gPSAzNDgKKyAg
ICAgU0FNUExFUl9FWFRFUk5BTF9PRVMgPSAyOTgsCisgICAgIFNBTVBMRVIyRFJFQ1QgPSAyOTks
CisgICAgIElERU5USUZJRVIgPSAzMDAsCisgICAgIFRZUEVfTkFNRSA9IDMwMSwKKyAgICAgRkxP
QVRDT05TVEFOVCA9IDMwMiwKKyAgICAgSU5UQ09OU1RBTlQgPSAzMDMsCisgICAgIEJPT0xDT05T
VEFOVCA9IDMwNCwKKyAgICAgRklFTERfU0VMRUNUSU9OID0gMzA1LAorICAgICBMRUZUX09QID0g
MzA2LAorICAgICBSSUdIVF9PUCA9IDMwNywKKyAgICAgSU5DX09QID0gMzA4LAorICAgICBERUNf
T1AgPSAzMDksCisgICAgIExFX09QID0gMzEwLAorICAgICBHRV9PUCA9IDMxMSwKKyAgICAgRVFf
T1AgPSAzMTIsCisgICAgIE5FX09QID0gMzEzLAorICAgICBBTkRfT1AgPSAzMTQsCisgICAgIE9S
X09QID0gMzE1LAorICAgICBYT1JfT1AgPSAzMTYsCisgICAgIE1VTF9BU1NJR04gPSAzMTcsCisg
ICAgIERJVl9BU1NJR04gPSAzMTgsCisgICAgIEFERF9BU1NJR04gPSAzMTksCisgICAgIE1PRF9B
U1NJR04gPSAzMjAsCisgICAgIExFRlRfQVNTSUdOID0gMzIxLAorICAgICBSSUdIVF9BU1NJR04g
PSAzMjIsCisgICAgIEFORF9BU1NJR04gPSAzMjMsCisgICAgIFhPUl9BU1NJR04gPSAzMjQsCisg
ICAgIE9SX0FTU0lHTiA9IDMyNSwKKyAgICAgU1VCX0FTU0lHTiA9IDMyNiwKKyAgICAgTEVGVF9Q
QVJFTiA9IDMyNywKKyAgICAgUklHSFRfUEFSRU4gPSAzMjgsCisgICAgIExFRlRfQlJBQ0tFVCA9
IDMyOSwKKyAgICAgUklHSFRfQlJBQ0tFVCA9IDMzMCwKKyAgICAgTEVGVF9CUkFDRSA9IDMzMSwK
KyAgICAgUklHSFRfQlJBQ0UgPSAzMzIsCisgICAgIERPVCA9IDMzMywKKyAgICAgQ09NTUEgPSAz
MzQsCisgICAgIENPTE9OID0gMzM1LAorICAgICBFUVVBTCA9IDMzNiwKKyAgICAgU0VNSUNPTE9O
ID0gMzM3LAorICAgICBCQU5HID0gMzM4LAorICAgICBEQVNIID0gMzM5LAorICAgICBUSUxERSA9
IDM0MCwKKyAgICAgUExVUyA9IDM0MSwKKyAgICAgU1RBUiA9IDM0MiwKKyAgICAgU0xBU0ggPSAz
NDMsCisgICAgIFBFUkNFTlQgPSAzNDQsCisgICAgIExFRlRfQU5HTEUgPSAzNDUsCisgICAgIFJJ
R0hUX0FOR0xFID0gMzQ2LAorICAgICBWRVJUSUNBTF9CQVIgPSAzNDcsCisgICAgIENBUkVUID0g
MzQ4LAorICAgICBBTVBFUlNBTkQgPSAzNDksCisgICAgIFFVRVNUSU9OID0gMzUwCiAgICB9Owog
I2VuZGlmCi0vKiBUb2tlbnMuICAqLwotI2RlZmluZSBJTlZBUklBTlQgMjU4Ci0jZGVmaW5lIEhJ
R0hfUFJFQ0lTSU9OIDI1OQotI2RlZmluZSBNRURJVU1fUFJFQ0lTSU9OIDI2MAotI2RlZmluZSBM
T1dfUFJFQ0lTSU9OIDI2MQotI2RlZmluZSBQUkVDSVNJT04gMjYyCi0jZGVmaW5lIEFUVFJJQlVU
RSAyNjMKLSNkZWZpbmUgQ09OU1RfUVVBTCAyNjQKLSNkZWZpbmUgQk9PTF9UWVBFIDI2NQotI2Rl
ZmluZSBGTE9BVF9UWVBFIDI2NgotI2RlZmluZSBJTlRfVFlQRSAyNjcKLSNkZWZpbmUgQlJFQUsg
MjY4Ci0jZGVmaW5lIENPTlRJTlVFIDI2OQotI2RlZmluZSBETyAyNzAKLSNkZWZpbmUgRUxTRSAy
NzEKLSNkZWZpbmUgRk9SIDI3MgotI2RlZmluZSBJRiAyNzMKLSNkZWZpbmUgRElTQ0FSRCAyNzQK
LSNkZWZpbmUgUkVUVVJOIDI3NQotI2RlZmluZSBCVkVDMiAyNzYKLSNkZWZpbmUgQlZFQzMgMjc3
Ci0jZGVmaW5lIEJWRUM0IDI3OAotI2RlZmluZSBJVkVDMiAyNzkKLSNkZWZpbmUgSVZFQzMgMjgw
Ci0jZGVmaW5lIElWRUM0IDI4MQotI2RlZmluZSBWRUMyIDI4MgotI2RlZmluZSBWRUMzIDI4Mwot
I2RlZmluZSBWRUM0IDI4NAotI2RlZmluZSBNQVRSSVgyIDI4NQotI2RlZmluZSBNQVRSSVgzIDI4
NgotI2RlZmluZSBNQVRSSVg0IDI4NwotI2RlZmluZSBJTl9RVUFMIDI4OAotI2RlZmluZSBPVVRf
UVVBTCAyODkKLSNkZWZpbmUgSU5PVVRfUVVBTCAyOTAKLSNkZWZpbmUgVU5JRk9STSAyOTEKLSNk
ZWZpbmUgVkFSWUlORyAyOTIKLSNkZWZpbmUgU1RSVUNUIDI5MwotI2RlZmluZSBWT0lEX1RZUEUg
Mjk0Ci0jZGVmaW5lIFdISUxFIDI5NQotI2RlZmluZSBTQU1QTEVSMkQgMjk2Ci0jZGVmaW5lIFNB
TVBMRVJDVUJFIDI5NwotI2RlZmluZSBJREVOVElGSUVSIDI5OAotI2RlZmluZSBUWVBFX05BTUUg
Mjk5Ci0jZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAwCi0jZGVmaW5lIElOVENPTlNUQU5UIDMwMQot
I2RlZmluZSBCT09MQ09OU1RBTlQgMzAyCi0jZGVmaW5lIEZJRUxEX1NFTEVDVElPTiAzMDMKLSNk
ZWZpbmUgTEVGVF9PUCAzMDQKLSNkZWZpbmUgUklHSFRfT1AgMzA1Ci0jZGVmaW5lIElOQ19PUCAz
MDYKLSNkZWZpbmUgREVDX09QIDMwNwotI2RlZmluZSBMRV9PUCAzMDgKLSNkZWZpbmUgR0VfT1Ag
MzA5Ci0jZGVmaW5lIEVRX09QIDMxMAotI2RlZmluZSBORV9PUCAzMTEKLSNkZWZpbmUgQU5EX09Q
IDMxMgotI2RlZmluZSBPUl9PUCAzMTMKLSNkZWZpbmUgWE9SX09QIDMxNAotI2RlZmluZSBNVUxf
QVNTSUdOIDMxNQotI2RlZmluZSBESVZfQVNTSUdOIDMxNgotI2RlZmluZSBBRERfQVNTSUdOIDMx
NwotI2RlZmluZSBNT0RfQVNTSUdOIDMxOAotI2RlZmluZSBMRUZUX0FTU0lHTiAzMTkKLSNkZWZp
bmUgUklHSFRfQVNTSUdOIDMyMAotI2RlZmluZSBBTkRfQVNTSUdOIDMyMQotI2RlZmluZSBYT1Jf
QVNTSUdOIDMyMgotI2RlZmluZSBPUl9BU1NJR04gMzIzCi0jZGVmaW5lIFNVQl9BU1NJR04gMzI0
Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI1Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMyNgotI2RlZmlu
ZSBMRUZUX0JSQUNLRVQgMzI3Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzI4Ci0jZGVmaW5lIExF
RlRfQlJBQ0UgMzI5Ci0jZGVmaW5lIFJJR0hUX0JSQUNFIDMzMAotI2RlZmluZSBET1QgMzMxCi0j
ZGVmaW5lIENPTU1BIDMzMgotI2RlZmluZSBDT0xPTiAzMzMKLSNkZWZpbmUgRVFVQUwgMzM0Ci0j
ZGVmaW5lIFNFTUlDT0xPTiAzMzUKLSNkZWZpbmUgQkFORyAzMzYKLSNkZWZpbmUgREFTSCAzMzcK
LSNkZWZpbmUgVElMREUgMzM4Ci0jZGVmaW5lIFBMVVMgMzM5Ci0jZGVmaW5lIFNUQVIgMzQwCi0j
ZGVmaW5lIFNMQVNIIDM0MQotI2RlZmluZSBQRVJDRU5UIDM0MgotI2RlZmluZSBMRUZUX0FOR0xF
IDM0MwotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDQKLSNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NQot
I2RlZmluZSBDQVJFVCAzNDYKLSNkZWZpbmUgQU1QRVJTQU5EIDM0NwotI2RlZmluZSBRVUVTVElP
TiAzNDgKLQogCiAKIAogI2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBF
X0lTX0RFQ0xBUkVECiB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKLQogeworCisKICAgICBzdHJ1Y3Qg
ewogICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKQEAgLTI2MSwxNCAr
MTcxLDE1IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICAgICAgVFR5cGVMaXN0KiB0
eXBlTGlzdDsKICAgICAgICAgfTsKICAgICB9IGludGVybTsKLX0KLS8qIExpbmUgMTUyOSBvZiB5
YWNjLmMuICAqLwogCi0JWVlTVFlQRTsKKworCit9IFlZU1RZUEU7CisjIGRlZmluZSBZWVNUWVBF
X0lTX1RSSVZJQUwgMQogIyBkZWZpbmUgeXlzdHlwZSBZWVNUWVBFIC8qIG9ic29sZXNjZW50OyB3
aWxsIGJlIHdpdGhkcmF3biAqLwogIyBkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAxCi0jIGRl
ZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogI2VuZGlmCiAKIAogCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybU91dC5jcHAKaW5kZXggNzk4YTY5
YWY3ZWI2NDdjNWFmMmNkNDJmMTkwOGNlYmU3ZTkxOGNiZi4uZTgzYzdiNzJmMmEzMDg2MTI2MGJl
YWZlMWRjNTA0ZGRiNGRhMDI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2ludGVybU91dC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2ludGVybU91dC5jcHAKQEAgLTI2MSw2ICsyNjEsOCBAQCBib29sIFRPdXRw
dXRUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRl
KiBub2RlKQogICAgICAgICBjYXNlIEVPcFJlZnJhY3Q6ICAgICAgIG91dCA8PCAicmVmcmFjdCI7
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BNdWw6ICAgICAgICAgICBv
dXQgPDwgImNvbXBvbmVudC13aXNlIG11bHRpcGx5IjsgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBF
T3BEZWNsYXJhdGlvbjogICBvdXQgPDwgIkRlY2xhcmF0aW9uOiAiOyAgIGJyZWFrOworCiAgICAg
ICAgIGRlZmF1bHQ6IG91dC5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIkJhZCBhZ2dyZWdhdGlvbiBv
cCIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2ludGVybWVkaWF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2ludGVybWVkaWF0ZS5oCmluZGV4IGE4YWY1YWIwNjdkMjZmZDA3ZDFlODY1MTAyYTY0NmM0
NDM0MGU5ZjUuLjU0NDE1NTdjYTczNDRlNjhjOTY5MWI2YjAzYmNjY2U1YmM3YjE2OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1lZGlhdGUu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRl
LmgKQEAgLTQxMCw4ICs0MTAsOCBAQCBwcm90ZWN0ZWQ6CiAvLwogY2xhc3MgVEludGVybVVuYXJ5
IDogcHVibGljIFRJbnRlcm1PcGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgVEludGVybVVuYXJ5KFRP
cGVyYXRvciBvLCBUVHlwZSYgdCkgOiBUSW50ZXJtT3BlcmF0b3IobywgdCksIG9wZXJhbmQoMCkg
e30KLSAgICBUSW50ZXJtVW5hcnkoVE9wZXJhdG9yIG8pIDogVEludGVybU9wZXJhdG9yKG8pLCBv
cGVyYW5kKDApIHt9CisgICAgVEludGVybVVuYXJ5KFRPcGVyYXRvciBvLCBUVHlwZSYgdCkgOiBU
SW50ZXJtT3BlcmF0b3IobywgdCksIG9wZXJhbmQoMCksIHVzZUVtdWxhdGVkRnVuY3Rpb24oZmFs
c2UpIHt9CisgICAgVEludGVybVVuYXJ5KFRPcGVyYXRvciBvKSA6IFRJbnRlcm1PcGVyYXRvcihv
KSwgb3BlcmFuZCgwKSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkge30KIAogICAgIHZpcnR1
YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKik7CiAgICAgdmlydHVhbCBUSW50ZXJt
VW5hcnkqIGdldEFzVW5hcnlOb2RlKCkgeyByZXR1cm4gdGhpczsgfQpAQCAtNDIwLDggKzQyMCwx
NSBAQCBwdWJsaWM6CiAgICAgVEludGVybVR5cGVkKiBnZXRPcGVyYW5kKCkgeyByZXR1cm4gb3Bl
cmFuZDsgfSAgICAKICAgICBib29sIHByb21vdGUoVEluZm9TaW5rJik7CiAKKyAgICB2b2lkIHNl
dFVzZUVtdWxhdGVkRnVuY3Rpb24oKSB7IHVzZUVtdWxhdGVkRnVuY3Rpb24gPSB0cnVlOyB9Cisg
ICAgYm9vbCBnZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyByZXR1cm4gdXNlRW11bGF0ZWRGdW5j
dGlvbjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgVEludGVybVR5cGVkKiBvcGVyYW5kOworCisgICAg
Ly8gSWYgc2V0IHRvIHRydWUsIHJlcGxhY2UgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGNhbGwgd2l0
aCBhbiBlbXVsYXRlZCBvbmUKKyAgICAvLyB0byB3b3JrIGFyb3VuZCBkcml2ZXIgYnVncy4KKyAg
ICBib29sIHVzZUVtdWxhdGVkRnVuY3Rpb247CiB9OwogCiB0eXBlZGVmIFRWZWN0b3I8VEludGVy
bU5vZGUqPiBUSW50ZXJtU2VxdWVuY2U7CkBAIC00MzIsOCArNDM5LDggQEAgdHlwZWRlZiBUTWFw
PFRTdHJpbmcsIFRTdHJpbmc+IFRQcmFnbWFUYWJsZTsKIC8vCiBjbGFzcyBUSW50ZXJtQWdncmVn
YXRlIDogcHVibGljIFRJbnRlcm1PcGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgVEludGVybUFnZ3Jl
Z2F0ZSgpIDogVEludGVybU9wZXJhdG9yKEVPcE51bGwpLCB1c2VyRGVmaW5lZChmYWxzZSksIHBy
YWdtYVRhYmxlKDApLCBlbmRMaW5lKDApIHsgfQotICAgIFRJbnRlcm1BZ2dyZWdhdGUoVE9wZXJh
dG9yIG8pIDogVEludGVybU9wZXJhdG9yKG8pLCBwcmFnbWFUYWJsZSgwKSB7IH0KKyAgICBUSW50
ZXJtQWdncmVnYXRlKCkgOiBUSW50ZXJtT3BlcmF0b3IoRU9wTnVsbCksIHVzZXJEZWZpbmVkKGZh
bHNlKSwgcHJhZ21hVGFibGUoMCksIGVuZExpbmUoMCksIHVzZUVtdWxhdGVkRnVuY3Rpb24oZmFs
c2UpIHsgfQorICAgIFRJbnRlcm1BZ2dyZWdhdGUoVE9wZXJhdG9yIG8pIDogVEludGVybU9wZXJh
dG9yKG8pLCBwcmFnbWFUYWJsZSgwKSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9CiAg
ICAgflRJbnRlcm1BZ2dyZWdhdGUoKSB7IGRlbGV0ZSBwcmFnbWFUYWJsZTsgfQogCiAgICAgdmly
dHVhbCBUSW50ZXJtQWdncmVnYXRlKiBnZXRBc0FnZ3JlZ2F0ZSgpIHsgcmV0dXJuIHRoaXM7IH0K
QEAgLTQ1Niw2ICs0NjMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmRMaW5lKFRTb3VyY2VM
b2MgbGluZSkgeyBlbmRMaW5lID0gbGluZTsgfQogICAgIFRTb3VyY2VMb2MgZ2V0RW5kTGluZSgp
IGNvbnN0IHsgcmV0dXJuIGVuZExpbmU7IH0KIAorICAgIHZvaWQgc2V0VXNlRW11bGF0ZWRGdW5j
dGlvbigpIHsgdXNlRW11bGF0ZWRGdW5jdGlvbiA9IHRydWU7IH0KKyAgICBib29sIGdldFVzZUVt
dWxhdGVkRnVuY3Rpb24oKSB7IHJldHVybiB1c2VFbXVsYXRlZEZ1bmN0aW9uOyB9CisKIHByb3Rl
Y3RlZDoKICAgICBUSW50ZXJtQWdncmVnYXRlKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUmKTsgLy8g
ZGlzYWxsb3cgY29weSBjb25zdHJ1Y3RvcgogICAgIFRJbnRlcm1BZ2dyZWdhdGUmIG9wZXJhdG9y
PShjb25zdCBUSW50ZXJtQWdncmVnYXRlJik7IC8vIGRpc2FsbG93IGFzc2lnbm1lbnQgb3BlcmF0
b3IKQEAgLTQ2Nyw2ICs0NzcsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZGVidWc7CiAgICAg
VFByYWdtYVRhYmxlICpwcmFnbWFUYWJsZTsKICAgICBUU291cmNlTG9jIGVuZExpbmU7CisKKyAg
ICAvLyBJZiBzZXQgdG8gdHJ1ZSwgcmVwbGFjZSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gY2FsbCB3
aXRoIGFuIGVtdWxhdGVkIG9uZQorICAgIC8vIHRvIHdvcmsgYXJvdW5kIGRyaXZlciBidWdzLgor
ICAgIGJvb2wgdXNlRW11bGF0ZWRGdW5jdGlvbjsKIH07CiAKIC8vCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvb3NpbmNsdWRlLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvb3NpbmNsdWRlLmgKaW5kZXggMWFmNTA2NGIwOWE4
MTZmZTdhZjVmMTJlZDE0MmFjYzhhNWIyNzM4NS4uNmNlNGRmOTRkYTA5ZjdmNzBiMDMyZDVhNTIx
YTI0YWFkZDE4ZGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL29zaW5jbHVkZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9vc2luY2x1ZGUuaApAQCAtMTYsNyArMTYsNyBAQAogI2RlZmluZSBBTkdMRV9PU19XSU4K
ICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykgfHwgXAogICAg
ICAgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgXAotICAg
ICAgZGVmaW5lZChfX3N1bikKKyAgICAgIGRlZmluZWQoX19zdW4pIHx8IGRlZmluZWQoQU5EUk9J
RCkKICNkZWZpbmUgQU5HTEVfT1NfUE9TSVgKICNlbHNlCiAjZXJyb3IgVW5zdXBwb3J0ZWQgcGxh
dGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
b3Nzb3VyY2VfcG9zaXguY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L29zc291cmNlX3Bvc2l4LmNwcAppbmRleCBhMjFiMGMyM2M0YTBjNTkyMmU0NjRhNDVjYTg2NDZh
OGI2ZDNhYzY2Li4xZTFlNjk5YWViYzNhMjdiYTNkYTE3ZWU4MTMxNWRjNjYyYjk5OGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvb3Nzb3VyY2VfcG9z
aXguY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9vc3NvdXJj
ZV9wb3NpeC5jcHAKQEAgLTI3LDcgKzI3LDkgQEAgT1NfVExTSW5kZXggT1NfQWxsb2NUTFNJbmRl
eCgpCiAgICAgICAgIGFzc2VydCgwICYmICJPU19BbGxvY1RMU0luZGV4KCk6IFVuYWJsZSB0byBh
bGxvY2F0ZSBUaHJlYWQgTG9jYWwgU3RvcmFnZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIHJldHVybiBwUG9vbEluZGV4OworICAgIGVsc2UgeworICAgICAgICByZXR1cm4g
cFBvb2xJbmRleDsKKyAgICB9CiB9CiAKIApAQCAtNDAsNyArNDIsOCBAQCBib29sIE9TX1NldFRM
U1ZhbHVlKE9TX1RMU0luZGV4IG5JbmRleCwgdm9pZCAqbHB2VmFsdWUpCiAKICAgICBpZiAocHRo
cmVhZF9zZXRzcGVjaWZpYyhuSW5kZXgsIGxwdlZhbHVlKSA9PSAwKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIApAQCAtNTYsNSArNTksNiBAQCBib29sIE9TX0ZyZWVUTFNJbmRleChPU19UTFNJbmRl
eCBuSW5kZXgpCiAgICAgLy8KICAgICBpZiAocHRocmVhZF9rZXlfZGVsZXRlKG5JbmRleCkgPT0g
MCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGVsc2UKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9hdG9tLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2F0b20uYwppbmRleCBiNGE3NzYxYWU2N2I5
MjEyZGFhN2Q1ZWFmMzdiZWQwYjY3MjQ5Y2JmLi5hMTdjMzE5ZDI5YzE1OTFjNmU3NGZiNDIyNjkz
YWNlZmU4ZTRlMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL2F0b20uYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2F0b20uYwpAQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRp
YyBpbnQgR3Jvd0F0b21UYWJsZShBdG9tVGFibGUgKmF0YWJsZSwgaW50IHNpemUpCiAgICAgICAg
ICAgICBpZiAobmV3bWFwKQogICAgICAgICAgICAgICAgIGF0YWJsZS0+YW1hcCA9IG5ld21hcDsK
ICAgICAgICAgICAgIGlmIChuZXdyZXYpCi0gICAgICAgICAgICAgICAgYXRhYmxlLT5hbWFwID0g
bmV3cmV2OworICAgICAgICAgICAgICAgIGF0YWJsZS0+YXJldiA9IG5ld3JldjsKICAgICAgICAg
ICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBtZW1zZXQoJm5ld21hcFthdGFibGUt
PnNpemVdLCAwLCAoc2l6ZSAtIGF0YWJsZS0+c2l6ZSkgKiBzaXplb2YoaW50KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2xl
bmd0aF9saW1pdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvbGVuZ3RoX2xpbWl0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMWY3MTMxOWZjZThhNmY2MzQ2
ZjUwMDMyMmJlOTFlMjlkOGUzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2xlbmd0aF9saW1pdHMuaApAQCAtMCww
ICsxLDIxIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8KKy8vIGxlbmd0aF9saW1pdHMuaAorLy8KKwor
I2lmICFkZWZpbmVkKF9fTEVOR1RIX0xJTUlUU19IKQorI2RlZmluZSBfX0xFTkdUSF9MSU1JVFNf
SCAxCisKKy8vIFRoZXNlIGNvbnN0YW50cyBhcmUgZmFjdG9yZWQgb3V0IGZyb20gdGhlIHJlc3Qg
b2YgdGhlIGhlYWRlcnMgdG8KKy8vIG1ha2UgaXQgZWFzaWVyIHRvIHJlZmVyZW5jZSB0aGVtIGZy
b20gdGhlIGNvbXBpbGVyIHNvdXJjZXMuCisKKy8vIFRoZXNlIGxlbmd0aHMgZG8gbm90IGluY2x1
ZGUgdGhlIE5VTEwgdGVybWluYXRvci4KKyNkZWZpbmUgTUFYX1NZTUJPTF9OQU1FX0xFTiAyNTYK
KyNkZWZpbmUgTUFYX1NUUklOR19MRU4gNTExCisKKyNlbmRpZiAvLyAhKGRlZmluZWQoX19MRU5H
VEhfTElNSVRTX0gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL3NjYW5uZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3Ivc2Nhbm5lci5oCmluZGV4IDMzMzA2ZTUyMzhmZTVlMTAy
YWY2ZDY1MDE5OThmNzM3ZjRkMTdmMTguLjIzM2QxZGMxNmM1YTVhZDQ0OGY5MWQ2MTY2NGJkMmU4
NDRlN2E5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3Ivc2Nhbm5lci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3Ivc2Nhbm5lci5oCkBAIC00OCwxMCArNDgsNyBAQCBOVklE
SUEgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAj
aWYgIWRlZmluZWQoX19TQ0FOTkVSX0gpCiAjZGVmaW5lIF9fU0NBTk5FUl9IIDEKIAotLy8gVGhl
c2UgbGVuZ3RocyBkbyBub3QgaW5jbHVkZSB0aGUgTlVMTCB0ZXJtaW5hdG9yLgotI2RlZmluZSBN
QVhfU1lNQk9MX05BTUVfTEVOIDI1NgotI2RlZmluZSBNQVhfU1RSSU5HX0xFTiA1MTEKLQorI2lu
Y2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9sZW5ndGhfbGltaXRzLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL3BhcnNlci5oIgogCiAvLyBOb3QgcmVhbGx5IGF0b20gdGFi
bGUgc3R1ZmYgYnV0IG5lZWRlZCBmaXJzdC4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJFR0wvRGlzcGxheS5jcHAKaW5kZXggMWQ2NGY5YTEwZDBhMDc5MWExZDUyY2RkYWNm
MTVhOWNlYjU4Mjg5My4uNTM0NDMxZDk4YTQ4NzcwYzdmYmRkNjE0MTdiMzQyZTUxMmE2OTJmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3BwCkBA
IC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAibGliRUdML0Rpc3BsYXkuaCIKIAogI2luY2x1ZGUg
PGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVk
ZSAiY29tbW9uL2RlYnVnLmgiCkBAIC0zMSw3ICszMiw0MSBAQAogCiBuYW1lc3BhY2UgZWdsCiB7
Ci1EaXNwbGF5OjpEaXNwbGF5KEhEQyBkZXZpY2VDb250ZXh0KSA6IG1EYyhkZXZpY2VDb250ZXh0
KQorbmFtZXNwYWNlCit7CisgICAgdHlwZWRlZiBzdGQ6Om1hcDxFR0xOYXRpdmVEaXNwbGF5VHlw
ZSwgRGlzcGxheSo+IERpc3BsYXlNYXA7IAorICAgIERpc3BsYXlNYXAgZGlzcGxheXM7Cit9CisK
K2VnbDo6RGlzcGxheSAqRGlzcGxheTo6Z2V0RGlzcGxheShFR0xOYXRpdmVEaXNwbGF5VHlwZSBk
aXNwbGF5SWQpCit7CisgICAgaWYgKGRpc3BsYXlzLmZpbmQoZGlzcGxheUlkKSAhPSBkaXNwbGF5
cy5lbmQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXNwbGF5c1tkaXNwbGF5SWRdOworICAg
IH0KKworICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IE5VTEw7CisKKyAgICBpZiAoZGlzcGxh
eUlkID09IEVHTF9ERUZBVUxUX0RJU1BMQVkpCisgICAgeworICAgICAgICBkaXNwbGF5ID0gbmV3
IGVnbDo6RGlzcGxheShkaXNwbGF5SWQsIChIREMpTlVMTCwgZmFsc2UpOworICAgIH0KKyAgICBl
bHNlIGlmIChkaXNwbGF5SWQgPT0gRUdMX1NPRlRXQVJFX0RJU1BMQVlfQU5HTEUpCisgICAgewor
ICAgICAgICBkaXNwbGF5ID0gbmV3IGVnbDo6RGlzcGxheShkaXNwbGF5SWQsIChIREMpTlVMTCwg
dHJ1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBDaGVjayBp
ZiBkaXNwbGF5SWQgaXMgYSB2YWxpZCBkaXNwbGF5IGRldmljZSBjb250ZXh0CisKKyAgICAgICAg
ZGlzcGxheSA9IG5ldyBlZ2w6OkRpc3BsYXkoZGlzcGxheUlkLCAoSERDKWRpc3BsYXlJZCwgZmFs
c2UpOworICAgIH0KKworICAgIGRpc3BsYXlzW2Rpc3BsYXlJZF0gPSBkaXNwbGF5OworICAgIHJl
dHVybiBkaXNwbGF5OworfQorCitEaXNwbGF5OjpEaXNwbGF5KEVHTE5hdGl2ZURpc3BsYXlUeXBl
IGRpc3BsYXlJZCwgSERDIGRldmljZUNvbnRleHQsIGJvb2wgc29mdHdhcmUpIDogbURjKGRldmlj
ZUNvbnRleHQpCiB7CiAgICAgbUQzZDlNb2R1bGUgPSBOVUxMOwogICAgIApAQCAtNTEsMTEgKzg2
LDIxIEBAIERpc3BsYXk6OkRpc3BsYXkoSERDIGRldmljZUNvbnRleHQpIDogbURjKGRldmljZUNv
bnRleHQpCiAKICAgICBtTWluU3dhcEludGVydmFsID0gMTsKICAgICBtTWF4U3dhcEludGVydmFs
ID0gMTsKKyAgICBtU29mdHdhcmVEZXZpY2UgPSBzb2Z0d2FyZTsKKyAgICBtRGlzcGxheUlkID0g
ZGlzcGxheUlkOworICAgIG1EZXZpY2VMb3N0ID0gZmFsc2U7CiB9CiAKIERpc3BsYXk6On5EaXNw
bGF5KCkKIHsKICAgICB0ZXJtaW5hdGUoKTsKKworICAgIERpc3BsYXlNYXA6Oml0ZXJhdG9yIHRo
aXNEaXNwbGF5ID0gZGlzcGxheXMuZmluZChtRGlzcGxheUlkKTsKKworICAgIGlmICh0aGlzRGlz
cGxheSAhPSBkaXNwbGF5cy5lbmQoKSkKKyAgICB7CisgICAgICBkaXNwbGF5cy5lcmFzZSh0aGlz
RGlzcGxheSk7CisgICAgfQogfQogCiBib29sIERpc3BsYXk6OmluaXRpYWxpemUoKQpAQCAtNjUs
NyArMTEwLDE0IEBAIGJvb2wgRGlzcGxheTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIG1EM2Q5TW9kdWxlID0gR2V0TW9kdWxlSGFuZGxlKFRFWFQoImQz
ZDkuZGxsIikpOworICAgIGlmIChtU29mdHdhcmVEZXZpY2UpCisgICAgeworICAgICAgbUQzZDlN
b2R1bGUgPSBHZXRNb2R1bGVIYW5kbGUoVEVYVCgic3dpZnRzaGFkZXJfZDNkOS5kbGwiKSk7Cisg
ICAgfSAKKyAgICBlbHNlCisgICAgeworICAgICAgbUQzZDlNb2R1bGUgPSBHZXRNb2R1bGVIYW5k
bGUoVEVYVCgiZDNkOS5kbGwiKSk7CisgICAgfQogICAgIGlmIChtRDNkOU1vZHVsZSA9PSBOVUxM
KQogICAgIHsKICAgICAgICAgdGVybWluYXRlKCk7CkBAIC0yNTMsNyArMzA1LDcgQEAgdm9pZCBE
aXNwbGF5Ojp0ZXJtaW5hdGUoKQogICAgIGlmIChtRGV2aWNlKQogICAgIHsKICAgICAgICAgLy8g
SWYgdGhlIGRldmljZSBpcyBsb3N0LCByZXNldCBpdCBmaXJzdCB0byBwcmV2ZW50IGxlYXZpbmcg
dGhlIGRyaXZlciBpbiBhbiB1bnN0YWJsZSBzdGF0ZQotICAgICAgICBpZiAoaXNEZXZpY2VMb3N0
KCkpCisgICAgICAgIGlmICh0ZXN0RGV2aWNlTG9zdCgpKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXNldERldmljZSgpOwogICAgICAgICB9CkBAIC0yOTcsOCArMzQ5LDExIEBAIHZvaWQgRGlz
cGxheTo6c3RhcnRTY2VuZSgpCiAgICAgaWYgKCFtU2NlbmVTdGFydGVkKQogICAgIHsKICAgICAg
ICAgbG9uZyByZXN1bHQgPSBtRGV2aWNlLT5CZWdpblNjZW5lKCk7Ci0gICAgICAgIEFTU0VSVChT
VUNDRUVERUQocmVzdWx0KSk7Ci0gICAgICAgIG1TY2VuZVN0YXJ0ZWQgPSB0cnVlOworICAgICAg
ICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgZGVmZW5z
aXZlIGNoZWNraW5nIGFnYWluc3QgdGhlIGRldmljZSBiZWluZworICAgICAgICAgICAgLy8gbG9z
dCBhdCB1bmV4cGVjdGVkIHRpbWVzLgorICAgICAgICAgICAgbVNjZW5lU3RhcnRlZCA9IHRydWU7
CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTMwNiw4ICszNjEsOSBAQCB2b2lkIERpc3BsYXk6
OmVuZFNjZW5lKCkKIHsKICAgICBpZiAobVNjZW5lU3RhcnRlZCkKICAgICB7Ci0gICAgICAgIGxv
bmcgcmVzdWx0ID0gbURldmljZS0+RW5kU2NlbmUoKTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKKyAgICAgICAgLy8gRW5kU2NlbmUgY2FuIGZhaWwgaWYgdGhlIGRldmljZSB3
YXMgbG9zdCwgZm9yIGV4YW1wbGUgZHVlCisgICAgICAgIC8vIHRvIGEgVERSIGR1cmluZyBhIGRy
YXcgY2FsbC4KKyAgICAgICAgbURldmljZS0+RW5kU2NlbmUoKTsKICAgICAgICAgbVNjZW5lU3Rh
cnRlZCA9IGZhbHNlOwogICAgIH0KIH0KQEAgLTM5MSwzMyArNDQ3LDY2IEBAIGJvb2wgRGlzcGxh
eTo6Y3JlYXRlRGV2aWNlKCkKICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAg
ICB9CiAKKyAgICBpbml0aWFsaXplRGV2aWNlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ly8gZG8gYW55IG9uZS10aW1lIGRldmljZSBpbml0aWFsaXphdGlvbgorLy8gTk9URTogdGhpcyBp
cyBhbHNvIG5lZWRlZCBhZnRlciBhIGRldmljZSBsb3N0L3Jlc2V0CisvLyB0byByZXNldCB0aGUg
c2NlbmUgc3RhdHVzIGFuZCBlbnN1cmUgdGhlIGRlZmF1bHQgc3RhdGVzIGFyZSByZXNldC4KK3Zv
aWQgRGlzcGxheTo6aW5pdGlhbGl6ZURldmljZSgpCit7CiAgICAgLy8gUGVybWFuZW50IG5vbi1k
ZWZhdWx0IHN0YXRlcwogICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1BPSU5UU1BS
SVRFRU5BQkxFLCBUUlVFKTsKKyAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19MQVNU
UElYRUwsIEZBTFNFKTsKIAogICAgIG1TY2VuZVN0YXJ0ZWQgPSBmYWxzZTsKLQotICAgIHJldHVy
biB0cnVlOwogfQogCiBib29sIERpc3BsYXk6OnJlc2V0RGV2aWNlKCkKIHsKICAgICBEM0RQUkVT
RU5UX1BBUkFNRVRFUlMgcHJlc2VudFBhcmFtZXRlcnMgPSBnZXREZWZhdWx0UHJlc2VudFBhcmFt
ZXRlcnMoKTsKLSAgICBIUkVTVUxUIHJlc3VsdDsKLSAgICAKLSAgICBkbworCisgICAgSFJFU1VM
VCByZXN1bHQgPSBEM0RfT0s7CisgICAgYm9vbCBsb3N0ID0gdGVzdERldmljZUxvc3QoKTsKKyAg
ICBpbnQgYXR0ZW1wdHMgPSAzOyAgICAKKworICAgIHdoaWxlIChsb3N0ICYmIGF0dGVtcHRzID4g
MCkKICAgICB7Ci0gICAgICAgIFNsZWVwKDApOyAgIC8vIEdpdmUgdGhlIGdyYXBoaWNzIGRyaXZl
ciBzb21lIENQVSB0aW1lCisgICAgICAgIGlmIChtRGV2aWNlRXgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFNsZWVwKDUwMCk7ICAgLy8gR2l2ZSB0aGUgZ3JhcGhpY3MgZHJpdmVyIHNvbWUgQ1BV
IHRpbWUKKyAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2VFeC0+UmVzZXRFeCgmcHJlc2VudFBh
cmFtZXRlcnMsIE5VTEwpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+VGVzdENvb3BlcmF0aXZlTGV2ZWwoKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgd2hpbGUgKHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTbGVlcCgxMDApOyAgIC8vIEdpdmUgdGhl
IGdyYXBoaWNzIGRyaXZlciBzb21lIENQVSB0aW1lCisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
bURldmljZS0+VGVzdENvb3BlcmF0aXZlTGV2ZWwoKTsKKyAgICAgICAgICAgIH0KIAotICAgICAg
ICByZXN1bHQgPSBtRGV2aWNlLT5SZXNldCgmcHJlc2VudFBhcmFtZXRlcnMpOworICAgICAgICAg
ICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTk9UUkVTRVQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+UmVzZXQoJnByZXNlbnRQYXJhbWV0ZXJz
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxvc3QgPSB0ZXN0RGV2aWNl
TG9zdCgpOworICAgICAgICBhdHRlbXB0cyAtLTsKICAgICB9Ci0gICAgd2hpbGUgKHJlc3VsdCA9
PSBEM0RFUlJfREVWSUNFTE9TVCk7CiAKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewor
ICAgICAgICBFUlIoIlJlc2V0L1Jlc2V0RXggZmFpbGVkIG11bHRpcGxlIHRpbWVzOiAweCUwOFgi
LCByZXN1bHQpOwogICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgZmFsc2UpOwog
ICAgIH0KIAotICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgLy8gcmVzZXQgZGV2
aWNlIGRlZmF1bHRzCisgICAgaW5pdGlhbGl6ZURldmljZSgpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC00MjUsNiArNTE0LDcgQEAgYm9vbCBEaXNwbGF5OjpyZXNldERldmljZSgpCiBFR0xT
dXJmYWNlIERpc3BsYXk6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoSFdORCB3aW5kb3csIEVHTENvbmZp
ZyBjb25maWcsIGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCkKIHsKICAgICBjb25zdCBDb25maWcg
KmNvbmZpZ3VyYXRpb24gPSBtQ29uZmlnU2V0LmdldChjb25maWcpOworICAgIEVHTGludCBwb3N0
U3ViQnVmZmVyU3VwcG9ydGVkID0gRUdMX0ZBTFNFOwogCiAgICAgaWYgKGF0dHJpYkxpc3QpCiAg
ICAgewpAQCAtNDQzLDYgKzUzMyw5IEBAIEVHTFN1cmZhY2UgRGlzcGxheTo6Y3JlYXRlV2luZG93
U3VyZmFjZShIV05EIHdpbmRvdywgRUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdMCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZB
Q0UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSBFR0xfUE9TVF9TVUJfQlVGRkVSX1NVUFBPUlRFRF9OVjoKKyAgICAgICAgICAg
ICAgICBwb3N0U3ViQnVmZmVyU3VwcG9ydGVkID0gYXR0cmliTGlzdFsxXTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSBFR0xfVkdfQ09MT1JTUEFDRToKICAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX1NVUkZBQ0UpOwog
ICAgICAgICAgICAgICBjYXNlIEVHTF9WR19BTFBIQV9GT1JNQVQ6CkBAIC00NjAsNyArNTUzLDEz
IEBAIEVHTFN1cmZhY2UgRGlzcGxheTo6Y3JlYXRlV2luZG93U3VyZmFjZShIV05EIHdpbmRvdywg
RUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdMCiAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFE
X0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7CiAgICAgfQogCi0gICAgU3VyZmFjZSAqc3VyZmFjZSA9
IG5ldyBTdXJmYWNlKHRoaXMsIGNvbmZpZ3VyYXRpb24sIHdpbmRvdyk7CisgICAgaWYgKHRlc3RE
ZXZpY2VMb3N0KCkpIAorICAgIHsKKyAgICAgICAgaWYgKCFyZXN0b3JlTG9zdERldmljZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOworICAgIH0KKworICAgIFN1cmZhY2Ug
KnN1cmZhY2UgPSBuZXcgU3VyZmFjZSh0aGlzLCBjb25maWd1cmF0aW9uLCB3aW5kb3csIHBvc3RT
dWJCdWZmZXJTdXBwb3J0ZWQpOwogCiAgICAgaWYgKCFzdXJmYWNlLT5pbml0aWFsaXplKCkpCiAg
ICAgewpAQCAtNTY3LDYgKzY2NiwxMiBAQCBFR0xTdXJmYWNlIERpc3BsYXk6OmNyZWF0ZU9mZnNj
cmVlblN1cmZhY2UoRUdMQ29uZmlnIGNvbmZpZywgSEFORExFIHNoYXJlSGFuZGxlLAogICAgICAg
ICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsKICAgICB9
CiAKKyAgICBpZiAodGVzdERldmljZUxvc3QoKSkgCisgICAgeworICAgICAgICBpZiAoIXJlc3Rv
cmVMb3N0RGV2aWNlKCkpCisgICAgICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CisgICAg
fQorCiAgICAgU3VyZmFjZSAqc3VyZmFjZSA9IG5ldyBTdXJmYWNlKHRoaXMsIGNvbmZpZ3VyYXRp
b24sIHNoYXJlSGFuZGxlLCB3aWR0aCwgaGVpZ2h0LCB0ZXh0dXJlRm9ybWF0LCB0ZXh0dXJlVGFy
Z2V0KTsKIAogICAgIGlmICghc3VyZmFjZS0+aW5pdGlhbGl6ZSgpKQpAQCAtNTgwLDcgKzY4NSw3
IEBAIEVHTFN1cmZhY2UgRGlzcGxheTo6Y3JlYXRlT2Zmc2NyZWVuU3VyZmFjZShFR0xDb25maWcg
Y29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUsCiAgICAgcmV0dXJuIHN1Y2Nlc3Moc3VyZmFjZSk7
CiB9CiAKLUVHTENvbnRleHQgRGlzcGxheTo6Y3JlYXRlQ29udGV4dChFR0xDb25maWcgY29uZmln
SGFuZGxlLCBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0KQorRUdMQ29udGV4dCBEaXNw
bGF5OjpjcmVhdGVDb250ZXh0KEVHTENvbmZpZyBjb25maWdIYW5kbGUsIGNvbnN0IGdsOjpDb250
ZXh0ICpzaGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5UmVzZXRzLCBib29sIHJvYnVzdEFjY2VzcykK
IHsKICAgICBpZiAoIW1EZXZpY2UpCiAgICAgewpAQCAtNTg5LDM0ICs2OTQsNTAgQEAgRUdMQ29u
dGV4dCBEaXNwbGF5OjpjcmVhdGVDb250ZXh0KEVHTENvbmZpZyBjb25maWdIYW5kbGUsIGNvbnN0
IGdsOjpDb250ZXh0ICpzaGEKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAg
ICAgfQotICAgIGVsc2UgaWYgKGlzRGV2aWNlTG9zdCgpKSAgIC8vIExvc3QgZGV2aWNlCisgICAg
ZWxzZSBpZiAodGVzdERldmljZUxvc3QoKSkgICAvLyBMb3N0IGRldmljZQogICAgIHsKLSAgICAg
ICAgLy8gUmVsZWFzZSBzdXJmYWNlIHJlc291cmNlcyB0byBtYWtlIHRoZSBSZXNldCgpIHN1Y2Nl
ZWQKLSAgICAgICAgZm9yIChTdXJmYWNlU2V0OjppdGVyYXRvciBzdXJmYWNlID0gbVN1cmZhY2VT
ZXQuYmVnaW4oKTsgc3VyZmFjZSAhPSBtU3VyZmFjZVNldC5lbmQoKTsgc3VyZmFjZSsrKQotICAg
ICAgICB7Ci0gICAgICAgICAgICAoKnN1cmZhY2UpLT5yZWxlYXNlKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoIXJlc2V0RGV2aWNlKCkpCi0gICAgICAgIHsKKyAgICAgICAgaWYgKCFyZXN0
b3JlTG9zdERldmljZSgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBSZXN0b3JlIGFueSBzdXJmYWNlcyB0aGF0IG1heSBoYXZlIGJlZW4gbG9zdAot
ICAgICAgICBmb3IgKFN1cmZhY2VTZXQ6Oml0ZXJhdG9yIHN1cmZhY2UgPSBtU3VyZmFjZVNldC5i
ZWdpbigpOyBzdXJmYWNlICE9IG1TdXJmYWNlU2V0LmVuZCgpOyBzdXJmYWNlKyspCi0gICAgICAg
IHsKLSAgICAgICAgICAgICgqc3VyZmFjZSktPnJlc2V0U3dhcENoYWluKCk7Ci0gICAgICAgIH0K
ICAgICB9CiAKICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnID0gbUNvbmZpZ1NldC5nZXQo
Y29uZmlnSGFuZGxlKTsKIAotICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2xDcmVhdGVDb250
ZXh0KGNvbmZpZywgc2hhcmVDb250ZXh0KTsKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGds
Q3JlYXRlQ29udGV4dChjb25maWcsIHNoYXJlQ29udGV4dCwgbm90aWZ5UmVzZXRzLCByb2J1c3RB
Y2Nlc3MpOwogICAgIG1Db250ZXh0U2V0Lmluc2VydChjb250ZXh0KTsKKyAgICBtRGV2aWNlTG9z
dCA9IGZhbHNlOwogCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKK2Jvb2wgRGlzcGxheTo6cmVz
dG9yZUxvc3REZXZpY2UoKQoreworICAgIGZvciAoQ29udGV4dFNldDo6aXRlcmF0b3IgY3R4ID0g
bUNvbnRleHRTZXQuYmVnaW4oKTsgY3R4ICE9IG1Db250ZXh0U2V0LmVuZCgpOyBjdHgrKykKKyAg
ICB7CisgICAgICAgIGlmICgoKmN0eCktPmlzUmVzZXROb3RpZmljYXRpb25FbmFibGVkKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gSWYgcmVzZXQgbm90aWZpY2F0aW9ucyBoYXZl
IGJlZW4gcmVxdWVzdGVkLCBhcHBsaWNhdGlvbiBtdXN0IGRlbGV0ZSBhbGwgY29udGV4dHMgZmly
c3QKKyAgICB9CisgCisgICAgLy8gUmVsZWFzZSBzdXJmYWNlIHJlc291cmNlcyB0byBtYWtlIHRo
ZSBSZXNldCgpIHN1Y2NlZWQKKyAgICBmb3IgKFN1cmZhY2VTZXQ6Oml0ZXJhdG9yIHN1cmZhY2Ug
PSBtU3VyZmFjZVNldC5iZWdpbigpOyBzdXJmYWNlICE9IG1TdXJmYWNlU2V0LmVuZCgpOyBzdXJm
YWNlKyspCisgICAgeworICAgICAgICAoKnN1cmZhY2UpLT5yZWxlYXNlKCk7CisgICAgfQorCisg
ICAgaWYgKCFyZXNldERldmljZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIC8vIFJlc3RvcmUgYW55IHN1cmZhY2VzIHRoYXQgbWF5IGhhdmUgYmVlbiBsb3N0
CisgICAgZm9yIChTdXJmYWNlU2V0OjppdGVyYXRvciBzdXJmYWNlID0gbVN1cmZhY2VTZXQuYmVn
aW4oKTsgc3VyZmFjZSAhPSBtU3VyZmFjZVNldC5lbmQoKTsgc3VyZmFjZSsrKQorICAgIHsKKyAg
ICAgICAgKCpzdXJmYWNlKS0+cmVzZXRTd2FwQ2hhaW4oKTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworCiB2b2lkIERpc3BsYXk6OmRlc3Ryb3lTdXJmYWNlKGVnbDo6U3VyZmFjZSAq
c3VyZmFjZSkKIHsKICAgICBkZWxldGUgc3VyZmFjZTsKQEAgLTYyOSw2ICs3NTAsMjEgQEAgdm9p
ZCBEaXNwbGF5OjpkZXN0cm95Q29udGV4dChnbDo6Q29udGV4dCAqY29udGV4dCkKICAgICBtQ29u
dGV4dFNldC5lcmFzZShjb250ZXh0KTsKIH0KIAordm9pZCBEaXNwbGF5Ojpub3RpZnlEZXZpY2VM
b3N0KCkKK3sKKyAgICBmb3IgKENvbnRleHRTZXQ6Oml0ZXJhdG9yIGNvbnRleHQgPSBtQ29udGV4
dFNldC5iZWdpbigpOyBjb250ZXh0ICE9IG1Db250ZXh0U2V0LmVuZCgpOyBjb250ZXh0KyspCisg
ICAgeworICAgICAgICAoKmNvbnRleHQpLT5tYXJrQ29udGV4dExvc3QoKTsKKyAgICB9CisgICAg
bURldmljZUxvc3QgPSB0cnVlOworICAgIGVycm9yKEVHTF9DT05URVhUX0xPU1QpOworfQorCiti
b29sIERpc3BsYXk6OmlzRGV2aWNlTG9zdCgpCit7CisgICAgcmV0dXJuIG1EZXZpY2VMb3N0Owor
fQorCiBib29sIERpc3BsYXk6OmlzSW5pdGlhbGl6ZWQoKSBjb25zdAogewogICAgIHJldHVybiBt
RDNkOSAhPSBOVUxMICYmIG1Db25maWdTZXQuc2l6ZSgpID4gMDsKQEAgLTY5NSwxNiArODMxLDQx
IEBAIEQzREFEQVBURVJfSURFTlRJRklFUjkgKkRpc3BsYXk6OmdldEFkYXB0ZXJJZGVudGlmaWVy
KCkKICAgICByZXR1cm4gJm1BZGFwdGVySWRlbnRpZmllcjsKIH0KIAotYm9vbCBEaXNwbGF5Ojpp
c0RldmljZUxvc3QoKQorYm9vbCBEaXNwbGF5Ojp0ZXN0RGV2aWNlTG9zdCgpCiB7CiAgICAgaWYg
KG1EZXZpY2VFeCkKICAgICB7CiAgICAgICAgIHJldHVybiBGQUlMRUQobURldmljZUV4LT5DaGVj
a0RldmljZVN0YXRlKE5VTEwpKTsKICAgICB9Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKG1EZXZp
Y2UpCiAgICAgewogICAgICAgICByZXR1cm4gRkFJTEVEKG1EZXZpY2UtPlRlc3RDb29wZXJhdGl2
ZUxldmVsKCkpOwogICAgIH0KKworICAgIHJldHVybiBmYWxzZTsgICAvLyBObyBkZXZpY2UgeWV0
LCBzbyBubyByZXNldCByZXF1aXJlZAorfQorCitib29sIERpc3BsYXk6OnRlc3REZXZpY2VSZXNl
dHRhYmxlKCkKK3sKKyAgICBIUkVTVUxUIHN0YXR1cyA9IEQzRF9PSzsKKworICAgIGlmIChtRGV2
aWNlRXgpCisgICAgeworICAgICAgICBzdGF0dXMgPSBtRGV2aWNlRXgtPkNoZWNrRGV2aWNlU3Rh
dGUoTlVMTCk7CisgICAgfQorICAgIGVsc2UgaWYgKG1EZXZpY2UpCisgICAgeworICAgICAgICBz
dGF0dXMgPSBtRGV2aWNlLT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpOworICAgIH0KKworICAgIHN3
aXRjaCAoc3RhdHVzKQorICAgIHsKKyAgICAgIGNhc2UgRDNERVJSX0RFVklDRU5PVFJFU0VUOgor
ICAgICAgY2FzZSBEM0RFUlJfREVWSUNFSFVORzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfQogCiB2b2lkIERpc3Bs
YXk6OmdldE11bHRpU2FtcGxlU3VwcG9ydChEM0RGT1JNQVQgZm9ybWF0LCBib29sICptdWx0aVNh
bXBsZUFycmF5KQpAQCAtNzE4LDcgKzg3OSw3IEBAIHZvaWQgRGlzcGxheTo6Z2V0TXVsdGlTYW1w
bGVTdXBwb3J0KEQzREZPUk1BVCBmb3JtYXQsIGJvb2wgKm11bHRpU2FtcGxlQXJyYXkpCiAgICAg
fQogfQogCi1ib29sIERpc3BsYXk6OmdldENvbXByZXNzZWRUZXh0dXJlU3VwcG9ydCgpCitib29s
IERpc3BsYXk6OmdldERYVDFUZXh0dXJlU3VwcG9ydCgpCiB7CiAgICAgRDNERElTUExBWU1PREUg
Y3VycmVudERpc3BsYXlNb2RlOwogICAgIG1EM2Q5LT5HZXRBZGFwdGVyRGlzcGxheU1vZGUobUFk
YXB0ZXIsICZjdXJyZW50RGlzcGxheU1vZGUpOwpAQCAtNzI2LDcgKzg4NywyMyBAQCBib29sIERp
c3BsYXk6OmdldENvbXByZXNzZWRUZXh0dXJlU3VwcG9ydCgpCiAgICAgcmV0dXJuIFNVQ0NFRURF
RChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50
RGlzcGxheU1vZGUuRm9ybWF0LCAwLCBEM0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfRFhUMSkpOwog
fQogCi1ib29sIERpc3BsYXk6OmdldEZsb2F0VGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5n
LCBib29sICpyZW5kZXJhYmxlKQorYm9vbCBEaXNwbGF5OjpnZXREWFQzVGV4dHVyZVN1cHBvcnQo
KQoreworICAgIEQzRERJU1BMQVlNT0RFIGN1cnJlbnREaXNwbGF5TW9kZTsKKyAgICBtRDNkOS0+
R2V0QWRhcHRlckRpc3BsYXlNb2RlKG1BZGFwdGVyLCAmY3VycmVudERpc3BsYXlNb2RlKTsKKwor
ICAgIHJldHVybiBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBt
RGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgMCwgRDNEUlRZUEVfVEVYVFVS
RSwgRDNERk1UX0RYVDMpKTsKK30KKworYm9vbCBEaXNwbGF5OjpnZXREWFQ1VGV4dHVyZVN1cHBv
cnQoKQoreworICAgIEQzRERJU1BMQVlNT0RFIGN1cnJlbnREaXNwbGF5TW9kZTsKKyAgICBtRDNk
OS0+R2V0QWRhcHRlckRpc3BsYXlNb2RlKG1BZGFwdGVyLCAmY3VycmVudERpc3BsYXlNb2RlKTsK
KworICAgIHJldHVybiBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVy
LCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgMCwgRDNEUlRZUEVfVEVY
VFVSRSwgRDNERk1UX0RYVDUpKTsKK30KKworYm9vbCBEaXNwbGF5OjpnZXRGbG9hdDMyVGV4dHVy
ZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxlKQogewogICAgIEQzRERJ
U1BMQVlNT0RFIGN1cnJlbnREaXNwbGF5TW9kZTsKICAgICBtRDNkOS0+R2V0QWRhcHRlckRpc3Bs
YXlNb2RlKG1BZGFwdGVyLCAmY3VycmVudERpc3BsYXlNb2RlKTsKQEAgLTc1NCw3ICs5MzEsNyBA
QCBib29sIERpc3BsYXk6OmdldEZsb2F0VGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBi
b29sICpyZW5kZXJhYmxlKQogICAgIH0KIH0KIAotYm9vbCBEaXNwbGF5OjpnZXRIYWxmRmxvYXRU
ZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUpCitib29sIERp
c3BsYXk6OmdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJl
bmRlcmFibGUpCiB7CiAgICAgRDNERElTUExBWU1PREUgY3VycmVudERpc3BsYXlNb2RlOwogICAg
IG1EM2Q5LT5HZXRBZGFwdGVyRGlzcGxheU1vZGUobUFkYXB0ZXIsICZjdXJyZW50RGlzcGxheU1v
ZGUpOwpAQCAtODE1LDYgKzk5MiwyMyBAQCBEM0RQT09MIERpc3BsYXk6OmdldEJ1ZmZlclBvb2wo
RFdPUkQgdXNhZ2UpIGNvbnN0CiAgICAgcmV0dXJuIEQzRFBPT0xfREVGQVVMVDsKIH0KIAorRDNE
UE9PTCBEaXNwbGF5OjpnZXRUZXh0dXJlUG9vbChib29sIHJlbmRlcmFibGUpIGNvbnN0Cit7Cisg
ICAgaWYgKG1EM2Q5RXggIT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiBEM0RQT09MX0RF
RkFVTFQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmICghcmVuZGVyYWJsZSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEQzRFBPT0xfTUFOQUdFRDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBEM0RQT09MX0RFRkFVTFQ7Cit9CisKIGJvb2wgRGlzcGxh
eTo6Z2V0RXZlbnRRdWVyeVN1cHBvcnQoKQogewogICAgIElEaXJlY3QzRFF1ZXJ5OSAqcXVlcnk7
CkBAIC04NTEsMTMgKzEwNDUsMzQgQEAgRDNEUFJFU0VOVF9QQVJBTUVURVJTIERpc3BsYXk6Omdl
dERlZmF1bHRQcmVzZW50UGFyYW1ldGVycygpCiAKIHZvaWQgRGlzcGxheTo6aW5pdEV4dGVuc2lv
blN0cmluZygpCiB7CisgICAgSE1PRFVMRSBzd2lmdFNoYWRlciA9IEdldE1vZHVsZUhhbmRsZShU
RVhUKCJzd2lmdHNoYWRlcl9kM2Q5LmRsbCIpKTsKKyAgICBib29sIGlzZDNkOWV4ID0gaXNEM2Q5
RXhEZXZpY2UoKTsKKworICAgIG1FeHRlbnNpb25TdHJpbmcgPSAiIjsKKworICAgIC8vIE11bHRp
LXZlbmRvciAoRVhUKSBleHRlbnNpb25zCisgICAgbUV4dGVuc2lvblN0cmluZyArPSAiRUdMX0VY
VF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzICI7CisKKyAgICAvLyBBTkdMRS1zcGVjaWZpYyBl
eHRlbnNpb25zCisgICAgaWYgKGlzZDNkOWV4KQorICAgIHsKKyAgICAgICAgbUV4dGVuc2lvblN0
cmluZyArPSAiRUdMX0FOR0xFX2QzZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1ZmZlciAiOworICAg
IH0KKwogICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkVHTF9BTkdMRV9xdWVyeV9zdXJmYWNlX3Bv
aW50ZXIgIjsKIAotICAgIGlmIChpc0QzZDlFeERldmljZSgpKSB7CisgICAgaWYgKHN3aWZ0U2hh
ZGVyKQorICAgIHsKKyAgICAgICAgbUV4dGVuc2lvblN0cmluZyArPSAiRUdMX0FOR0xFX3NvZnR3
YXJlX2Rpc3BsYXkgIjsKKyAgICB9CisKKyAgICBpZiAoaXNkM2Q5ZXgpCisgICAgewogICAgICAg
ICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9z
aGFyZV9oYW5kbGUgIjsKLSAgICAgICAgbUV4dGVuc2lvblN0cmluZyArPSAiRUdMX0FOR0xFX2Qz
ZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1ZmZlciAiOwogICAgIH0KIAorICAgIG1FeHRlbnNpb25T
dHJpbmcgKz0gIkVHTF9OVl9wb3N0X3N1Yl9idWZmZXIiOworCiAgICAgc3RkOjpzdHJpbmc6OnNp
emVfdHlwZSBlbmQgPSBtRXh0ZW5zaW9uU3RyaW5nLmZpbmRfbGFzdF9ub3Rfb2YoJyAnKTsKICAg
ICBpZiAoZW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvRGlzcGxheS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmgKaW5kZXggODZkZTVjZDRiM2JmMjQxNDM1YmQ0
ZTIwMjdhYTliZGUyZjU0NGM1OC4uZDA1NGVlOWNjYTdmODcyZGQ5MTNkNjQ3YjYyMjU5NWNiNTUw
MmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNw
bGF5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmgK
QEAgLTI5LDggKzI5LDYgQEAgbmFtZXNwYWNlIGVnbAogY2xhc3MgRGlzcGxheQogewogICBwdWJs
aWM6Ci0gICAgRGlzcGxheShIREMgZGV2aWNlQ29udGV4dCk7Ci0KICAgICB+RGlzcGxheSgpOwog
CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CkBAIC0zOSwxMiArMzcsMTQgQEAgY2xhc3MgRGlzcGxh
eQogICAgIHZpcnR1YWwgdm9pZCBzdGFydFNjZW5lKCk7CiAgICAgdmlydHVhbCB2b2lkIGVuZFNj
ZW5lKCk7CiAKKyAgICBzdGF0aWMgZWdsOjpEaXNwbGF5ICpnZXREaXNwbGF5KEVHTE5hdGl2ZURp
c3BsYXlUeXBlIGRpc3BsYXlJZCk7CisKICAgICBib29sIGdldENvbmZpZ3MoRUdMQ29uZmlnICpj
b25maWdzLCBjb25zdCBFR0xpbnQgKmF0dHJpYkxpc3QsIEVHTGludCBjb25maWdTaXplLCBFR0xp
bnQgKm51bUNvbmZpZyk7CiAgICAgYm9vbCBnZXRDb25maWdBdHRyaWIoRUdMQ29uZmlnIGNvbmZp
ZywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSk7CiAKICAgICBFR0xTdXJmYWNlIGNy
ZWF0ZVdpbmRvd1N1cmZhY2UoSFdORCB3aW5kb3csIEVHTENvbmZpZyBjb25maWcsIGNvbnN0IEVH
TGludCAqYXR0cmliTGlzdCk7CiAgICAgRUdMU3VyZmFjZSBjcmVhdGVPZmZzY3JlZW5TdXJmYWNl
KEVHTENvbmZpZyBjb25maWcsIEhBTkRMRSBzaGFyZUhhbmRsZSwgY29uc3QgRUdMaW50ICphdHRy
aWJMaXN0KTsKLSAgICBFR0xDb250ZXh0IGNyZWF0ZUNvbnRleHQoRUdMQ29uZmlnIGNvbmZpZ0hh
bmRsZSwgY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCk7CisgICAgRUdMQ29udGV4dCBj
cmVhdGVDb250ZXh0KEVHTENvbmZpZyBjb25maWdIYW5kbGUsIGNvbnN0IGdsOjpDb250ZXh0ICpz
aGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5UmVzZXRzLCBib29sIHJvYnVzdEFjY2Vzcyk7CiAKICAg
ICB2b2lkIGRlc3Ryb3lTdXJmYWNlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7CiAgICAgdm9pZCBk
ZXN0cm95Q29udGV4dChnbDo6Q29udGV4dCAqY29udGV4dCk7CkBAIC02MSwxNyArNjEsMjQgQEAg
Y2xhc3MgRGlzcGxheQogICAgIHZpcnR1YWwgSURpcmVjdDNERGV2aWNlOSAqZ2V0RGV2aWNlKCk7
CiAgICAgdmlydHVhbCBEM0RDQVBTOSBnZXREZXZpY2VDYXBzKCk7CiAgICAgdmlydHVhbCBEM0RB
REFQVEVSX0lERU5USUZJRVI5ICpnZXRBZGFwdGVySWRlbnRpZmllcigpOwotICAgIGJvb2wgaXNE
ZXZpY2VMb3N0KCk7CisgICAgdmlydHVhbCBib29sIHRlc3REZXZpY2VMb3N0KCk7CisgICAgdmly
dHVhbCBib29sIHRlc3REZXZpY2VSZXNldHRhYmxlKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldE11
bHRpU2FtcGxlU3VwcG9ydChEM0RGT1JNQVQgZm9ybWF0LCBib29sICptdWx0aVNhbXBsZUFycmF5
KTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29tcHJlc3NlZFRleHR1cmVTdXBwb3J0KCk7CisgICAg
dmlydHVhbCBib29sIGdldERYVDFUZXh0dXJlU3VwcG9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBn
ZXREWFQzVGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RFhUNVRleHR1cmVT
dXBwb3J0KCk7CiAgICAgdmlydHVhbCBib29sIGdldEV2ZW50UXVlcnlTdXBwb3J0KCk7Ci0gICAg
dmlydHVhbCBib29sIGdldEZsb2F0VGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29s
ICpyZW5kZXJhYmxlKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0SGFsZkZsb2F0VGV4dHVyZVN1cHBv
cnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxlKTsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KGJvb2wgKmZpbHRlcmluZywgYm9vbCAqcmVuZGVyYWJs
ZSk7CisgICAgdmlydHVhbCBib29sIGdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydChib29sICpmaWx0
ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRMdW1pbmFuY2VU
ZXh0dXJlU3VwcG9ydCgpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRMdW1pbmFuY2VBbHBoYVRleHR1
cmVTdXBwb3J0KCk7CiAgICAgdmlydHVhbCBib29sIGdldFZlcnRleFRleHR1cmVTdXBwb3J0KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCkgY29u
c3Q7CiAgICAgdmlydHVhbCBEM0RQT09MIGdldEJ1ZmZlclBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0
OworICAgIHZpcnR1YWwgRDNEUE9PTCBnZXRUZXh0dXJlUG9vbChib29sIHJlbmRlcmFibGUpIGNv
bnN0OworCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeURldmljZUxvc3QoKTsKKyAgICBib29sIGlz
RGV2aWNlTG9zdCgpOwogCiAgICAgYm9vbCBpc0QzZDlFeERldmljZSgpIHsgcmV0dXJuIG1EM2Q5
RXggIT0gTlVMTDsgfQogICAgIGNvbnN0IGNoYXIgKmdldEV4dGVuc2lvblN0cmluZygpIGNvbnN0
OwpAQCAtNzksOCArODYsMTMgQEAgY2xhc3MgRGlzcGxheQogICBwcml2YXRlOgogICAgIERJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihEaXNwbGF5KTsKIAorICAgIERpc3BsYXkoRUdMTmF0aXZlRGlz
cGxheVR5cGUgZGlzcGxheUlkLCBIREMgZGV2aWNlQ29udGV4dCwgYm9vbCBzb2Z0d2FyZSk7CisK
ICAgICBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgZ2V0RGVmYXVsdFByZXNlbnRQYXJhbWV0ZXJzKCk7
CiAKKyAgICBib29sIHJlc3RvcmVMb3N0RGV2aWNlKCk7CisKKyAgICBFR0xOYXRpdmVEaXNwbGF5
VHlwZSBtRGlzcGxheUlkOwogICAgIGNvbnN0IEhEQyBtRGM7CiAKICAgICBITU9EVUxFIG1EM2Q5
TW9kdWxlOwpAQCAtOTgsNiArMTEwLDcgQEAgY2xhc3MgRGlzcGxheQogICAgIGJvb2wgbVNjZW5l
U3RhcnRlZDsKICAgICBFR0xpbnQgbU1heFN3YXBJbnRlcnZhbDsKICAgICBFR0xpbnQgbU1pblN3
YXBJbnRlcnZhbDsKKyAgICBib29sIG1Tb2Z0d2FyZURldmljZTsKICAgICAKICAgICB0eXBlZGVm
IHN0ZDo6c2V0PFN1cmZhY2UqPiBTdXJmYWNlU2V0OwogICAgIFN1cmZhY2VTZXQgbVN1cmZhY2VT
ZXQ7CkBAIC0xMDYsOCArMTE5LDEwIEBAIGNsYXNzIERpc3BsYXkKIAogICAgIHR5cGVkZWYgc3Rk
OjpzZXQ8Z2w6OkNvbnRleHQqPiBDb250ZXh0U2V0OwogICAgIENvbnRleHRTZXQgbUNvbnRleHRT
ZXQ7CisgICAgYm9vbCBtRGV2aWNlTG9zdDsKIAogICAgIGJvb2wgY3JlYXRlRGV2aWNlKCk7Cisg
ICAgdm9pZCBpbml0aWFsaXplRGV2aWNlKCk7CiAgICAgYm9vbCByZXNldERldmljZSgpOwogCiAg
ICAgdm9pZCBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9TdXJmYWNlLmNwcAppbmRleCBlYWZlNWUyZDNhMDlhYjZkMDE4NzA2MjIx
ZWQ3NTI5N2MzN2JkMDI3Li5hYzJlMmQ5YTU3ZjNjYWRjYjI4MDZiNTdhMGY2ZTY1MTJkYzc2OGZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvU3VyZmFjZS5jcHAK
QEAgLTM5LDggKzM5LDggQEAgaW50IGdldENvbXBhcmFibGVPU1ZlcnNpb24oKQogfQogfQogCi1T
dXJmYWNlOjpTdXJmYWNlKERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IENvbmZpZyAqY29uZmlnLCBI
V05EIHdpbmRvdykgCi0gICAgOiBtRGlzcGxheShkaXNwbGF5KSwgbUNvbmZpZyhjb25maWcpLCBt
V2luZG93KHdpbmRvdykKK1N1cmZhY2U6OlN1cmZhY2UoRGlzcGxheSAqZGlzcGxheSwgY29uc3Qg
Q29uZmlnICpjb25maWcsIEhXTkQgd2luZG93LCBFR0xpbnQgcG9zdFN1YkJ1ZmZlclN1cHBvcnRl
ZCkgCisgICAgOiBtRGlzcGxheShkaXNwbGF5KSwgbUNvbmZpZyhjb25maWcpLCBtV2luZG93KHdp
bmRvdyksIG1Qb3N0U3ViQnVmZmVyU3VwcG9ydGVkKHBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQpCiB7
CiAgICAgbVN3YXBDaGFpbiA9IE5VTEw7CiAgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7CkBAIC02
MSw3ICs2MSw3IEBAIFN1cmZhY2U6OlN1cmZhY2UoRGlzcGxheSAqZGlzcGxheSwgY29uc3QgQ29u
ZmlnICpjb25maWcsIEhXTkQgd2luZG93KQogfQogCiBTdXJmYWNlOjpTdXJmYWNlKERpc3BsYXkg
KmRpc3BsYXksIGNvbnN0IENvbmZpZyAqY29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUsIEVHTGlu
dCB3aWR0aCwgRUdMaW50IGhlaWdodCwgRUdMZW51bSB0ZXh0dXJlRm9ybWF0LCBFR0xlbnVtIHRl
eHR1cmVUeXBlKQotICAgIDogbURpc3BsYXkoZGlzcGxheSksIG1XaW5kb3coTlVMTCksIG1Db25m
aWcoY29uZmlnKSwgbVNoYXJlSGFuZGxlKHNoYXJlSGFuZGxlKSwgbVdpZHRoKHdpZHRoKSwgbUhl
aWdodChoZWlnaHQpCisgICAgOiBtRGlzcGxheShkaXNwbGF5KSwgbVdpbmRvdyhOVUxMKSwgbUNv
bmZpZyhjb25maWcpLCBtU2hhcmVIYW5kbGUoc2hhcmVIYW5kbGUpLCBtV2lkdGgod2lkdGgpLCBt
SGVpZ2h0KGhlaWdodCksIG1Qb3N0U3ViQnVmZmVyU3VwcG9ydGVkKEVHTF9GQUxTRSkKIHsKICAg
ICBtU3dhcENoYWluID0gTlVMTDsKICAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsKQEAgLTEwNiw3
ICsxMDYsNyBAQCBib29sIFN1cmZhY2U6OmluaXRpYWxpemUoKQogCiAgICAgICAgIHJlc3VsdCA9
IER3bVNldFByZXNlbnRQYXJhbWV0ZXJzKG1XaW5kb3csICZwcmVzZW50UGFyYW1zKTsKICAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICAgIEVSUigiVW5hYmxlIHRvIHNldCBwcmVz
ZW50IHBhcmFtZXRlcnM6ICUwODFYIiwgcmVzdWx0KTsKKyAgICAgICAgICBFUlIoIlVuYWJsZSB0
byBzZXQgcHJlc2VudCBwYXJhbWV0ZXJzOiAweCUwOFgiLCByZXN1bHQpOwogICAgICAgfQogICAg
IH0KIApAQCAtMTc0LDYgKzE3NCwxMyBAQCBib29sIFN1cmZhY2U6OnJlc2V0U3dhcENoYWluKGlu
dCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCisgICAgSURpcmVjdDNEU3VyZmFjZTkqIHByZXNlcnZlZFJlbmRlclRh
cmdldCA9IE5VTEw7CisgICAgaWYgKG1Qb3N0U3ViQnVmZmVyU3VwcG9ydGVkICYmIG1SZW5kZXJU
YXJnZXQpCisgICAgeworICAgICAgICBwcmVzZXJ2ZWRSZW5kZXJUYXJnZXQgPSBtUmVuZGVyVGFy
Z2V0OworICAgICAgICBwcmVzZXJ2ZWRSZW5kZXJUYXJnZXQtPkFkZFJlZigpOworICAgIH0KKwog
ICAgIC8vIEV2aWN0IGFsbCBub24tcmVuZGVyIHRhcmdldCB0ZXh0dXJlcyB0byBzeXN0ZW0gbWVt
b3J5IGFuZCByZWxlYXNlIGFsbCByZXNvdXJjZXMKICAgICAvLyBiZWZvcmUgcmVhbGxvY2F0aW5n
IHRoZW0gdG8gZnJlZSB1cCBhcyBtdWNoIHZpZGVvIG1lbW9yeSBhcyBwb3NzaWJsZS4KICAgICBk
ZXZpY2UtPkV2aWN0TWFuYWdlZFJlc291cmNlcygpOwpAQCAtMTkxLDggKzE5OCwzMiBAQCBib29s
IFN1cmZhY2U6OnJlc2V0U3dhcENoYWluKGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVm
ZmVySGVpZ2h0KQogICAgIC8vIHRoZSBjdXJyZW50IHByb2Nlc3MsIGRpc2FibGUgdXNlIG9mIEZs
aXBFeC4KICAgICBEV09SRCB3aW5kb3dQSUQ7CiAgICAgR2V0V2luZG93VGhyZWFkUHJvY2Vzc0lk
KG1XaW5kb3csICZ3aW5kb3dQSUQpOwotICAgIGlmKHdpbmRvd1BJRCAhPSBHZXRDdXJyZW50UHJv
Y2Vzc0lkKCkpCi0gICAgdXNlRmxpcEV4ID0gZmFsc2U7CisgICAgaWYgKHdpbmRvd1BJRCAhPSBH
ZXRDdXJyZW50UHJvY2Vzc0lkKCkpCisgICAgeworICAgICAgICB1c2VGbGlwRXggPSBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyBWYXJpb3VzIGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgRDNEU1dB
UEVGRkVDVF9GTElQRVggd2hlbiBlaXRoZXIgdGhlCisgICAgLy8gZGV2aWNlIGZvcm1hdCBvciBi
YWNrIGJ1ZmZlciBmb3JtYXQgaXMgbm90IDMyLWJpdC4KKyAgICBIREMgZGV2aWNlQ29udGV4dCA9
IEdldERDKDApOworICAgIGludCBkZXZpY2VGb3JtYXRCaXRzID0gR2V0RGV2aWNlQ2FwcyhkZXZp
Y2VDb250ZXh0LCBCSVRTUElYRUwpOworICAgIFJlbGVhc2VEQygwLCBkZXZpY2VDb250ZXh0KTsK
KyAgICBpZiAobUNvbmZpZy0+bUJ1ZmZlclNpemUgIT0gMzIgfHwgZGV2aWNlRm9ybWF0Qml0cyAh
PSAzMikKKyAgICB7CisgICAgICAgIHVzZUZsaXBFeCA9IGZhbHNlOworICAgIH0KKworICAgIC8v
IEQzRFNXQVBFRkZFQ1RfRkxJUEVYIGlzIGFsd2F5cyBWU1lOQ2VkCisgICAgaWYgKG1Td2FwSW50
ZXJ2YWwgPT0gMCkKKyAgICB7CisgICAgICAgIHVzZUZsaXBFeCA9IGZhbHNlOworICAgIH0KKwor
ICAgIC8vIEQzRFNXQVBFRkZFQ1RfRkxJUEVYIGRvZXMgbm90IHByZXNlcnZlIHRoZSBiYWNrIGJ1
ZmZlci4KKyAgICBpZiAobVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQpCisgICAgeworICAgICAgICB1
c2VGbGlwRXggPSBmYWxzZTsKKyAgICB9CiAKICAgICBwcmVzZW50UGFyYW1ldGVycy5BdXRvRGVw
dGhTdGVuY2lsRm9ybWF0ID0gbUNvbmZpZy0+bURlcHRoU3RlbmNpbEZvcm1hdDsKICAgICAvLyBX
ZSBzZXQgQmFja0J1ZmZlckNvdW50ID0gMSBldmVuIHdoZW4gd2UgdXNlIEQzRFNXQVBFRkZFQ1Rf
RkxJUEVYLgpAQCAtMjEyLDcgKzI0Myw3IEBAIGJvb2wgU3VyZmFjZTo6cmVzZXRTd2FwQ2hhaW4o
aW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpCiAgICAgaWYodXNlRmxp
cEV4KQogICAgICAgcHJlc2VudFBhcmFtZXRlcnMuU3dhcEVmZmVjdCA9IEQzRFNXQVBFRkZFQ1Rf
RkxJUEVYOwogICAgIGVsc2UKLSAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLlN3YXBFZmZlY3QgPSBE
M0RTV0FQRUZGRUNUX0RJU0NBUkQ7CisgICAgICBwcmVzZW50UGFyYW1ldGVycy5Td2FwRWZmZWN0
ID0gbVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQgPyBEM0RTV0FQRUZGRUNUX0NPUFkgOiBEM0RTV0FQ
RUZGRUNUX0RJU0NBUkQ7CiAgICAgcHJlc2VudFBhcmFtZXRlcnMuV2luZG93ZWQgPSBUUlVFOwog
ICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsK
ICAgICBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVySGVpZ2h0ID0gYmFja2J1ZmZlckhlaWdo
dDsKQEAgLTIzMiwxMSArMjYzLDY1IEBAIGJvb2wgU3VyZmFjZTo6cmVzZXRTd2FwQ2hhaW4oaW50
IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpCiAKICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCiAgICAgewotICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJ
REVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgQVNTRVJUKHJl
c3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9S
WSB8fCByZXN1bHQgPT0gRDNERVJSX0lOVkFMSURDQUxMIHx8IHJlc3VsdCA9PSBEM0RFUlJfREVW
SUNFTE9TVCk7CiAKICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGFkZGl0aW9uYWwgc3dh
cCBjaGFpbnMgb3Igb2Zmc2NyZWVuIHN1cmZhY2VzOiAlMDhsWCIsIHJlc3VsdCk7CiAgICAgICAg
IHJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIGZhbHNlKTsK
KworICAgICAgICAKKyAgICAgICAgaWYgKHByZXNlcnZlZFJlbmRlclRhcmdldCkKKyAgICAgICAg
eworICAgICAgICAgICAgcHJlc2VydmVkUmVuZGVyVGFyZ2V0LT5SZWxlYXNlKCk7CisgICAgICAg
ICAgICBwcmVzZXJ2ZWRSZW5kZXJUYXJnZXQgPSBOVUxMOworICAgICAgICB9CisKKyAgICAgICAg
aWYoaXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgbURp
c3BsYXktPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJv
cihFR0xfQkFEX0FMTE9DLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobVdp
bmRvdykKKyAgICB7CisgICAgICAgIG1Td2FwQ2hhaW4tPkdldEJhY2tCdWZmZXIoMCwgRDNEQkFD
S0JVRkZFUl9UWVBFX01PTk8sICZtUmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgaWYgKCFwcmVzZXJ2
ZWRSZW5kZXJUYXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEludmFsaWRhdGVSZWN0KG1X
aW5kb3csIE5VTEwsIEZBTFNFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBtT2Zmc2NyZWVuVGV4dHVyZS0+R2V0U3VyZmFjZUxldmVsKDAsICZtUmVuZGVyVGFy
Z2V0KTsKKyAgICB9CisKKyAgICBpZiAocHJlc2VydmVkUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAg
ICAgICAgUkVDVCByZWN0ID0KKyAgICAgICAgeworICAgICAgICAgICAgMCwgMCwKKyAgICAgICAg
ICAgIG1XaWR0aCwgbUhlaWdodAorICAgICAgICB9OworCisgICAgICAgIGlmIChyZWN0LnJpZ2h0
ID4gc3RhdGljX2Nhc3Q8TE9ORz4ocHJlc2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlcldpZHRoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmVjdC5yaWdodCA9IHByZXNlbnRQYXJhbWV0ZXJzLkJh
Y2tCdWZmZXJXaWR0aDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWN0LmJvdHRvbSA+IHN0
YXRpY19jYXN0PExPTkc+KHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJIZWlnaHQpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZWN0LmJvdHRvbSA9IHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tC
dWZmZXJIZWlnaHQ7CisgICAgICAgIH0KKworICAgICAgICBtRGlzcGxheS0+ZW5kU2NlbmUoKTsK
KyAgICAgICAgZGV2aWNlLT5TdHJldGNoUmVjdChwcmVzZXJ2ZWRSZW5kZXJUYXJnZXQsICZyZWN0
LCBtUmVuZGVyVGFyZ2V0LCAmcmVjdCwgRDNEVEVYRl9OT05FKTsKKworICAgICAgICBwcmVzZXJ2
ZWRSZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKKyAgICAgICAgcHJlc2VydmVkUmVuZGVyVGFyZ2V0
ID0gTlVMTDsKICAgICB9CiAKICAgICBpZiAobUNvbmZpZy0+bURlcHRoU3RlbmNpbEZvcm1hdCAh
PSBEM0RGTVRfVU5LTk9XTikKQEAgLTI0OCwyMCArMzMzLDEzIEBAIGJvb2wgU3VyZmFjZTo6cmVz
ZXRTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpCiAK
ICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBBU1NFUlQocmVzdWx0ID09
IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAg
ICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQg
PT0gRV9PVVRPRk1FTU9SWSB8fCByZXN1bHQgPT0gRDNERVJSX0lOVkFMSURDQUxMKTsKIAotICAg
ICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgZGVwdGhzdGVuY2lsIHN1cmZhY2UgZm9yIG5ldyBz
d2FwIGNoYWluOiAlMDhsWCIsIHJlc3VsdCk7CisgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0
ZSBkZXB0aHN0ZW5jaWwgc3VyZmFjZSBmb3IgbmV3IHN3YXAgY2hhaW46IDB4JTA4WCIsIHJlc3Vs
dCk7CiAgICAgICAgIHJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxM
T0MsIGZhbHNlKTsKICAgICB9CiAKLSAgICBpZiAobVdpbmRvdykgewotICAgICAgICBtU3dhcENo
YWluLT5HZXRCYWNrQnVmZmVyKDAsIEQzREJBQ0tCVUZGRVJfVFlQRV9NT05PLCAmbVJlbmRlclRh
cmdldCk7Ci0gICAgICAgIEludmFsaWRhdGVSZWN0KG1XaW5kb3csIE5VTEwsIEZBTFNFKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBtT2Zmc2NyZWVuVGV4dHVyZS0+R2V0U3VyZmFjZUxldmVsKDAs
ICZtUmVuZGVyVGFyZ2V0KTsKLSAgICB9Ci0KICAgICBtV2lkdGggPSBwcmVzZW50UGFyYW1ldGVy
cy5CYWNrQnVmZmVyV2lkdGg7CiAgICAgbUhlaWdodCA9IHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tC
dWZmZXJIZWlnaHQ7CiAKQEAgLTMwNyw3ICszODUsNyBAQCB2b2lkIFN1cmZhY2U6OnN1YmNsYXNz
V2luZG93KCkKICAgICB9CiAKICAgICBTZXRMYXN0RXJyb3IoMCk7Ci0gICAgTE9ORyBvbGRXbmRQ
cm9jID0gU2V0V2luZG93TG9uZyhtV2luZG93LCBHV0xfV05EUFJPQywgcmVpbnRlcnByZXRfY2Fz
dDxMT05HPihTdXJmYWNlV2luZG93UHJvYykpOworICAgIExPTkdfUFRSIG9sZFduZFByb2MgPSBT
ZXRXaW5kb3dMb25nUHRyKG1XaW5kb3csIEdXTFBfV05EUFJPQywgcmVpbnRlcnByZXRfY2FzdDxM
T05HX1BUUj4oU3VyZmFjZVdpbmRvd1Byb2MpKTsKICAgICBpZihvbGRXbmRQcm9jID09IDAgJiYg
R2V0TGFzdEVycm9yKCkgIT0gRVJST1JfU1VDQ0VTUykKICAgICB7CiAgICAgICAgIG1XaW5kb3dT
dWJjbGFzc2VkID0gZmFsc2U7CkBAIC0zMjcsNyArNDA1LDcgQEAgdm9pZCBTdXJmYWNlOjp1bnN1
YmNsYXNzV2luZG93KCkKICAgICB9CiAKICAgICAvLyB1bi1zdWJjbGFzcwotICAgIExPTkcgcGFy
ZW50V25kRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TE9ORz4oR2V0UHJvcChtV2luZG93LCBrUGFy
ZW50V25kUHJvYykpOworICAgIExPTkdfUFRSIHBhcmVudFduZEZ1bmMgPSByZWludGVycHJldF9j
YXN0PExPTkdfUFRSPihHZXRQcm9wKG1XaW5kb3csIGtQYXJlbnRXbmRQcm9jKSk7CiAKICAgICAv
LyBDaGVjayB0aGUgd2luZG93cHJvYyBpcyBzdGlsbCBTdXJmYWNlV2luZG93UHJvYy4KICAgICAv
LyBJZiB0aGlzIGFzc2VydCBmYWlscywgdGhlbiBpdCBpcyBsaWtlbHkgdGhlIGFwcGxpY2F0aW9u
IGhhcyBzdWJjbGFzc2VkIHRoZQpAQCAtMzM2LDggKzQxNCw4IEBAIHZvaWQgU3VyZmFjZTo6dW5z
dWJjbGFzc1dpbmRvdygpCiAgICAgLy8gRUdMIGNvbnRleHQsIG9yIHRvIHVuc3ViY2xhc3MgYmVm
b3JlIGRlc3Ryb3lpbmcgdGhlIEVHTCBjb250ZXh0LgogICAgIGlmKHBhcmVudFduZEZ1bmMpCiAg
ICAgewotICAgICAgICBMT05HIHByZXZXbmRGdW5jID0gU2V0V2luZG93TG9uZyhtV2luZG93LCBH
V0xfV05EUFJPQywgcGFyZW50V25kRnVuYyk7Ci0gICAgICAgIEFTU0VSVChwcmV2V25kRnVuYyA9
PSByZWludGVycHJldF9jYXN0PExPTkc+KFN1cmZhY2VXaW5kb3dQcm9jKSk7CisgICAgICAgIExP
TkdfUFRSIHByZXZXbmRGdW5jID0gU2V0V2luZG93TG9uZ1B0cihtV2luZG93LCBHV0xQX1dORFBS
T0MsIHBhcmVudFduZEZ1bmMpOworICAgICAgICBBU1NFUlQocHJldlduZEZ1bmMgPT0gcmVpbnRl
cnByZXRfY2FzdDxMT05HX1BUUj4oU3VyZmFjZVdpbmRvd1Byb2MpKTsKICAgICB9CiAKICAgICBS
ZW1vdmVQcm9wKG1XaW5kb3csIGtTdXJmYWNlUHJvcGVydHkpOwpAQCAtMzk1LDYgKzQ3Myw2NSBA
QCBib29sIFN1cmZhY2U6OnN3YXAoKQogCiAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVN3YXBD
aGFpbi0+UHJlc2VudChOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCAwKTsKIAorICAgICAgICBpZiAo
cmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVN
T1JZKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywg
ZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzRGV2aWNlTG9zdEVycm9yKHJlc3Vs
dCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EaXNwbGF5LT5ub3RpZnlEZXZpY2VMb3N0KCk7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgIGNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWlu
KCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3VyZmFjZTo6cG9zdFN1
YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkK
K3sKKyAgICBpZiAoeCA8IDAgfHwgeSA8IDAgfHwgd2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisg
ICAgeworICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsIGZhbHNlKTsKKyAg
ICB9CisKKyAgICBpZiAoIW1Qb3N0U3ViQnVmZmVyU3VwcG9ydGVkKQorICAgIHsKKyAgICAgICAg
Ly8gU3BlYyBpcyBub3QgY2xlYXIgYWJvdXQgaG93IHRoaXMgc2hvdWxkIGJlIGhhbmRsZWQuCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChtU3dhcENoYWluKQorICAgIHsK
KyAgICAgICAgbURpc3BsYXktPmVuZFNjZW5lKCk7CisKKyAgICAgICAgUkVDVCByZWN0ID0KKyAg
ICAgICAgeworICAgICAgICAgICAgeCwgbUhlaWdodCAtIHkgLSBoZWlnaHQsCisgICAgICAgICAg
ICB4ICsgd2lkdGgsIG1IZWlnaHQgLSB5CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHJlY3Qu
cmlnaHQgPiBtV2lkdGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlY3QucmlnaHQgPSBtV2lk
dGg7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVjdC5ib3R0b20gPiBtSGVpZ2h0KQorICAg
ICAgICB7CisgICAgICAgICAgICByZWN0LmJvdHRvbSA9IG1IZWlnaHQ7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAocmVjdC5sZWZ0ID09IHJlY3QucmlnaHQgfHwgcmVjdC50b3AgPT0gcmVjdC5i
b3R0b20pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtU3dhcENoYWluLT5QcmVzZW50KCZyZWN0LCAmcmVj
dCwgTlVMTCwgTlVMTCwgMCk7CisKICAgICAgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZW
SURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCByZXN1bHQgPT0gRDNERVJS
X0RSSVZFUklOVEVSTkFMRVJST1IpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBlcnJv
cihFR0xfQkFEX0FMTE9DLCBmYWxzZSk7CkBAIC00MjMsNiArNTYwLDExIEBAIEVHTGludCBTdXJm
YWNlOjpnZXRIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBtSGVpZ2h0OwogfQogCitFR0xpbnQg
U3VyZmFjZTo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQ7Cit9CisKIElEaXJlY3QzRFN1cmZhY2U5ICpTdXJmYWNl
OjpnZXRSZW5kZXJUYXJnZXQoKQogewogICAgIGlmIChtUmVuZGVyVGFyZ2V0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TdXJmYWNlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuaAppbmRleCA5OWM0YjY3NjlhYzQx
NGQ0MWZiZGQ0ZmYyMzcwNGVlNDRkMDhkMDdkLi4zNTI2MGRlNTY1MzVjM2Q3ZGJjZmQ0OWM3NWEy
NmIzYTNhMDFlYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
RUdML1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1
cmZhY2UuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBDb25maWc7CiBjbGFzcyBTdXJmYWNlCiB7
CiAgIHB1YmxpYzoKLSAgICBTdXJmYWNlKERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWcsIEhXTkQgd2luZG93KTsKKyAgICBTdXJmYWNlKERpc3BsYXkgKmRpc3BsYXks
IGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsIEhXTkQgd2luZG93LCBFR0xpbnQgcG9zdFN1YkJ1
ZmZlclN1cHBvcnRlZCk7CiAgICAgU3VyZmFjZShEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBlZ2w6
OkNvbmZpZyAqY29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUsIEVHTGludCB3aWR0aCwgRUdMaW50
IGhlaWdodCwgRUdMZW51bSB0ZXh0dXJlRm9ybWF0LCBFR0xlbnVtIHRleHR1cmVUYXJnZXQpOwog
CiAgICAgflN1cmZhY2UoKTsKQEAgLTQxLDEwICs0MSwxMyBAQCBjbGFzcyBTdXJmYWNlCiAKICAg
ICBIV05EIGdldFdpbmRvd0hhbmRsZSgpOwogICAgIGJvb2wgc3dhcCgpOworICAgIGJvb2wgcG9z
dFN1YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdo
dCk7CiAKICAgICB2aXJ0dWFsIEVHTGludCBnZXRXaWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwg
RUdMaW50IGdldEhlaWdodCgpIGNvbnN0OwogCisgICAgdmlydHVhbCBFR0xpbnQgaXNQb3N0U3Vi
QnVmZmVyU3VwcG9ydGVkKCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5
ICpnZXRSZW5kZXJUYXJnZXQoKTsKICAgICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRE
ZXB0aFN0ZW5jaWwoKTsKICAgICB2aXJ0dWFsIElEaXJlY3QzRFRleHR1cmU5ICpnZXRPZmZzY3Jl
ZW5UZXh0dXJlKCk7CkBAIC05Niw2ICs5OSw4IEBAIHByaXZhdGU6CiAvLyAgRUdMZW51bSB2Z0Fs
cGhhRm9ybWF0OyAgICAgICAgIC8vIEFscGhhIGZvcm1hdCBmb3IgT3BlblZHCiAvLyAgRUdMZW51
bSB2Z0NvbG9yU3BhY2U7ICAgICAgICAgIC8vIENvbG9yIHNwYWNlIGZvciBPcGVuVkcKICAgICBF
R0xpbnQgbVN3YXBJbnRlcnZhbDsKKyAgICBFR0xpbnQgbVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQ7
CisgICAgCiAgICAgRFdPUkQgbVByZXNlbnRJbnRlcnZhbDsKICAgICBib29sIG1QcmVzZW50SW50
ZXJ2YWxEaXJ0eTsKICAgICBnbDo6VGV4dHVyZTJEICptVGV4dHVyZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmNwcAppbmRleCA4Njg5YTRlY2NlYzY4NjAx
ZTQ3ZGJjYTNjZWY5OWRkY2EyMjU1OTU4Li5mZmZkYTc4NDk2ZDAwY2JjYzU0ZjMxN2VlZjNjOGNi
MGI2NDA4MzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdM
L2xpYkVHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJF
R0wuY3BwCkBAIC05OSwxOCArOTksNyBAQCBFR0xEaXNwbGF5IF9fc3RkY2FsbCBlZ2xHZXREaXNw
bGF5KEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlfaWQpCiAKICAgICB0cnkKICAgICB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBSZXR1cm4gdGhlIHNhbWUgRUdMRGlzcGxheSBoYW5kbGUgd2hlbiBk
aXNwbGF5X2lkIGFscmVhZHkgY3JlYXRlZCBhIGRpc3BsYXkKLQotICAgICAgICBpZiAoZGlzcGxh
eV9pZCA9PSBFR0xfREVGQVVMVF9ESVNQTEFZKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IGVnbDo6RGlzcGxheSgoSERDKU5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgewotICAgICAgICAgICAgLy8gRklYTUU6IENoZWNrIGlmIGRpc3BsYXlfaWQgaXMg
YSB2YWxpZCBkaXNwbGF5IGRldmljZSBjb250ZXh0Ci0KLSAgICAgICAgICAgIHJldHVybiBuZXcg
ZWdsOjpEaXNwbGF5KChIREMpZGlzcGxheV9pZCk7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGVnbDo6RGlzcGxheTo6Z2V0RGlzcGxheShkaXNwbGF5X2lkKTsKICAgICB9CiAgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQogICAgIHsKQEAgLTQ5OSw2ICs0ODgsOSBAQCBFR0xCb29sZWFuIF9f
c3RkY2FsbCBlZ2xRdWVyeVN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFj
ZSwgRUdMaW50CiAgICAgICAgICAgY2FzZSBFR0xfV0lEVEg6CiAgICAgICAgICAgICAqdmFsdWUg
PSBlZ2xTdXJmYWNlLT5nZXRXaWR0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
Y2FzZSBFR0xfUE9TVF9TVUJfQlVGRkVSX1NVUFBPUlRFRF9OVjoKKyAgICAgICAgICAgICp2YWx1
ZSA9IGVnbFN1cmZhY2UtPmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xf
QkFEX0FUVFJJQlVURSwgRUdMX0ZBTFNFKTsKICAgICAgICAgfQpAQCAtNzI2LDcgKzcxOCwxMCBA
QCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xCaW5kVGV4SW1hZ2UoRUdMRGlzcGxheSBkcHksIEVH
TFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50CiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JB
RF9NQVRDSCwgRUdMX0ZBTFNFKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsQmluZFRleEltYWdl
KGVnbFN1cmZhY2UpOworICAgICAgICBpZiAoIWdsQmluZFRleEltYWdlKGVnbFN1cmZhY2UpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX0ZB
TFNFKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBzdWNjZXNzKEVHTF9UUlVFKTsKICAg
ICB9CkBAIC04MjUsMTYgKzgyMCwzNCBAQCBFR0xDb250ZXh0IF9fc3RkY2FsbCBlZ2xDcmVhdGVD
b250ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xDb250ZQogICAgIHsK
ICAgICAgICAgLy8gR2V0IHRoZSByZXF1ZXN0ZWQgY2xpZW50IHZlcnNpb24gKGRlZmF1bHQgaXMg
MSkgYW5kIGNoZWNrIGl0IGlzIHR3by4KICAgICAgICAgRUdMaW50IGNsaWVudF92ZXJzaW9uID0g
MTsKKyAgICAgICAgYm9vbCByZXNldF9ub3RpZmljYXRpb24gPSBmYWxzZTsKKyAgICAgICAgYm9v
bCByb2J1c3RfYWNjZXNzID0gZmFsc2U7CisKICAgICAgICAgaWYgKGF0dHJpYl9saXN0KQogICAg
ICAgICB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IEVHTGludCogYXR0cmlidXRlID0gYXR0cmli
X2xpc3Q7IGF0dHJpYnV0ZVswXSAhPSBFR0xfTk9ORTsgYXR0cmlidXRlICs9IDIpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZVswXSA9PSBFR0xfQ09OVEVYVF9D
TElFTlRfVkVSU0lPTikKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZVswXSkKICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9DT05URVhUX0NMSUVO
VF9WRVJTSU9OOgogICAgICAgICAgICAgICAgICAgICBjbGllbnRfdmVyc2lvbiA9IGF0dHJpYnV0
ZVsxXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBj
YXNlIEVHTF9DT05URVhUX09QRU5HTF9ST0JVU1RfQUNDRVNTX0VYVDoKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGF0dHJpYnV0ZVsxXSA9PSBFR0xfVFJVRSkKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQ09ORklHLCBF
R0xfTk9fQ09OVEVYVCk7ICAgLy8gVW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgICAgICAgICAg
ICAgcm9idXN0X2FjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlWzFdICE9IEVHTF9GQUxTRSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX0NP
TlRFWFQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNh
c2UgRUdMX0NPTlRFWFRfT1BFTkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQ6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVbMV0gPT0gRUdMX0xPU0VfQ09OVEVYVF9P
Tl9SRVNFVF9FWFQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9ub3RpZmljYXRpb24g
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVbMV0gIT0gRUdM
X05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19DT05URVhUKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC04NDUsNiArODU4LDExIEBAIEVH
TENvbnRleHQgX19zdGRjYWxsIGVnbENyZWF0ZUNvbnRleHQoRUdMRGlzcGxheSBkcHksIEVHTENv
bmZpZyBjb25maWcsIEVHTENvbnRlCiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9D
T05GSUcsIEVHTF9OT19DT05URVhUKTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChzaGFyZV9j
b250ZXh0ICYmIHN0YXRpY19jYXN0PGdsOjpDb250ZXh0Kj4oc2hhcmVfY29udGV4dCktPmlzUmVz
ZXROb3RpZmljYXRpb25FbmFibGVkKCkgIT0gcmVzZXRfbm90aWZpY2F0aW9uKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX0NPTlRFWFQp
OworICAgICAgICB9CisKICAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nh
c3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKIAogICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRp
c3BsYXksIGNvbmZpZykpCkBAIC04NTIsOSArODcwLDEyIEBAIEVHTENvbnRleHQgX19zdGRjYWxs
IGVnbENyZWF0ZUNvbnRleHQoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTENv
bnRlCiAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0NPTlRFWFQ7CiAgICAgICAgIH0KIAotICAg
ICAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBkaXNwbGF5LT5jcmVhdGVDb250ZXh0KGNvbmZpZywg
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihzaGFyZV9jb250ZXh0KSk7CisgICAgICAgIEVHTENv
bnRleHQgY29udGV4dCA9IGRpc3BsYXktPmNyZWF0ZUNvbnRleHQoY29uZmlnLCBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCo+KHNoYXJlX2NvbnRleHQpLCByZXNldF9ub3RpZmljYXRpb24sIHJvYnVz
dF9hY2Nlc3MpOwogCi0gICAgICAgIHJldHVybiBzdWNjZXNzKGNvbnRleHQpOworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBzdWNjZXNzKGNvbnRleHQpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX05P
X0NPTlRFWFQpOwogICAgIH0KICAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCiAgICAgewpAQCAt
OTA2LDcgKzkyNywxMyBAQCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xNYWtlQ3VycmVudChFR0xE
aXNwbGF5IGRweSwgRUdMU3VyZmFjZSBkcmF3LCBFR0xTdXJmYWNlCiAgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihjdHgpOwogICAgICAgICBJ
RGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBkaXNwbGF5LT5nZXREZXZpY2UoKTsKIAotICAgICAg
ICBpZiAoIWRldmljZSB8fCBkaXNwbGF5LT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAgaWYgKCFk
ZXZpY2UgfHwgZGlzcGxheS0+dGVzdERldmljZUxvc3QoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGlzcGxheS0+bm90aWZ5RGV2aWNlTG9zdCgpOworICAgICAgICAgICAgcmV0dXJuIEVHTF9G
QUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkaXNwbGF5LT5pc0RldmljZUxvc3QoKSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9DT05URVhUX0xPU1QsIEVH
TF9GQUxTRSk7CiAgICAgICAgIH0KQEAgLTEwODgsNiArMTExNSwxMSBAQCBFR0xCb29sZWFuIF9f
c3RkY2FsbCBlZ2xTd2FwQnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNl
KQogICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICAgICAgfQogCisgICAgICAgIGlm
IChkaXNwbGF5LT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEVHTF9DT05URVhUX0xPU1QsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKwogICAgICAg
ICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKQEAgLTExMjAsNiArMTE1
MiwxMSBAQCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xDb3B5QnVmZmVycyhFR0xEaXNwbGF5IGRw
eSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xOYXRpdgogICAgICAgICAgICAgcmV0dXJuIEVHTF9G
QUxTRTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChkaXNwbGF5LT5pc0RldmljZUxvc3QoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9DT05URVhUX0xPU1QsIEVH
TF9GQUxTRSk7CisgICAgICAgIH0KKwogICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklY
TUUKIAogICAgICAgICByZXR1cm4gc3VjY2VzcygwKTsKQEAgLTExMzIsNiArMTE2OSw0MyBAQCBF
R0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xDb3B5QnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3Vy
ZmFjZSBzdXJmYWNlLCBFR0xOYXRpdgogICAgIHJldHVybiBFR0xfRkFMU0U7CiB9CiAKK0VHTEJv
b2xlYW4gX19zdGRjYWxsIGVnbFBvc3RTdWJCdWZmZXJOVihFR0xEaXNwbGF5IGRweSwgRUdMU3Vy
ZmFjZSBzdXJmYWNlLCBFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhl
aWdodCkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFj
ZSBzdXJmYWNlID0gMHglMC44cCwgRUdMaW50IHggPSAlZCwgRUdMaW50IHkgPSAlZCwgRUdMaW50
IHdpZHRoID0gJWQsIEVHTGludCBoZWlnaHQgPSAlZCkiLCBkcHksIHN1cmZhY2UsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRp
c3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworICAgICAgICBlZ2w6OlN1
cmZhY2UgKmVnbFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihzdXJmYWNlKTsK
KworICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChkaXNwbGF5LT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEVHTF9DT05URVhUX0xPU1QsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChlZ2xTdXJmYWNlLT5wb3N0U3ViQnVmZmVyKHgsIHksIHdpZHRoLCBo
ZWlnaHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc3VjY2VzcyhFR0xfVFJVRSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorCisg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKK30KKwogX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Q
b2ludGVyVHlwZSBfX3N0ZGNhbGwgZWdsR2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqcHJvY25h
bWUpCiB7CiAgICAgRVZFTlQoIihjb25zdCBjaGFyICpwcm9jbmFtZSA9IFwiJXNcIikiLCBwcm9j
bmFtZSk7CkBAIC0xMTQ3LDYgKzEyMjEsNyBAQCBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlv
blBvaW50ZXJUeXBlIF9fc3RkY2FsbCBlZ2xHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBFeHRlbnNpb24gZWdsRXh0ZW5zaW9uc1tdID0KICAgICAgICAgewog
ICAgICAgICAgICAgeyJlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUiLCAoX19lZ2xNdXN0Q2Fz
dFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSllZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEV9
LAorICAgICAgICAgICAgeyJlZ2xQb3N0U3ViQnVmZmVyTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJv
cGVyRnVuY3Rpb25Qb2ludGVyVHlwZSllZ2xQb3N0U3ViQnVmZmVyTlZ9LAogICAgICAgICAgICAg
eyIiLCBOVUxMfSwKICAgICAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkVHTC9saWJFR0wucmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliRUdML2xpYkVHTC5yYwppbmRleCAxNWVkMjg1NjJlNGJmOGMxZTE2ZWQ5ZDM0MGMyMDc2ODI0
MjA2M2E0Li41ZDFmMzJmMWM5NDdjNTdmYmJlMTQ0MmM0MjIyZTUyNmNhYmYwZTU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5yYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5yYwpAQCAtNyw3ICs3LDcg
QEAKIC8vCiAvLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4KIC8v
Ci0jaW5jbHVkZSAiYWZ4cmVzLmgiCisjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgIi4u
L2NvbW1vbi92ZXJzaW9uLmgiCiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3Byb2ogYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3Byb2oKaW5kZXggNjc2YmM5ODhi
YjFhYWU0ZWE3NmY0NzU1NjRlMGY1NzY3ZjZiYTdiNi4uNzIxM2Y5NTc5YWIzODE1N2VmMjY0OTIz
NGI1NTliNDBiNWMzMTc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkVHTC9saWJFR0wudmNwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJFR0wvbGliRUdMLnZjcHJvagpAQCAtMTIsNiArMTIsOSBAQAogCQk8UGxhdGZvcm0KIAkJCU5h
bWU9IldpbjMyIgogCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KIAk8L1Bs
YXRmb3Jtcz4KIAk8VG9vbEZpbGVzPgogCTwvVG9vbEZpbGVzPgpAQCAtMTQ0LDcgKzE0Nyw3IEBA
CiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZDNkOS5saWIgZHhndWlkLmxpYiBkd21hcGku
bGliIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlNb2R1bGVEZWZpbml0aW9uRmlsZT0i
bGliRUdMLmRlZiIKLQkJCQlEZWxheUxvYWRETExzPSJkd21hcGkubGliIgorCQkJCURlbGF5TG9h
ZERMTHM9ImR3bWFwaS5kbGwiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgog
CQkJCVN1YlN5c3RlbT0iMiIKIAkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCkBAIC0xNzYsNiAr
MTc5LDE2OCBAQAogCQkJCUNvbW1hbmRMaW5lPSJAZWNobyBvbiYjeDBEOyYjeDBBO21rZGlyICZx
dW90OyQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uTmFtZSlcJnF1b3Q7JiN4
MEQ7JiN4MEE7Y29weSAmcXVvdDskKE91dERpcilcbGliRUdMLmRsbCZxdW90OyAmcXVvdDskKFBy
b2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbk5hbWUpXCZxdW90OyYjeDBEOyYjeDBB
O2NvcHkgJnF1b3Q7JChPdXREaXIpXGxpYkVHTC5saWImcXVvdDsgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb25OYW1lKVwmcXVvdDsmI3gwRDsmI3gwQTtAZWNobyBv
ZmYmI3gwRDsmI3gwQTsiCiAJCQkvPgogCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0
aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25E
aXIpJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRl
RGlyZWN0b3J5PSIkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlDb25m
aWd1cmF0aW9uVHlwZT0iMiIKKwkJCUNoYXJhY3RlclNldD0iMSIKKwkJCT4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRh
R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVBy
b3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wi
CisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPSIkKFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2lu
Y2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfV0lORE9X
UztfVVNSRExMO0xJQkVHTF9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1B
WCIKKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMi
CisJCQkJUnVudGltZUxpYnJhcnk9IjEiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJ
CQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0i
ZmFsc2UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCS8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
TGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJkM2Q5LmxpYiBkeGd1aWQu
bGliIGR3bWFwaS5saWIiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCU1vZHVsZURlZmlu
aXRpb25GaWxlPSJsaWJFR0wuZGVmIgorCQkJCURlbGF5TG9hZERMTHM9ImR3bWFwaS5kbGwiCisJ
CQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJ
CQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249
IjAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgor
CQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29s
IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkJ
Q29tbWFuZExpbmU9IkBlY2hvIG9uJiN4MEQ7JiN4MEE7bWtkaXIgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb25OYW1lKVwmcXVvdDsmI3gwRDsmI3gwQTtjb3B5ICZx
dW90OyQoT3V0RGlyKVxsaWJFR0wuZGxsJnF1b3Q7ICZxdW90OyQoUHJvamVjdERpcikuLlwuLlxs
aWJcJChDb25maWd1cmF0aW9uTmFtZSlcJnF1b3Q7JiN4MEQ7JiN4MEE7Y29weSAmcXVvdDskKE91
dERpcilcbGliRUdMLmxpYiZxdW90OyAmcXVvdDskKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29u
ZmlndXJhdGlvbk5hbWUpXCZxdW90OyYjeDBEOyYjeDBBO0BlY2hvIG9mZiYjeDBEOyYjeDBBOyIK
KwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJl
bGVhc2V8eDY0IgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1O
YW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChQ
bGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9
IjIiCisJCQlDaGFyYWN0ZXJTZXQ9IjEiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEi
CisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIi
CisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjIiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz0iJChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRl
IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VT
UkRMTDtMSUJFR0xfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NF
Q1VSRV9TQ0w9MCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMCIKKwkJCQlVc2VQcmVjb21waWxlZEhl
YWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0
eVByb2JsZW1zPSJmYWxzZSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImQzZDku
bGliIGR4Z3VpZC5saWIgZHdtYXBpLmxpYiIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJ
TW9kdWxlRGVmaW5pdGlvbkZpbGU9ImxpYkVHTC5kZWYiCisJCQkJRGVsYXlMb2FkRExMcz0iZHdt
YXBpLmRsbCIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCisJCQkJU3ViU3lz
dGVtPSIyIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xk
aW5nPSIyIgorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSIKKwkJCQlEYXRhRXhlY3V0aW9u
UHJldmVudGlvbj0iMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5p
ZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJ
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBW
ZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50
VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iQGVjaG8gb24mI3gwRDsmI3gwQTtta2RpciAmcXVvdDsk
KFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbk5hbWUpXCZxdW90OyYjeDBEOyYj
eDBBO2NvcHkgJnF1b3Q7JChPdXREaXIpXGxpYkVHTC5kbGwmcXVvdDsgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb25OYW1lKVwmcXVvdDsmI3gwRDsmI3gwQTtjb3B5
ICZxdW90OyQoT3V0RGlyKVxsaWJFR0wubGliJnF1b3Q7ICZxdW90OyQoUHJvamVjdERpcikuLlwu
LlxsaWJcJChDb25maWd1cmF0aW9uTmFtZSlcJnF1b3Q7JiN4MEQ7JiN4MEE7QGVjaG8gb2ZmJiN4
MEQ7JiN4MEE7IgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgogCTwvQ29uZmlndXJhdGlvbnM+
CiAJPFJlZmVyZW5jZXM+CiAJPC9SZWZlcmVuY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3BwCmluZGV4IDJjZDE0OGUzMTQwNWJhNjcyN2Uy
OWI3ODE2YTdkYzk1ZTk5NGQwMmQuLmRkMTJlM2MwNzczYjc0M2M3NDY2YmFhMmFjOTdlMjkyYzJh
MTA2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1
ZmZlci5jcHAKQEAgLTc0LDYgKzc0LDggQEAgdm9pZCBCdWZmZXI6OmJ1ZmZlclN1YkRhdGEoY29u
c3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBHTGludHB0ciBvZmZzZXQpCiAgICAgewog
ICAgICAgICBpbnZhbGlkYXRlU3RhdGljRGF0YSgpOwogICAgIH0KKworICAgIG1Vbm1vZGlmaWVk
RGF0YVVzZSA9IDA7CiB9CiAKIFN0YXRpY1ZlcnRleEJ1ZmZlciAqQnVmZmVyOjpnZXRTdGF0aWNW
ZXJ0ZXhCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9Db250ZXh0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvQ29udGV4dC5jcHAKaW5kZXggNmM5NzNlYWQyMDc2MTI1Y2FjZmZjZjYxN2YwNjFjMTZlZTIz
MjYyZC4uOWI4ZjcyOWU3MWVmOTFmYzQ2MGMzMjQwYjRhMDk2N2ZmYmZmMzY0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuY3BwCkBAIC0z
OCw4ICszOCwxMyBAQCBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIGdsCiB7Ci1Db250ZXh0OjpDb250
ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNv
bnRleHQpIDogbUNvbmZpZyhjb25maWcpCitDb250ZXh0OjpDb250ZXh0KGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWcsIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5
UmVzZXRzLCBib29sIHJvYnVzdEFjY2VzcykgOiBtQ29uZmlnKGNvbmZpZykKIHsKKyAgICBBU1NF
UlQocm9idXN0QWNjZXNzID09IGZhbHNlKTsgICAvLyBVbmltcGxlbWVudGVkCisKKyAgICBtRGlz
cGxheSA9IE5VTEw7CisgICAgbURldmljZSA9IE5VTEw7CisKICAgICBtRmVuY2VIYW5kbGVBbGxv
Y2F0b3Iuc2V0QmFzZUhhbmRsZSgwKTsKIAogICAgIHNldENsZWFyQ29sb3IoMC4wZiwgMC4wZiwg
MC4wZiwgMC4wZik7CkBAIC0xNDIsNiArMTQ3LDcgQEAgQ29udGV4dDo6Q29udGV4dChjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlnLCBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0KSA6IG0K
IAogICAgIG1TdGF0ZS5wYWNrQWxpZ25tZW50ID0gNDsKICAgICBtU3RhdGUudW5wYWNrQWxpZ25t
ZW50ID0gNDsKKyAgICBtU3RhdGUucGFja1JldmVyc2VSb3dPcmRlciA9IGZhbHNlOwogCiAgICAg
bVZlcnRleERhdGFNYW5hZ2VyID0gTlVMTDsKICAgICBtSW5kZXhEYXRhTWFuYWdlciA9IE5VTEw7
CkBAIC0xNTUsOSArMTYxLDE2IEBAIENvbnRleHQ6OkNvbnRleHQoY29uc3QgZWdsOjpDb25maWcg
KmNvbmZpZywgY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCkgOiBtCiAgICAgbUludmFs
aWRGcmFtZWJ1ZmZlck9wZXJhdGlvbiA9IGZhbHNlOwogCiAgICAgbUhhc0JlZW5DdXJyZW50ID0g
ZmFsc2U7Ci0KLSAgICBtU3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZXMgPSBmYWxzZTsKKyAgICBt
Q29udGV4dExvc3QgPSBmYWxzZTsKKyAgICBtUmVzZXRTdGF0dXMgPSBHTF9OT19FUlJPUjsKKyAg
ICBtUmVzZXRTdHJhdGVneSA9IChub3RpZnlSZXNldHMgPyBHTF9MT1NFX0NPTlRFWFRfT05fUkVT
RVRfRVhUIDogR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VYVCk7CisgICAgbVJvYnVzdEFjY2Vz
cyA9IHJvYnVzdEFjY2VzczsKKworICAgIG1TdXBwb3J0c0RYVDFUZXh0dXJlcyA9IGZhbHNlOwor
ICAgIG1TdXBwb3J0c0RYVDNUZXh0dXJlcyA9IGZhbHNlOworICAgIG1TdXBwb3J0c0RYVDVUZXh0
dXJlcyA9IGZhbHNlOwogICAgIG1TdXBwb3J0c0V2ZW50UXVlcmllcyA9IGZhbHNlOworICAgIG1O
dW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHMgPSAwOwogICAgIG1NYXhTdXBwb3J0ZWRTYW1wbGVz
ID0gMDsKICAgICBtTWFza2VkQ2xlYXJTYXZlZFN0YXRlID0gTlVMTDsKICAgICBtYXJrQWxsU3Rh
dGVEaXJ0eSgpOwpAQCAtMjMxLDE5ICsyNDQsMjAgQEAgQ29udGV4dDo6fkNvbnRleHQoKQogCiB2
b2lkIENvbnRleHQ6Om1ha2VDdXJyZW50KGVnbDo6RGlzcGxheSAqZGlzcGxheSwgZWdsOjpTdXJm
YWNlICpzdXJmYWNlKQogewotICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGRpc3BsYXkt
PmdldERldmljZSgpOworICAgIG1EaXNwbGF5ID0gZGlzcGxheTsKKyAgICBtRGV2aWNlID0gbURp
c3BsYXktPmdldERldmljZSgpOwogCiAgICAgaWYgKCFtSGFzQmVlbkN1cnJlbnQpCiAgICAgewot
ICAgICAgICBtRGV2aWNlQ2FwcyA9IGRpc3BsYXktPmdldERldmljZUNhcHMoKTsKKyAgICAgICAg
bURldmljZUNhcHMgPSBtRGlzcGxheS0+Z2V0RGV2aWNlQ2FwcygpOwogCi0gICAgICAgIG1WZXJ0
ZXhEYXRhTWFuYWdlciA9IG5ldyBWZXJ0ZXhEYXRhTWFuYWdlcih0aGlzLCBkZXZpY2UpOwotICAg
ICAgICBtSW5kZXhEYXRhTWFuYWdlciA9IG5ldyBJbmRleERhdGFNYW5hZ2VyKHRoaXMsIGRldmlj
ZSk7CisgICAgICAgIG1WZXJ0ZXhEYXRhTWFuYWdlciA9IG5ldyBWZXJ0ZXhEYXRhTWFuYWdlcih0
aGlzLCBtRGV2aWNlKTsKKyAgICAgICAgbUluZGV4RGF0YU1hbmFnZXIgPSBuZXcgSW5kZXhEYXRh
TWFuYWdlcih0aGlzLCBtRGV2aWNlKTsKICAgICAgICAgbUJsaXQgPSBuZXcgQmxpdCh0aGlzKTsK
IAogICAgICAgICBtU3VwcG9ydHNTaGFkZXJNb2RlbDMgPSBtRGV2aWNlQ2Fwcy5QaXhlbFNoYWRl
clZlcnNpb24gPT0gRDNEUFNfVkVSU0lPTigzLCAwKTsKLSAgICAgICAgbVN1cHBvcnRzVmVydGV4
VGV4dHVyZSA9IGRpc3BsYXktPmdldFZlcnRleFRleHR1cmVTdXBwb3J0KCk7Ci0gICAgICAgIG1T
dXBwb3J0c05vblBvd2VyMlRleHR1cmUgPSBkaXNwbGF5LT5nZXROb25Qb3dlcjJUZXh0dXJlU3Vw
cG9ydCgpOworICAgICAgICBtU3VwcG9ydHNWZXJ0ZXhUZXh0dXJlID0gbURpc3BsYXktPmdldFZl
cnRleFRleHR1cmVTdXBwb3J0KCk7CisgICAgICAgIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmUg
PSBtRGlzcGxheS0+Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKTsKIAogICAgICAgICBtTWF4
VGV4dHVyZURpbWVuc2lvbiA9IHN0ZDo6bWluKHN0ZDo6bWluKChpbnQpbURldmljZUNhcHMuTWF4
VGV4dHVyZVdpZHRoLCAoaW50KW1EZXZpY2VDYXBzLk1heFRleHR1cmVIZWlnaHQpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpZ2w6OklNUExFTUVOVEFUSU9O
X01BWF9URVhUVVJFX1NJWkUpOwpAQCAtMjY1LDcgKzI3OSw3IEBAIHZvaWQgQ29udGV4dDo6bWFr
ZUN1cnJlbnQoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCiAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZW9mKHJlbmRlckJ1ZmZlckZvcm1hdHMpIC8g
c2l6ZW9mKEQzREZPUk1BVCk7ICsraSkKICAgICAgICAgewogICAgICAgICAgICAgYm9vbCAqbXVs
dGlzYW1wbGVBcnJheSA9IG5ldyBib29sW0QzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVMgKyAxXTsK
LSAgICAgICAgICAgIGRpc3BsYXktPmdldE11bHRpU2FtcGxlU3VwcG9ydChyZW5kZXJCdWZmZXJG
b3JtYXRzW2ldLCBtdWx0aXNhbXBsZUFycmF5KTsKKyAgICAgICAgICAgIG1EaXNwbGF5LT5nZXRN
dWx0aVNhbXBsZVN1cHBvcnQocmVuZGVyQnVmZmVyRm9ybWF0c1tpXSwgbXVsdGlzYW1wbGVBcnJh
eSk7CiAgICAgICAgICAgICBtTXVsdGlTYW1wbGVTdXBwb3J0W3JlbmRlckJ1ZmZlckZvcm1hdHNb
aV1dID0gbXVsdGlzYW1wbGVBcnJheTsKIAogICAgICAgICAgICAgZm9yIChpbnQgaiA9IEQzRE1V
TFRJU0FNUExFXzE2X1NBTVBMRVM7IGogPj0gMDsgLS1qKQpAQCAtMjc5LDE2ICsyOTMsMzMgQEAg
dm9pZCBDb250ZXh0OjptYWtlQ3VycmVudChlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3Vy
ZmFjZSAqc3VyZmFjZSkKIAogICAgICAgICBtTWF4U3VwcG9ydGVkU2FtcGxlcyA9IG1heDsKIAot
ICAgICAgICBtU3VwcG9ydHNFdmVudFF1ZXJpZXMgPSBkaXNwbGF5LT5nZXRFdmVudFF1ZXJ5U3Vw
cG9ydCgpOwotICAgICAgICBtU3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZXMgPSBkaXNwbGF5LT5n
ZXRDb21wcmVzc2VkVGV4dHVyZVN1cHBvcnQoKTsKLSAgICAgICAgbVN1cHBvcnRzRmxvYXRUZXh0
dXJlcyA9IGRpc3BsYXktPmdldEZsb2F0VGV4dHVyZVN1cHBvcnQoJm1TdXBwb3J0c0Zsb2F0TGlu
ZWFyRmlsdGVyLCAmbVN1cHBvcnRzRmxvYXRSZW5kZXJhYmxlVGV4dHVyZXMpOwotICAgICAgICBt
U3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcyA9IGRpc3BsYXktPmdldEhhbGZGbG9hdFRleHR1cmVT
dXBwb3J0KCZtU3VwcG9ydHNIYWxmRmxvYXRMaW5lYXJGaWx0ZXIsICZtU3VwcG9ydHNIYWxmRmxv
YXRSZW5kZXJhYmxlVGV4dHVyZXMpOwotICAgICAgICBtU3VwcG9ydHNMdW1pbmFuY2VUZXh0dXJl
cyA9IGRpc3BsYXktPmdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCk7Ci0gICAgICAgIG1TdXBw
b3J0c0x1bWluYW5jZUFscGhhVGV4dHVyZXMgPSBkaXNwbGF5LT5nZXRMdW1pbmFuY2VBbHBoYVRl
eHR1cmVTdXBwb3J0KCk7CisgICAgICAgIG1TdXBwb3J0c0V2ZW50UXVlcmllcyA9IG1EaXNwbGF5
LT5nZXRFdmVudFF1ZXJ5U3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNEWFQxVGV4dHVyZXMg
PSBtRGlzcGxheS0+Z2V0RFhUMVRleHR1cmVTdXBwb3J0KCk7CisgICAgICAgIG1TdXBwb3J0c0RY
VDNUZXh0dXJlcyA9IG1EaXNwbGF5LT5nZXREWFQzVGV4dHVyZVN1cHBvcnQoKTsKKyAgICAgICAg
bVN1cHBvcnRzRFhUNVRleHR1cmVzID0gbURpc3BsYXktPmdldERYVDVUZXh0dXJlU3VwcG9ydCgp
OworICAgICAgICBtU3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMgPSBtRGlzcGxheS0+Z2V0RmxvYXQz
MlRleHR1cmVTdXBwb3J0KCZtU3VwcG9ydHNGbG9hdDMyTGluZWFyRmlsdGVyLCAmbVN1cHBvcnRz
RmxvYXQzMlJlbmRlcmFibGVUZXh0dXJlcyk7CisgICAgICAgIG1TdXBwb3J0c0Zsb2F0MTZUZXh0
dXJlcyA9IG1EaXNwbGF5LT5nZXRGbG9hdDE2VGV4dHVyZVN1cHBvcnQoJm1TdXBwb3J0c0Zsb2F0
MTZMaW5lYXJGaWx0ZXIsICZtU3VwcG9ydHNGbG9hdDE2UmVuZGVyYWJsZVRleHR1cmVzKTsKKyAg
ICAgICAgbVN1cHBvcnRzTHVtaW5hbmNlVGV4dHVyZXMgPSBtRGlzcGxheS0+Z2V0THVtaW5hbmNl
VGV4dHVyZVN1cHBvcnQoKTsKKyAgICAgICAgbVN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJl
cyA9IG1EaXNwbGF5LT5nZXRMdW1pbmFuY2VBbHBoYVRleHR1cmVTdXBwb3J0KCk7CiAKICAgICAg
ICAgbVN1cHBvcnRzMzJiaXRJbmRpY2VzID0gbURldmljZUNhcHMuTWF4VmVydGV4SW5kZXggPj0g
KDEgPDwgMTYpOwogCisgICAgICAgIG1OdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHMgPSAwOwor
ICAgICAgICBpZiAoc3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyArPSAyOworICAgICAgICB9CisgICAgICAg
IGlmIChzdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgICAgICB7CisgICAgICAgICAgICBtTnVt
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzICs9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN1
cHBvcnRzRFhUNVRleHR1cmVzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1OdW1Db21wcmVz
c2VkVGV4dHVyZUZvcm1hdHMgKz0gMTsKKyAgICAgICAgfQorCiAgICAgICAgIGluaXRFeHRlbnNp
b25TdHJpbmcoKTsKKyAgICAgICAgaW5pdFJlbmRlcmVyU3RyaW5nKCk7CiAKICAgICAgICAgbVN0
YXRlLnZpZXdwb3J0WCA9IDA7CiAgICAgICAgIG1TdGF0ZS52aWV3cG9ydFkgPSAwOwpAQCAtMzQz
LDcgKzM3NCwxMiBAQCB2b2lkIENvbnRleHQ6Om1hcmtBbGxTdGF0ZURpcnR5KCkKICAgICBtQXBw
bGllZFJlbmRlclRhcmdldFNlcmlhbCA9IDA7CiAgICAgbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlh
bCA9IDA7CiAgICAgbUFwcGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsID0gMDsKKyAgICBtQXBwbGll
ZElCU2VyaWFsID0gMDsKICAgICBtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAg
ICBtVmlld3BvcnRJbml0aWFsaXplZCA9IGZhbHNlOworICAgIG1SZW5kZXJUYXJnZXREZXNjSW5p
dGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIG1WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLm1hcmtTdGF0
ZURpcnR5KCk7CiAKICAgICBtQ2xlYXJTdGF0ZURpcnR5ID0gdHJ1ZTsKICAgICBtQ3VsbFN0YXRl
RGlydHkgPSB0cnVlOwpAQCAtMzU2LDYgKzM5MiwyMCBAQCB2b2lkIENvbnRleHQ6Om1hcmtBbGxT
dGF0ZURpcnR5KCkKICAgICBtU2FtcGxlU3RhdGVEaXJ0eSA9IHRydWU7CiAgICAgbURpdGhlclN0
YXRlRGlydHkgPSB0cnVlOwogICAgIG1Gcm9udEZhY2VEaXJ0eSA9IHRydWU7CisgICAgbUR4VW5p
Zm9ybXNEaXJ0eSA9IHRydWU7CisgICAgbUNhY2hlZEN1cnJlbnRQcm9ncmFtID0gTlVMTDsKK30K
Kwordm9pZCBDb250ZXh0OjptYXJrQ29udGV4dExvc3QoKQoreworICAgIGlmIChtUmVzZXRTdHJh
dGVneSA9PSBHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfRVhUKQorICAgICAgICBtUmVzZXRTdGF0
dXMgPSBHTF9VTktOT1dOX0NPTlRFWFRfUkVTRVRfRVhUOworICAgIG1Db250ZXh0TG9zdCA9IHRy
dWU7Cit9CisKK2Jvb2wgQ29udGV4dDo6aXNDb250ZXh0TG9zdCgpCit7CisgICAgcmV0dXJuIG1D
b250ZXh0TG9zdDsKIH0KIAogdm9pZCBDb250ZXh0OjpzZXRDbGVhckNvbG9yKGZsb2F0IHJlZCwg
ZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQpAQCAtODA2LDYgKzg1NiwxNiBA
QCBHTGludCBDb250ZXh0OjpnZXRVbnBhY2tBbGlnbm1lbnQoKSBjb25zdAogICAgIHJldHVybiBt
U3RhdGUudW5wYWNrQWxpZ25tZW50OwogfQogCit2b2lkIENvbnRleHQ6OnNldFBhY2tSZXZlcnNl
Um93T3JkZXIoYm9vbCByZXZlcnNlUm93T3JkZXIpCit7CisgICAgbVN0YXRlLnBhY2tSZXZlcnNl
Um93T3JkZXIgPSByZXZlcnNlUm93T3JkZXI7Cit9CisKK2Jvb2wgQ29udGV4dDo6Z2V0UGFja1Jl
dmVyc2VSb3dPcmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5wYWNrUmV2ZXJzZVJv
d09yZGVyOworfQorCiBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlQnVmZmVyKCkKIHsKICAgICByZXR1
cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlQnVmZmVyKCk7CkBAIC04NjgsNiArOTI4LDcgQEAg
dm9pZCBDb250ZXh0OjpkZWxldGVTaGFkZXIoR0x1aW50IHNoYWRlcikKIHZvaWQgQ29udGV4dDo6
ZGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKIHsKICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5k
ZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIG1DYWNoZWRDdXJyZW50UHJvZ3JhbSA9IE5VTEw7
CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGVsZXRlVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKQEAgLTk0
OCw3ICsxMDA5LDcgQEAgRnJhbWVidWZmZXIgKkNvbnRleHQ6OmdldFJlYWRGcmFtZWJ1ZmZlcigp
CiAKIEZyYW1lYnVmZmVyICpDb250ZXh0OjpnZXREcmF3RnJhbWVidWZmZXIoKQogewotICAgIHJl
dHVybiBnZXRGcmFtZWJ1ZmZlcihtU3RhdGUuZHJhd0ZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4g
bUJvdW5kRHJhd0ZyYW1lYnVmZmVyOwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRBcnJheUJ1ZmZl
cih1bnNpZ25lZCBpbnQgYnVmZmVyKQpAQCAtOTk3LDYgKzEwNTgsOCBAQCB2b2lkIENvbnRleHQ6
OmJpbmREcmF3RnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQogICAgIH0KIAogICAgIG1T
dGF0ZS5kcmF3RnJhbWVidWZmZXIgPSBmcmFtZWJ1ZmZlcjsKKworICAgIG1Cb3VuZERyYXdGcmFt
ZWJ1ZmZlciA9IGdldEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKIH0KIAogdm9pZCBDb250ZXh0
OjpiaW5kUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpCkBAIC0xMDE1LDYgKzEwNzgs
OCBAQCB2b2lkIENvbnRleHQ6OnVzZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCiAgICAgewogICAg
ICAgICBQcm9ncmFtICpuZXdQcm9ncmFtID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UHJvZ3JhbShw
cm9ncmFtKTsKICAgICAgICAgUHJvZ3JhbSAqb2xkUHJvZ3JhbSA9IG1SZXNvdXJjZU1hbmFnZXIt
PmdldFByb2dyYW0ocHJpb3JQcm9ncmFtKTsKKyAgICAgICAgbUNhY2hlZEN1cnJlbnRQcm9ncmFt
ID0gTlVMTDsKKyAgICAgICAgbUR4VW5pZm9ybXNEaXJ0eSA9IHRydWU7CiAKICAgICAgICAgaWYg
KG5ld1Byb2dyYW0pCiAgICAgICAgIHsKQEAgLTEwMzIsNiArMTA5NywxMCBAQCB2b2lkIENvbnRl
eHQ6OnNldEZyYW1lYnVmZmVyWmVybyhGcmFtZWJ1ZmZlciAqYnVmZmVyKQogewogICAgIGRlbGV0
ZSBtRnJhbWVidWZmZXJNYXBbMF07CiAgICAgbUZyYW1lYnVmZmVyTWFwWzBdID0gYnVmZmVyOwor
ICAgIGlmIChtU3RhdGUuZHJhd0ZyYW1lYnVmZmVyID09IDApCisgICAgeworICAgICAgICBtQm91
bmREcmF3RnJhbWVidWZmZXIgPSBidWZmZXI7CisgICAgfQogfQogCiB2b2lkIENvbnRleHQ6OnNl
dFJlbmRlcmJ1ZmZlclN0b3JhZ2UoUmVuZGVyYnVmZmVyU3RvcmFnZSAqcmVuZGVyYnVmZmVyKQpA
QCAtMTA4MCw3ICsxMTQ5LDExIEBAIEJ1ZmZlciAqQ29udGV4dDo6Z2V0RWxlbWVudEFycmF5QnVm
ZmVyKCkKIAogUHJvZ3JhbSAqQ29udGV4dDo6Z2V0Q3VycmVudFByb2dyYW0oKQogewotICAgIHJl
dHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQcm9ncmFtKG1TdGF0ZS5jdXJyZW50UHJvZ3JhbSk7
CisgICAgaWYgKCFtQ2FjaGVkQ3VycmVudFByb2dyYW0pCisgICAgeworICAgICAgICBtQ2FjaGVk
Q3VycmVudFByb2dyYW0gPSBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQcm9ncmFtKG1TdGF0ZS5jdXJy
ZW50UHJvZ3JhbSk7CisgICAgfQorICAgIHJldHVybiBtQ2FjaGVkQ3VycmVudFByb2dyYW07CiB9
CiAKIFRleHR1cmUyRCAqQ29udGV4dDo6Z2V0VGV4dHVyZTJEKCkKQEAgLTExMTQsMjQgKzExODcs
MjUgQEAgYm9vbCBDb250ZXh0OjpnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAq
cGFyYW1zKQogewogICAgIHN3aXRjaCAocG5hbWUpCiAgICAgewotICAgICAgY2FzZSBHTF9TSEFE
RVJfQ09NUElMRVI6ICAgICAgICAgICpwYXJhbXMgPSBHTF9UUlVFOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6ICAg
KnBhcmFtcyA9IG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZUludmVydDsgICAgICBicmVhazsKLSAgICAg
IGNhc2UgR0xfREVQVEhfV1JJVEVNQVNLOiAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmRlcHRo
TWFzazsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TSEFERVJfQ09NUElM
RVI6ICAgICAgICAgICAqcGFyYW1zID0gR0xfVFJVRTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6ICAgICpwYXJh
bXMgPSBtU3RhdGUuc2FtcGxlQ292ZXJhZ2VJbnZlcnQ7ICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfREVQVEhfV1JJVEVNQVNLOiAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aE1h
c2s7ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1B
U0s6CiAgICAgICAgIHBhcmFtc1swXSA9IG1TdGF0ZS5jb2xvck1hc2tSZWQ7CiAgICAgICAgIHBh
cmFtc1sxXSA9IG1TdGF0ZS5jb2xvck1hc2tHcmVlbjsKICAgICAgICAgcGFyYW1zWzJdID0gbVN0
YXRlLmNvbG9yTWFza0JsdWU7CiAgICAgICAgIHBhcmFtc1szXSA9IG1TdGF0ZS5jb2xvck1hc2tB
bHBoYTsKICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0NVTExfRkFDRTogICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5jdWxsRmFjZTsgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRfRklMTDogICAgICAqcGFyYW1zID0gbVN0YXRl
LnBvbHlnb25PZmZzZXRGaWxsOyAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9TQU1QTEVf
QUxQSEFfVE9fQ09WRVJBR0U6ICpwYXJhbXMgPSBtU3RhdGUuc2FtcGxlQWxwaGFUb0NvdmVyYWdl
OyAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRTogICAgICAgICAgKnBh
cmFtcyA9IG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZTsgICAgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgR0xfU0NJU1NPUl9URVNUOiAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnNjaXNzb3JU
ZXN0OyAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6ICAg
ICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuc3RlbmNpbFRlc3Q7ICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6ICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1T
dGF0ZS5kZXB0aFRlc3Q7ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfQkxF
TkQ6ICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kOyAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9ESVRIRVI6ICAgICAgICAgICAgICAgICAg
ICpwYXJhbXMgPSBtU3RhdGUuZGl0aGVyOyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0NVTExfRkFDRTogICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuY3Vs
bEZhY2U7ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUE9MWUdPTl9P
RkZTRVRfRklMTDogICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5wb2x5Z29uT2Zmc2V0RmlsbDsgICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0U6ICAq
cGFyYW1zID0gbVN0YXRlLnNhbXBsZUFscGhhVG9Db3ZlcmFnZTsgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRTogICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuc2Ft
cGxlQ292ZXJhZ2U7ICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0NJU1NPUl9U
RVNUOiAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5zY2lzc29yVGVzdDsgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6ICAgICAgICAgICAgICAq
cGFyYW1zID0gbVN0YXRlLnN0ZW5jaWxUZXN0OyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0RFUFRIX1RFU1Q6ICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVw
dGhUZXN0OyAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQkxFTkQ6ICAg
ICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5ibGVuZDsgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ESVRIRVI6ICAgICAgICAgICAgICAgICAgICAq
cGFyYW1zID0gbVN0YXRlLmRpdGhlcjsgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQ6ICpwYXJhbXMgPSBtUm9idXN0QWNj
ZXNzID8gR0xfVFJVRSA6IEdMX0ZBTFNFOyBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMjEwLDYgKzEyODQsNyBAQCBib29sIENvbnRleHQ6
OmdldEludGVnZXJ2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKICAgICAgIGNhc2UgR0xf
UkVOREVSQlVGRkVSX0JJTkRJTkc6ICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUucmVuZGVy
YnVmZmVyLmlkKCk7ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9DVVJSRU5UX1BS
T0dSQU06ICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5jdXJyZW50UHJvZ3JhbTsg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1BBQ0tfQUxJR05NRU5UOiAgICAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnBhY2tBbGlnbm1lbnQ7ICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRTog
ICAgICpwYXJhbXMgPSBtU3RhdGUucGFja1JldmVyc2VSb3dPcmRlcjsgICAgICAgICAgIGJyZWFr
OwogICAgICAgY2FzZSBHTF9VTlBBQ0tfQUxJR05NRU5UOiAgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IG1TdGF0ZS51bnBhY2tBbGlnbm1lbnQ7ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBj
YXNlIEdMX0dFTkVSQVRFX01JUE1BUF9ISU5UOiAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRl
LmdlbmVyYXRlTWlwbWFwSGludDsgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfRlJB
R01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6ICpwYXJhbXMgPSBtU3RhdGUuZnJhZ21l
bnRTaGFkZXJEZXJpdmF0aXZlSGludDsgYnJlYWs7CkBAIC0xMjQwLDE4ICsxMzE1LDcgQEAgYm9v
bCBDb250ZXh0OjpnZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCiAgICAg
ICBjYXNlIEdMX01BWF9URVhUVVJFX1NJWkU6ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gZ2V0
TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKTsgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xf
TUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRTogICAgICAgICpwYXJhbXMgPSBnZXRNYXhpbXVtQ3Vi
ZVRleHR1cmVEaW1lbnNpb24oKTsgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9OVU1fQ09NUFJF
U1NFRF9URVhUVVJFX0ZPUk1BVFM6ICAgCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChzdXBw
b3J0c0NvbXByZXNzZWRUZXh0dXJlcygpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IC8vIGF0IGN1cnJlbnQsIG9ubHkgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCBhbmQg
Ci0gICAgICAgICAgICAgICAgLy8gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgYXJl
IHN1cHBvcnRlZAotICAgICAgICAgICAgICAgICpwYXJhbXMgPSAyOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICpwYXJhbXMg
PSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHBhcmFtc1swXSA9IG1OdW1D
b21wcmVzc2VkVGV4dHVyZUZvcm1hdHM7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9N
QVhfU0FNUExFU19BTkdMRToKICAgICAgICAgewpAQCAtMTMwNywxMCArMTM3MSwxOCBAQCBib29s
IENvbnRleHQ6OmdldEludGVnZXJ2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKICAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZXMoKSkKKyAg
ICAgICAgICAgIGlmIChzdXBwb3J0c0RYVDFUZXh0dXJlcygpKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHBhcmFtc1swXSA9IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7
Ci0gICAgICAgICAgICAgICAgcGFyYW1zWzFdID0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ7CisgICAgICAgICAgICAgICAgKnBhcmFtcysrID0gR0xfQ09NUFJFU1NFRF9SR0JfUzNU
Q19EWFQxX0VYVDsKKyAgICAgICAgICAgICAgICAqcGFyYW1zKysgPSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdXBwb3J0
c0RYVDNUZXh0dXJlcygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICpwYXJhbXMr
KyA9IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoc3VwcG9ydHNEWFQ1VGV4dHVyZXMoKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAqcGFyYW1zKysgPSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FO
R0xFOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTMzNCw3
ICsxNDA2LDcgQEAgYm9vbCBDb250ZXh0OjpnZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMpCiAgICAgICBjYXNlIEdMX0FMUEhBX0JJVFM6CiAgICAgICAgIHsKICAgICAgICAg
ICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsK
LSAgICAgICAgICAgIGdsOjpDb2xvcmJ1ZmZlciAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+
Z2V0Q29sb3JidWZmZXIoKTsKKyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVm
ZmVyID0gZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKCk7CiAKICAgICAgICAgICAgIGlmIChj
b2xvcmJ1ZmZlcikKICAgICAgICAgICAgIHsKQEAgLTEzNTUsNyArMTQyNyw3IEBAIGJvb2wgQ29u
dGV4dDo6Z2V0SW50ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAgICAgY2Fz
ZSBHTF9ERVBUSF9CSVRTOgogICAgICAgICB7CiAgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyID0gZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7Ci0gICAgICAgICAgICBnbDo6RGVw
dGhTdGVuY2lsYnVmZmVyICpkZXB0aGJ1ZmZlciA9IGZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZl
cigpOworICAgICAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqZGVwdGhidWZmZXIgPSBmcmFtZWJ1
ZmZlci0+Z2V0RGVwdGhidWZmZXIoKTsKIAogICAgICAgICAgICAgaWYgKGRlcHRoYnVmZmVyKQog
ICAgICAgICAgICAgewpAQCAtMTM3MCw3ICsxNDQyLDcgQEAgYm9vbCBDb250ZXh0OjpnZXRJbnRl
Z2VydihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCiAgICAgICBjYXNlIEdMX1NURU5DSUxf
QklUUzoKICAgICAgICAgewogICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZl
ciA9IGdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgICAgICAgICAgZ2w6OkRlcHRoU3RlbmNpbGJ1
ZmZlciAqc3RlbmNpbGJ1ZmZlciA9IGZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyKCk7Cisg
ICAgICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpzdGVuY2lsYnVmZmVyID0gZnJhbWVidWZmZXIt
PmdldFN0ZW5jaWxidWZmZXIoKTsKIAogICAgICAgICAgICAgaWYgKHN0ZW5jaWxidWZmZXIpCiAg
ICAgICAgICAgICB7CkBAIC0xNDA0LDYgKzE0NzYsOSBAQCBib29sIENvbnRleHQ6OmdldEludGVn
ZXJ2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKICAgICAgICAgICAgICpwYXJhbXMgPSBt
U3RhdGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV9DVUJFXVttU3RhdGUuYWN0aXZlU2FtcGxlcl0u
aWQoKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkVTRVRfTk9U
SUZJQ0FUSU9OX1NUUkFURUdZX0VYVDoKKyAgICAgICAgKnBhcmFtcyA9IG1SZXNldFN0cmF0ZWd5
OworICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkBAIC0xNDIyLDcgKzE0OTcsMTIgQEAgYm9vbCBDb250ZXh0OjpnZXRRdWVyeVBhcmFt
ZXRlckluZm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnUKICAg
ICAvLyBhcHBsaWNhdGlvbi4KICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKLSAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6IC8qIG5vIGNvbXByZXNzZWQgdGV4dHVyZSBm
b3JtYXRzIGFyZSBzdXBwb3J0ZWQgKi8gCisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfVEVYVFVS
RV9GT1JNQVRTOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKKyAgICAg
ICAgICAgICpudW1QYXJhbXMgPSBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRzOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFM6
CiAgICAgICAgIHsKICAgICAgICAgICAgICp0eXBlID0gR0xfSU5UOwpAQCAtMTQ0NCw2ICsxNTI0
LDcgQEAgYm9vbCBDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHBuYW1lLCBH
TGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnUKICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVS
X0JJTkRJTkc6CiAgICAgICBjYXNlIEdMX0NVUlJFTlRfUFJPR1JBTToKICAgICAgIGNhc2UgR0xf
UEFDS19BTElHTk1FTlQ6CisgICAgICBjYXNlIEdMX1BBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5H
TEU6CiAgICAgICBjYXNlIEdMX1VOUEFDS19BTElHTk1FTlQ6CiAgICAgICBjYXNlIEdMX0dFTkVS
QVRFX01JUE1BUF9ISU5UOgogICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElW
RV9ISU5UX09FUzoKQEAgLTE0ODgsNiArMTU2OSw3IEBAIGJvb2wgQ29udGV4dDo6Z2V0UXVlcnlQ
YXJhbWV0ZXJJbmZvKEdMZW51bSBwbmFtZSwgR0xlbnVtICp0eXBlLCB1bnNpZ25lZCBpbnQgKm51
CiAgICAgICBjYXNlIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUOgogICAgICAg
Y2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfMkQ6CiAgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElO
R19DVUJFX01BUDoKKyAgICAgIGNhc2UgR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0VY
VDoKICAgICAgICAgewogICAgICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7CiAgICAgICAgICAgICAq
bnVtUGFyYW1zID0gMTsKQEAgLTE1MzEsNiArMTYxMyw3IEBAIGJvb2wgQ29udGV4dDo6Z2V0UXVl
cnlQYXJhbWV0ZXJJbmZvKEdMZW51bSBwbmFtZSwgR0xlbnVtICp0eXBlLCB1bnNpZ25lZCBpbnQg
Km51CiAgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6CiAgICAgICBjYXNlIEdMX0JMRU5EOgogICAg
ICAgY2FzZSBHTF9ESVRIRVI6CisgICAgICBjYXNlIEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19F
WFQ6CiAgICAgICAgIHsKICAgICAgICAgICAgICp0eXBlID0gR0xfQk9PTDsKICAgICAgICAgICAg
ICpudW1QYXJhbXMgPSAxOwpAQCAtMTU3OCw4ICsxNjYxLDYgQEAgYm9vbCBDb250ZXh0OjpnZXRR
dWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGlu
dCAqbnUKIC8vIHNjaXNzb3IgcmVjdGFuZ2xlIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQogYm9v
bCBDb250ZXh0OjphcHBseVJlbmRlclRhcmdldChib29sIGlnbm9yZVZpZXdwb3J0KQogewotICAg
IElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwotCiAgICAgRnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CiAKICAgICBpZiAo
IWZyYW1lYnVmZmVyT2JqZWN0IHx8IGZyYW1lYnVmZmVyT2JqZWN0LT5jb21wbGV0ZW5lc3MoKSAh
PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKQEAgLTE1ODcsMjMgKzE2NjgsMjMgQEAgYm9vbCBD
b250ZXh0OjphcHBseVJlbmRlclRhcmdldChib29sIGlnbm9yZVZpZXdwb3J0KQogICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sIGZhbHNlKTsKICAg
ICB9CiAKLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqcmVuZGVyVGFyZ2V0ID0gZnJhbWVidWZmZXJP
YmplY3QtPmdldFJlbmRlclRhcmdldCgpOwotCi0gICAgaWYgKCFyZW5kZXJUYXJnZXQpCi0gICAg
ewotICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gQ29udGV4dCBtdXN0IGJlIGxvc3QKLSAgICB9
Ci0KLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVwdGhTdGVuY2lsID0gTlVMTDsKLQorICAgIGJv
b2wgcmVuZGVyVGFyZ2V0Q2hhbmdlZCA9IGZhbHNlOwogICAgIHVuc2lnbmVkIGludCByZW5kZXJU
YXJnZXRTZXJpYWwgPSBmcmFtZWJ1ZmZlck9iamVjdC0+Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKCk7
CiAgICAgaWYgKHJlbmRlclRhcmdldFNlcmlhbCAhPSBtQXBwbGllZFJlbmRlclRhcmdldFNlcmlh
bCkKICAgICB7Ci0gICAgICAgIGRldmljZS0+U2V0UmVuZGVyVGFyZ2V0KDAsIHJlbmRlclRhcmdl
dCk7CisgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpyZW5kZXJUYXJnZXQgPSBmcmFtZWJ1ZmZl
ck9iamVjdC0+Z2V0UmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIGlmICghcmVuZGVyVGFyZ2V0KQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gQ29udGV4dCBtdXN0IGJl
IGxvc3QKKyAgICAgICAgfQorICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJUYXJnZXQoMCwgcmVu
ZGVyVGFyZ2V0KTsKICAgICAgICAgbUFwcGxpZWRSZW5kZXJUYXJnZXRTZXJpYWwgPSByZW5kZXJU
YXJnZXRTZXJpYWw7CiAgICAgICAgIG1TY2lzc29yU3RhdGVEaXJ0eSA9IHRydWU7IC8vIFNjaXNz
b3IgYXJlYSBtdXN0IGJlIGNsYW1wZWQgdG8gcmVuZGVyIHRhcmdldCdzIHNpemUtLSB0aGlzIGlz
IGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IHJlbmRlciB0YXJnZXRzLgorICAgICAgICByZW5kZXJU
YXJnZXRDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0LT5SZWxlYXNlKCk7CiAg
ICAgfQogCisgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlcHRoU3RlbmNpbCA9IE5VTEw7CiAgICAg
dW5zaWduZWQgaW50IGRlcHRoYnVmZmVyU2VyaWFsID0gMDsKICAgICB1bnNpZ25lZCBpbnQgc3Rl
bmNpbGJ1ZmZlclNlcmlhbCA9IDA7CiAgICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0LT5nZXREZXB0
aGJ1ZmZlclR5cGUoKSAhPSBHTF9OT05FKQpAQCAtMTYzMywxNSArMTcxNCwyNSBAQCBib29sIENv
bnRleHQ6OmFwcGx5UmVuZGVyVGFyZ2V0KGJvb2wgaWdub3JlVmlld3BvcnQpCiAgICAgICAgIHN0
ZW5jaWxidWZmZXJTZXJpYWwgIT0gbUFwcGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsIHx8CiAgICAg
ICAgICFtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQpCiAgICAgewotICAgICAgICBkZXZpY2UtPlNl
dERlcHRoU3RlbmNpbFN1cmZhY2UoZGVwdGhTdGVuY2lsKTsKKyAgICAgICAgbURldmljZS0+U2V0
RGVwdGhTdGVuY2lsU3VyZmFjZShkZXB0aFN0ZW5jaWwpOwogICAgICAgICBtQXBwbGllZERlcHRo
YnVmZmVyU2VyaWFsID0gZGVwdGhidWZmZXJTZXJpYWw7CiAgICAgICAgIG1BcHBsaWVkU3RlbmNp
bGJ1ZmZlclNlcmlhbCA9IHN0ZW5jaWxidWZmZXJTZXJpYWw7CiAgICAgICAgIG1EZXB0aFN0ZW5j
aWxJbml0aWFsaXplZCA9IHRydWU7CiAgICAgfQogCisgICAgaWYgKCFtUmVuZGVyVGFyZ2V0RGVz
Y0luaXRpYWxpemVkIHx8IHJlbmRlclRhcmdldENoYW5nZWQpCisgICAgeworICAgICAgICBJRGly
ZWN0M0RTdXJmYWNlOSAqcmVuZGVyVGFyZ2V0ID0gZnJhbWVidWZmZXJPYmplY3QtPmdldFJlbmRl
clRhcmdldCgpOworICAgICAgICBpZiAoIXJlbmRlclRhcmdldCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIENvbnRleHQgbXVzdCBiZSBsb3N0CisgICAgICAgIH0K
KyAgICAgICAgcmVuZGVyVGFyZ2V0LT5HZXREZXNjKCZtUmVuZGVyVGFyZ2V0RGVzYyk7CisgICAg
ICAgIG1SZW5kZXJUYXJnZXREZXNjSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICByZW5kZXJU
YXJnZXQtPlJlbGVhc2UoKTsKKyAgICB9CisKICAgICBEM0RWSUVXUE9SVDkgdmlld3BvcnQ7Ci0g
ICAgRDNEU1VSRkFDRV9ERVNDIGRlc2M7Ci0gICAgcmVuZGVyVGFyZ2V0LT5HZXREZXNjKCZkZXNj
KTsKIAogICAgIGZsb2F0IHpOZWFyID0gY2xhbXAwMShtU3RhdGUuek5lYXIpOwogICAgIGZsb2F0
IHpGYXIgPSBjbGFtcDAxKG1TdGF0ZS56RmFyKTsKQEAgLTE2NTAsMTggKzE3NDEsMTggQEAgYm9v
bCBDb250ZXh0OjphcHBseVJlbmRlclRhcmdldChib29sIGlnbm9yZVZpZXdwb3J0KQogICAgIHsK
ICAgICAgICAgdmlld3BvcnQuWCA9IDA7CiAgICAgICAgIHZpZXdwb3J0LlkgPSAwOwotICAgICAg
ICB2aWV3cG9ydC5XaWR0aCA9IGRlc2MuV2lkdGg7Ci0gICAgICAgIHZpZXdwb3J0LkhlaWdodCA9
IGRlc2MuSGVpZ2h0OworICAgICAgICB2aWV3cG9ydC5XaWR0aCA9IG1SZW5kZXJUYXJnZXREZXNj
LldpZHRoOworICAgICAgICB2aWV3cG9ydC5IZWlnaHQgPSBtUmVuZGVyVGFyZ2V0RGVzYy5IZWln
aHQ7CiAgICAgICAgIHZpZXdwb3J0Lk1pblogPSAwLjBmOwogICAgICAgICB2aWV3cG9ydC5NYXha
ID0gMS4wZjsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgUkVDVCByZWN0ID0gdHJh
bnNmb3JtUGl4ZWxSZWN0KG1TdGF0ZS52aWV3cG9ydFgsIG1TdGF0ZS52aWV3cG9ydFksIG1TdGF0
ZS52aWV3cG9ydFdpZHRoLCBtU3RhdGUudmlld3BvcnRIZWlnaHQsIGRlc2MuSGVpZ2h0KTsKLSAg
ICAgICAgdmlld3BvcnQuWCA9IGNsYW1wKHJlY3QubGVmdCwgMEwsIHN0YXRpY19jYXN0PExPTkc+
KGRlc2MuV2lkdGgpKTsKLSAgICAgICAgdmlld3BvcnQuWSA9IGNsYW1wKHJlY3QudG9wLCAwTCwg
c3RhdGljX2Nhc3Q8TE9ORz4oZGVzYy5IZWlnaHQpKTsKLSAgICAgICAgdmlld3BvcnQuV2lkdGgg
PSBjbGFtcChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4oZGVz
Yy5XaWR0aCkgLSBzdGF0aWNfY2FzdDxMT05HPih2aWV3cG9ydC5YKSk7Ci0gICAgICAgIHZpZXdw
b3J0LkhlaWdodCA9IGNsYW1wKHJlY3QuYm90dG9tIC0gcmVjdC50b3AsIDBMLCBzdGF0aWNfY2Fz
dDxMT05HPihkZXNjLkhlaWdodCkgLSBzdGF0aWNfY2FzdDxMT05HPih2aWV3cG9ydC5ZKSk7Cisg
ICAgICAgIFJFQ1QgcmVjdCA9IHRyYW5zZm9ybVBpeGVsUmVjdChtU3RhdGUudmlld3BvcnRYLCBt
U3RhdGUudmlld3BvcnRZLCBtU3RhdGUudmlld3BvcnRXaWR0aCwgbVN0YXRlLnZpZXdwb3J0SGVp
Z2h0LCBtUmVuZGVyVGFyZ2V0RGVzYy5IZWlnaHQpOworICAgICAgICB2aWV3cG9ydC5YID0gY2xh
bXAocmVjdC5sZWZ0LCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4obVJlbmRlclRhcmdldERlc2MuV2lk
dGgpKTsKKyAgICAgICAgdmlld3BvcnQuWSA9IGNsYW1wKHJlY3QudG9wLCAwTCwgc3RhdGljX2Nh
c3Q8TE9ORz4obVJlbmRlclRhcmdldERlc2MuSGVpZ2h0KSk7CisgICAgICAgIHZpZXdwb3J0Lldp
ZHRoID0gY2xhbXAocmVjdC5yaWdodCAtIHJlY3QubGVmdCwgMEwsIHN0YXRpY19jYXN0PExPTkc+
KG1SZW5kZXJUYXJnZXREZXNjLldpZHRoKSAtIHN0YXRpY19jYXN0PExPTkc+KHZpZXdwb3J0Llgp
KTsKKyAgICAgICAgdmlld3BvcnQuSGVpZ2h0ID0gY2xhbXAocmVjdC5ib3R0b20gLSByZWN0LnRv
cCwgMEwsIHN0YXRpY19jYXN0PExPTkc+KG1SZW5kZXJUYXJnZXREZXNjLkhlaWdodCkgLSBzdGF0
aWNfY2FzdDxMT05HPih2aWV3cG9ydC5ZKSk7CiAgICAgICAgIHZpZXdwb3J0Lk1pblogPSB6TmVh
cjsKICAgICAgICAgdmlld3BvcnQuTWF4WiA9IHpGYXI7CiAgICAgfQpAQCAtMTY3MSwyOSArMTc2
MiwzNSBAQCBib29sIENvbnRleHQ6OmFwcGx5UmVuZGVyVGFyZ2V0KGJvb2wgaWdub3JlVmlld3Bv
cnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsgICAvLyBOb3RoaW5nIHRvIHJlbmRlcgogICAgIH0K
IAotICAgIGRldmljZS0+U2V0Vmlld3BvcnQoJnZpZXdwb3J0KTsKKyAgICBpZiAocmVuZGVyVGFy
Z2V0Q2hhbmdlZCB8fCAhbVZpZXdwb3J0SW5pdGlhbGl6ZWQgfHwgbWVtY21wKCZ2aWV3cG9ydCwg
Jm1TZXRWaWV3cG9ydCwgc2l6ZW9mIG1TZXRWaWV3cG9ydCkgIT0gMCkKKyAgICB7CisgICAgICAg
IG1EZXZpY2UtPlNldFZpZXdwb3J0KCZ2aWV3cG9ydCk7CisgICAgICAgIG1TZXRWaWV3cG9ydCA9
IHZpZXdwb3J0OworICAgICAgICBtVmlld3BvcnRJbml0aWFsaXplZCA9IHRydWU7CisgICAgICAg
IG1EeFVuaWZvcm1zRGlydHkgPSB0cnVlOworICAgIH0KIAogICAgIGlmIChtU2Npc3NvclN0YXRl
RGlydHkpCiAgICAgewogICAgICAgICBpZiAobVN0YXRlLnNjaXNzb3JUZXN0KQogICAgICAgICB7
Ci0gICAgICAgICAgICBSRUNUIHJlY3QgPSB0cmFuc2Zvcm1QaXhlbFJlY3QobVN0YXRlLnNjaXNz
b3JYLCBtU3RhdGUuc2Npc3NvclksIG1TdGF0ZS5zY2lzc29yV2lkdGgsIG1TdGF0ZS5zY2lzc29y
SGVpZ2h0LCBkZXNjLkhlaWdodCk7Ci0gICAgICAgICAgICByZWN0LmxlZnQgPSBjbGFtcChyZWN0
LmxlZnQsIDBMLCBzdGF0aWNfY2FzdDxMT05HPihkZXNjLldpZHRoKSk7Ci0gICAgICAgICAgICBy
ZWN0LnRvcCA9IGNsYW1wKHJlY3QudG9wLCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4oZGVzYy5IZWln
aHQpKTsKLSAgICAgICAgICAgIHJlY3QucmlnaHQgPSBjbGFtcChyZWN0LnJpZ2h0LCAwTCwgc3Rh
dGljX2Nhc3Q8TE9ORz4oZGVzYy5XaWR0aCkpOwotICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBj
bGFtcChyZWN0LmJvdHRvbSwgMEwsIHN0YXRpY19jYXN0PExPTkc+KGRlc2MuSGVpZ2h0KSk7Ci0g
ICAgICAgICAgICBkZXZpY2UtPlNldFNjaXNzb3JSZWN0KCZyZWN0KTsKLSAgICAgICAgICAgIGRl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0NJU1NPUlRFU1RFTkFCTEUsIFRSVUUpOworICAg
ICAgICAgICAgUkVDVCByZWN0ID0gdHJhbnNmb3JtUGl4ZWxSZWN0KG1TdGF0ZS5zY2lzc29yWCwg
bVN0YXRlLnNjaXNzb3JZLCBtU3RhdGUuc2Npc3NvcldpZHRoLCBtU3RhdGUuc2Npc3NvckhlaWdo
dCwgbVJlbmRlclRhcmdldERlc2MuSGVpZ2h0KTsKKyAgICAgICAgICAgIHJlY3QubGVmdCA9IGNs
YW1wKHJlY3QubGVmdCwgMEwsIHN0YXRpY19jYXN0PExPTkc+KG1SZW5kZXJUYXJnZXREZXNjLldp
ZHRoKSk7CisgICAgICAgICAgICByZWN0LnRvcCA9IGNsYW1wKHJlY3QudG9wLCAwTCwgc3RhdGlj
X2Nhc3Q8TE9ORz4obVJlbmRlclRhcmdldERlc2MuSGVpZ2h0KSk7CisgICAgICAgICAgICByZWN0
LnJpZ2h0ID0gY2xhbXAocmVjdC5yaWdodCwgMEwsIHN0YXRpY19jYXN0PExPTkc+KG1SZW5kZXJU
YXJnZXREZXNjLldpZHRoKSk7CisgICAgICAgICAgICByZWN0LmJvdHRvbSA9IGNsYW1wKHJlY3Qu
Ym90dG9tLCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4obVJlbmRlclRhcmdldERlc2MuSGVpZ2h0KSk7
CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRTY2lzc29yUmVjdCgmcmVjdCk7CisgICAgICAgICAg
ICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TQ0lTU09SVEVTVEVOQUJMRSwgVFJVRSk7
CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBkZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX1NDSVNTT1JURVNURU5BQkxFLCBGQUxTRSk7CisgICAgICAg
ICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TQ0lTU09SVEVTVEVOQUJMRSwgRkFM
U0UpOwogICAgICAgICB9CiAKICAgICAgICAgbVNjaXNzb3JTdGF0ZURpcnR5ID0gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKG1TdGF0ZS5jdXJyZW50UHJvZ3JhbSkKKyAgICBpZiAobVN0YXRlLmN1
cnJlbnRQcm9ncmFtICYmIG1EeFVuaWZvcm1zRGlydHkpCiAgICAgewogICAgICAgICBQcm9ncmFt
ICpwcm9ncmFtT2JqZWN0ID0gZ2V0Q3VycmVudFByb2dyYW0oKTsKIApAQCAtMTcwMSwxMSArMTc5
OCwxMyBAQCBib29sIENvbnRleHQ6OmFwcGx5UmVuZGVyVGFyZ2V0KGJvb2wgaWdub3JlVmlld3Bv
cnQpCiAgICAgICAgIEdMZmxvYXQgeHlbMl0gPSB7MS4wZiAvIHZpZXdwb3J0LldpZHRoLCAtMS4w
ZiAvIHZpZXdwb3J0LkhlaWdodH07CiAgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm0y
ZnYoaGFsZlBpeGVsU2l6ZSwgMSwgeHkpOwogCi0gICAgICAgIEdMaW50IHZpZXdwb3J0ID0gcHJv
Z3JhbU9iamVjdC0+Z2V0RHhWaWV3cG9ydExvY2F0aW9uKCk7Ci0gICAgICAgIEdMZmxvYXQgd2h4
eVs0XSA9IHttU3RhdGUudmlld3BvcnRXaWR0aCAvIDIuMGYsIG1TdGF0ZS52aWV3cG9ydEhlaWdo
dCAvIDIuMGYsIAorICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgYXJlIHVzZWQgZm9yIGNvbXB1dGlu
ZyBnbF9GcmFnQ29vcmQgaW4gUHJvZ3JhbTo6bGlua1ZhcnlpbmdzKCkuIFRoZSBhcHByb2FjaCBk
ZXBlbmRzIG9uIFNoYWRlciBNb2RlbCAzLjAgc3VwcG9ydC4KKyAgICAgICAgR0xpbnQgY29vcmQg
PSBwcm9ncmFtT2JqZWN0LT5nZXREeENvb3JkTG9jYXRpb24oKTsKKyAgICAgICAgZmxvYXQgaCA9
IG1TdXBwb3J0c1NoYWRlck1vZGVsMyA/IG1SZW5kZXJUYXJnZXREZXNjLkhlaWdodCA6IG1TdGF0
ZS52aWV3cG9ydEhlaWdodCAvIDIuMGY7CisgICAgICAgIEdMZmxvYXQgd2h4eVs0XSA9IHttU3Rh
dGUudmlld3BvcnRXaWR0aCAvIDIuMGYsIGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAo
ZmxvYXQpbVN0YXRlLnZpZXdwb3J0WCArIG1TdGF0ZS52aWV3cG9ydFdpZHRoIC8gMi4wZiwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCltU3RhdGUudmlld3BvcnRZICsgbVN0YXRl
LnZpZXdwb3J0SGVpZ2h0IC8gMi4wZn07Ci0gICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZv
cm00ZnYodmlld3BvcnQsIDEsIHdoeHkpOworICAgICAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlm
b3JtNGZ2KGNvb3JkLCAxLCB3aHh5KTsKIAogICAgICAgICBHTGludCBkZXB0aCA9IHByb2dyYW1P
YmplY3QtPmdldER4RGVwdGhMb2NhdGlvbigpOwogICAgICAgICBHTGZsb2F0IGR6WzJdID0geyh6
RmFyIC0gek5lYXIpIC8gMi4wZiwgKHpOZWFyICsgekZhcikgLyAyLjBmfTsKQEAgLTE3MTQsNiAr
MTgxMyw3IEBAIGJvb2wgQ29udGV4dDo6YXBwbHlSZW5kZXJUYXJnZXQoYm9vbCBpZ25vcmVWaWV3
cG9ydCkKICAgICAgICAgR0xpbnQgZGVwdGhSYW5nZSA9IHByb2dyYW1PYmplY3QtPmdldER4RGVw
dGhSYW5nZUxvY2F0aW9uKCk7CiAgICAgICAgIEdMZmxvYXQgbmVhckZhckRpZmZbM10gPSB7ek5l
YXIsIHpGYXIsIHpGYXIgLSB6TmVhcn07CiAgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZv
cm0zZnYoZGVwdGhSYW5nZSwgMSwgbmVhckZhckRpZmYpOworICAgICAgICBtRHhVbmlmb3Jtc0Rp
cnR5ID0gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNzIyLDcgKzE4MjIs
NiBAQCBib29sIENvbnRleHQ6OmFwcGx5UmVuZGVyVGFyZ2V0KGJvb2wgaWdub3JlVmlld3BvcnQp
CiAvLyBBcHBsaWVzIHRoZSBmaXhlZC1mdW5jdGlvbiBzdGF0ZSAoY3VsbGluZywgZGVwdGggdGVz
dCwgYWxwaGEgYmxlbmRpbmcsIHN0ZW5jaWxpbmcsIGV0YykgdG8gdGhlIERpcmVjdDNEIDkgZGV2
aWNlCiB2b2lkIENvbnRleHQ6OmFwcGx5U3RhdGUoR0xlbnVtIGRyYXdNb2RlKQogewotICAgIElE
aXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwogICAgIFByb2dyYW0gKnByb2dy
YW1PYmplY3QgPSBnZXRDdXJyZW50UHJvZ3JhbSgpOwogCiAgICAgRnJhbWVidWZmZXIgKmZyYW1l
YnVmZmVyT2JqZWN0ID0gZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CkBAIC0xNzM3LDggKzE4MzYsNyBA
QCB2b2lkIENvbnRleHQ6OmFwcGx5U3RhdGUoR0xlbnVtIGRyYXdNb2RlKQogICAgIEdMaW50IGFs
d2F5c0Zyb250ID0gIWlzVHJpYW5nbGVNb2RlKGRyYXdNb2RlKTsKICAgICBwcm9ncmFtT2JqZWN0
LT5zZXRVbmlmb3JtMWl2KHBvaW50c09yTGluZXMsIDEsICZhbHdheXNGcm9udCk7CiAKLSAgICBl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBnZXREaXNwbGF5KCk7Ci0gICAgRDNEQURBUFRFUl9JREVO
VElGSUVSOSAqaWRlbnRpZmllciA9IGRpc3BsYXktPmdldEFkYXB0ZXJJZGVudGlmaWVyKCk7Cisg
ICAgRDNEQURBUFRFUl9JREVOVElGSUVSOSAqaWRlbnRpZmllciA9IG1EaXNwbGF5LT5nZXRBZGFw
dGVySWRlbnRpZmllcigpOwogICAgIGJvb2wgemVyb0NvbG9yTWFza0FsbG93ZWQgPSBpZGVudGlm
aWVyLT5WZW5kb3JJZCAhPSAweDEwMDI7CiAgICAgLy8gQXBwYXJlbnRseSBzb21lIEFUSSBjYXJk
cyBoYXZlIGEgYnVnIHdoZXJlIGEgZHJhdyB3aXRoIGEgemVybyBjb2xvcgogICAgIC8vIHdyaXRl
IG1hc2sgY2FuIGNhdXNlIGxhdGVyIGRyYXdzIHRvIGhhdmUgaW5jb3JyZWN0IHJlc3VsdHMuIElu
c3RlYWQsCkBAIC0xNzUwLDExICsxODQ4LDExIEBAIHZvaWQgQ29udGV4dDo6YXBwbHlTdGF0ZShH
TGVudW0gZHJhd01vZGUpCiAgICAgewogICAgICAgICBpZiAobVN0YXRlLmN1bGxGYWNlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NVTExNT0RF
LCBlczJkeDo6Q29udmVydEN1bGxNb2RlKG1TdGF0ZS5jdWxsTW9kZSwgYWRqdXN0ZWRGcm9udEZh
Y2UpKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NVTExNT0RF
LCBlczJkeDo6Q29udmVydEN1bGxNb2RlKG1TdGF0ZS5jdWxsTW9kZSwgYWRqdXN0ZWRGcm9udEZh
Y2UpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ1VMTE1PREUsIEQzRENVTExfTk9ORSk7CisgICAg
ICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DVUxMTU9ERSwgRDNEQ1VMTF9O
T05FKTsKICAgICAgICAgfQogCiAgICAgICAgIG1DdWxsU3RhdGVEaXJ0eSA9IGZhbHNlOwpAQCAt
MTc2NCwxMiArMTg2MiwxMiBAQCB2b2lkIENvbnRleHQ6OmFwcGx5U3RhdGUoR0xlbnVtIGRyYXdN
b2RlKQogICAgIHsKICAgICAgICAgaWYgKG1TdGF0ZS5kZXB0aFRlc3QpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwgRDNEWkJfVFJV
RSk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pGVU5DLCBlczJk
eDo6Q29udmVydENvbXBhcmlzb24obVN0YXRlLmRlcHRoRnVuYykpOworICAgICAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwgRDNEWkJfVFJVRSk7CisgICAgICAg
ICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRlVOQywgZXMyZHg6OkNvbnZlcnRD
b21wYXJpc29uKG1TdGF0ZS5kZXB0aEZ1bmMpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJM
RSwgRDNEWkJfRkFMU0UpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfWkVOQUJMRSwgRDNEWkJfRkFMU0UpOwogICAgICAgICB9CiAKICAgICAgICAgbURlcHRoU3Rh
dGVEaXJ0eSA9IGZhbHNlOwpAQCAtMTc4NSw0MyArMTg4Myw0MyBAQCB2b2lkIENvbnRleHQ6OmFw
cGx5U3RhdGUoR0xlbnVtIGRyYXdNb2RlKQogICAgIHsKICAgICAgICAgaWYgKG1TdGF0ZS5ibGVu
ZCkKICAgICAgICAgewotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19B
TFBIQUJMRU5ERU5BQkxFLCBUUlVFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX0FMUEhBQkxFTkRFTkFCTEUsIFRSVUUpOwogCiAgICAgICAgICAgICBpZiAobVN0
YXRlLnNvdXJjZUJsZW5kUkdCICE9IEdMX0NPTlNUQU5UX0FMUEhBICYmIG1TdGF0ZS5zb3VyY2VC
bGVuZFJHQiAhPSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgJiYKICAgICAgICAgICAgICAg
ICBtU3RhdGUuZGVzdEJsZW5kUkdCICE9IEdMX0NPTlNUQU5UX0FMUEhBICYmIG1TdGF0ZS5kZXN0
QmxlbmRSR0IgIT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQkxFTkRGQUNUT1Is
IGVzMmR4OjpDb252ZXJ0Q29sb3IobVN0YXRlLmJsZW5kQ29sb3IpKTsKKyAgICAgICAgICAgICAg
ICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVOREZBQ1RPUiwgZXMyZHg6OkNvbnZl
cnRDb2xvcihtU3RhdGUuYmxlbmRDb2xvcikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfQkxFTkRGQUNUT1IsIEQzRENPTE9SX1JHQkEodW5vcm08OD4obVN0YXRlLmJsZW5k
Q29sb3IuYWxwaGEpLAorICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX0JMRU5ERkFDVE9SLCBEM0RDT0xPUl9SR0JBKHVub3JtPDg+KG1TdGF0ZS5ibGVuZENvbG9y
LmFscGhhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVub3JtPDg+KG1TdGF0ZS5ibGVuZENvbG9yLmFscGhh
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVub3JtPDg+KG1TdGF0ZS5ibGVuZENvbG9yLmFscGhhKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVub3JtPDg+KG1TdGF0ZS5ibGVuZENvbG9yLmFscGhhKSkpOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NSQ0JM
RU5ELCBlczJkeDo6Q29udmVydEJsZW5kRnVuYyhtU3RhdGUuc291cmNlQmxlbmRSR0IpKTsKLSAg
ICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJMRU5ELCBlczJkeDo6
Q29udmVydEJsZW5kRnVuYyhtU3RhdGUuZGVzdEJsZW5kUkdCKSk7Ci0gICAgICAgICAgICBkZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0JMRU5ET1AsIGVzMmR4OjpDb252ZXJ0QmxlbmRPcCht
U3RhdGUuYmxlbmRFcXVhdGlvblJHQikpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfU1JDQkxFTkQsIGVzMmR4OjpDb252ZXJ0QmxlbmRGdW5jKG1TdGF0ZS5zb3Vy
Y2VCbGVuZFJHQikpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
REVTVEJMRU5ELCBlczJkeDo6Q29udmVydEJsZW5kRnVuYyhtU3RhdGUuZGVzdEJsZW5kUkdCKSk7
CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVORE9QLCBlczJk
eDo6Q29udmVydEJsZW5kT3AobVN0YXRlLmJsZW5kRXF1YXRpb25SR0IpKTsKIAogICAgICAgICAg
ICAgaWYgKG1TdGF0ZS5zb3VyY2VCbGVuZFJHQiAhPSBtU3RhdGUuc291cmNlQmxlbmRBbHBoYSB8
fCAKICAgICAgICAgICAgICAgICBtU3RhdGUuZGVzdEJsZW5kUkdCICE9IG1TdGF0ZS5kZXN0Qmxl
bmRBbHBoYSB8fCAKICAgICAgICAgICAgICAgICBtU3RhdGUuYmxlbmRFcXVhdGlvblJHQiAhPSBt
U3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0VQQVJBVEVBTFBIQUJMRU5ERU5BQkxFLCBU
UlVFKTsKKyAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TRVBB
UkFURUFMUEhBQkxFTkRFTkFCTEUsIFRSVUUpOwogCi0gICAgICAgICAgICAgICAgZGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19TUkNCTEVOREFMUEhBLCBlczJkeDo6Q29udmVydEJsZW5kRnVu
YyhtU3RhdGUuc291cmNlQmxlbmRBbHBoYSkpOwotICAgICAgICAgICAgICAgIGRldmljZS0+U2V0
UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJMRU5EQUxQSEEsIGVzMmR4OjpDb252ZXJ0QmxlbmRGdW5j
KG1TdGF0ZS5kZXN0QmxlbmRBbHBoYSkpOwotICAgICAgICAgICAgICAgIGRldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfQkxFTkRPUEFMUEhBLCBlczJkeDo6Q29udmVydEJsZW5kT3AobVN0YXRl
LmJsZW5kRXF1YXRpb25BbHBoYSkpOworICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRl
clN0YXRlKEQzRFJTX1NSQ0JMRU5EQUxQSEEsIGVzMmR4OjpDb252ZXJ0QmxlbmRGdW5jKG1TdGF0
ZS5zb3VyY2VCbGVuZEFscGhhKSk7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfREVTVEJMRU5EQUxQSEEsIGVzMmR4OjpDb252ZXJ0QmxlbmRGdW5jKG1TdGF0
ZS5kZXN0QmxlbmRBbHBoYSkpOworICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX0JMRU5ET1BBTFBIQSwgZXMyZHg6OkNvbnZlcnRCbGVuZE9wKG1TdGF0ZS5ibGVu
ZEVxdWF0aW9uQWxwaGEpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NF
UEFSQVRFQUxQSEFCTEVOREVOQUJMRSwgRkFMU0UpOworICAgICAgICAgICAgICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX1NFUEFSQVRFQUxQSEFCTEVOREVOQUJMRSwgRkFMU0UpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAg
ICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxT
RSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5E
RU5BQkxFLCBGQUxTRSk7CiAgICAgICAgIH0KIAogICAgICAgICBtQmxlbmRTdGF0ZURpcnR5ID0g
ZmFsc2U7CkBAIC0xODMxLDggKzE5MjksOCBAQCB2b2lkIENvbnRleHQ6OmFwcGx5U3RhdGUoR0xl
bnVtIGRyYXdNb2RlKQogICAgIHsKICAgICAgICAgaWYgKG1TdGF0ZS5zdGVuY2lsVGVzdCAmJiBm
cmFtZWJ1ZmZlck9iamVjdC0+aGFzU3RlbmNpbCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBk
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIFRSVUUpOwotICAgICAg
ICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19UV09TSURFRFNURU5DSUxNT0RFLCBU
UlVFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxF
TkFCTEUsIFRSVUUpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
VFdPU0lERURTVEVOQ0lMTU9ERSwgVFJVRSk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBVbnN1
cHBvcnRlZCBieSBEM0Q5CiAgICAgICAgICAgICBjb25zdCBEM0RSRU5ERVJTVEFURVRZUEUgRDNE
UlNfQ0NXX1NURU5DSUxSRUYgPSBEM0RSU19TVEVOQ0lMUkVGOwpAQCAtMTg0Nyw0MCArMTk0NSw0
MCBAQCB2b2lkIENvbnRleHQ6OmFwcGx5U3RhdGUoR0xlbnVtIGRyYXdNb2RlKQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAvLyBnZXQgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgc3RlbmNp
bCByZWYKLSAgICAgICAgICAgIGdsOjpEZXB0aFN0ZW5jaWxidWZmZXIgKnN0ZW5jaWxidWZmZXIg
PSBmcmFtZWJ1ZmZlck9iamVjdC0+Z2V0U3RlbmNpbGJ1ZmZlcigpOworICAgICAgICAgICAgZ2w6
OlJlbmRlcmJ1ZmZlciAqc3RlbmNpbGJ1ZmZlciA9IGZyYW1lYnVmZmVyT2JqZWN0LT5nZXRTdGVu
Y2lsYnVmZmVyKCk7CiAgICAgICAgICAgICBHTHVpbnQgbWF4U3RlbmNpbCA9ICgxIDw8IHN0ZW5j
aWxidWZmZXItPmdldFN0ZW5jaWxTaXplKCkpIC0gMTsKIAotICAgICAgICAgICAgZGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DQ1cgPyBEM0RSU19TVEVOQ0lM
V1JJVEVNQVNLIDogRDNEUlNfQ0NXX1NURU5DSUxXUklURU1BU0ssIG1TdGF0ZS5zdGVuY2lsV3Jp
dGVtYXNrKTsKLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoYWRqdXN0ZWRGcm9u
dEZhY2UgPT0gR0xfQ0NXID8gRDNEUlNfU1RFTkNJTEZVTkMgOiBEM0RSU19DQ1dfU1RFTkNJTEZV
TkMsIAorICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoYWRqdXN0ZWRGcm9udEZh
Y2UgPT0gR0xfQ0NXID8gRDNEUlNfU1RFTkNJTFdSSVRFTUFTSyA6IEQzRFJTX0NDV19TVEVOQ0lM
V1JJVEVNQVNLLCBtU3RhdGUuc3RlbmNpbFdyaXRlbWFzayk7CisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DQ1cgPyBEM0RSU19TVEVO
Q0lMRlVOQyA6IEQzRFJTX0NDV19TVEVOQ0lMRlVOQywgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVzMmR4OjpDb252ZXJ0Q29tcGFyaXNvbihtU3RhdGUuc3RlbmNpbEZ1bmMp
KTsKIAotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZyb250RmFj
ZSA9PSBHTF9DQ1cgPyBEM0RSU19TVEVOQ0lMUkVGIDogRDNEUlNfQ0NXX1NURU5DSUxSRUYsICht
U3RhdGUuc3RlbmNpbFJlZiA8IChHTGludCltYXhTdGVuY2lsKSA/IG1TdGF0ZS5zdGVuY2lsUmVm
IDogbWF4U3RlbmNpbCk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVz
dGVkRnJvbnRGYWNlID09IEdMX0NDVyA/IEQzRFJTX1NURU5DSUxNQVNLIDogRDNEUlNfQ0NXX1NU
RU5DSUxNQVNLLCBtU3RhdGUuc3RlbmNpbE1hc2spOworICAgICAgICAgICAgbURldmljZS0+U2V0
UmVuZGVyU3RhdGUoYWRqdXN0ZWRGcm9udEZhY2UgPT0gR0xfQ0NXID8gRDNEUlNfU1RFTkNJTFJF
RiA6IEQzRFJTX0NDV19TVEVOQ0lMUkVGLCAobVN0YXRlLnN0ZW5jaWxSZWYgPCAoR0xpbnQpbWF4
U3RlbmNpbCkgPyBtU3RhdGUuc3RlbmNpbFJlZiA6IG1heFN0ZW5jaWwpOworICAgICAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoYWRqdXN0ZWRGcm9udEZhY2UgPT0gR0xfQ0NXID8gRDNE
UlNfU1RFTkNJTE1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJTE1BU0ssIG1TdGF0ZS5zdGVuY2lsTWFz
ayk7CiAKLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoYWRqdXN0ZWRGcm9udEZh
Y2UgPT0gR0xfQ0NXID8gRDNEUlNfU1RFTkNJTEZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTEZBSUws
IAorICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoYWRqdXN0ZWRGcm9udEZhY2Ug
PT0gR0xfQ0NXID8gRDNEUlNfU1RFTkNJTEZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTEZBSUwsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlczJkeDo6Q29udmVydFN0ZW5jaWxP
cChtU3RhdGUuc3RlbmNpbEZhaWwpKTsKLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3Rh
dGUoYWRqdXN0ZWRGcm9udEZhY2UgPT0gR0xfQ0NXID8gRDNEUlNfU1RFTkNJTFpGQUlMIDogRDNE
UlNfQ0NXX1NURU5DSUxaRkFJTCwgCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShhZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DQ1cgPyBEM0RSU19TVEVOQ0lMWkZBSUwgOiBEM0RS
U19DQ1dfU1RFTkNJTFpGQUlMLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXMyZHg6OkNvbnZlcnRTdGVuY2lsT3AobVN0YXRlLnN0ZW5jaWxQYXNzRGVwdGhGYWlsKSk7Ci0g
ICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVzdGVkRnJvbnRGYWNlID09IEdM
X0NDVyA/IEQzRFJTX1NURU5DSUxQQVNTIDogRDNEUlNfQ0NXX1NURU5DSUxQQVNTLCAKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVzdGVkRnJvbnRGYWNlID09IEdMX0ND
VyA/IEQzRFJTX1NURU5DSUxQQVNTIDogRDNEUlNfQ0NXX1NURU5DSUxQQVNTLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMyZHg6OkNvbnZlcnRTdGVuY2lsT3AobVN0YXRl
LnN0ZW5jaWxQYXNzRGVwdGhQYXNzKSk7CiAKLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVy
U3RhdGUoYWRqdXN0ZWRGcm9udEZhY2UgPT0gR0xfQ1cgPyBEM0RSU19TVEVOQ0lMV1JJVEVNQVNL
IDogRDNEUlNfQ0NXX1NURU5DSUxXUklURU1BU0ssIG1TdGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFz
ayk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVzdGVkRnJvbnRGYWNl
ID09IEdMX0NXID8gRDNEUlNfU1RFTkNJTEZVTkMgOiBEM0RSU19DQ1dfU1RFTkNJTEZVTkMsIAor
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoYWRqdXN0ZWRGcm9udEZhY2UgPT0g
R0xfQ1cgPyBEM0RSU19TVEVOQ0lMV1JJVEVNQVNLIDogRDNEUlNfQ0NXX1NURU5DSUxXUklURU1B
U0ssIG1TdGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFzayk7CisgICAgICAgICAgICBtRGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DVyA/IEQzRFJTX1NURU5DSUxG
VU5DIDogRDNEUlNfQ0NXX1NURU5DSUxGVU5DLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXMyZHg6OkNvbnZlcnRDb21wYXJpc29uKG1TdGF0ZS5zdGVuY2lsQmFja0Z1bmMp
KTsKIAotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZyb250RmFj
ZSA9PSBHTF9DVyA/IEQzRFJTX1NURU5DSUxSRUYgOiBEM0RSU19DQ1dfU1RFTkNJTFJFRiwgKG1T
dGF0ZS5zdGVuY2lsQmFja1JlZiA8IChHTGludCltYXhTdGVuY2lsKSA/IG1TdGF0ZS5zdGVuY2ls
QmFja1JlZiA6IG1heFN0ZW5jaWwpOwotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShhZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DVyA/IEQzRFJTX1NURU5DSUxNQVNLIDogRDNEUlNf
Q0NXX1NURU5DSUxNQVNLLCBtU3RhdGUuc3RlbmNpbEJhY2tNYXNrKTsKKyAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVzdGVkRnJvbnRGYWNlID09IEdMX0NXID8gRDNEUlNf
U1RFTkNJTFJFRiA6IEQzRFJTX0NDV19TVEVOQ0lMUkVGLCAobVN0YXRlLnN0ZW5jaWxCYWNrUmVm
IDwgKEdMaW50KW1heFN0ZW5jaWwpID8gbVN0YXRlLnN0ZW5jaWxCYWNrUmVmIDogbWF4U3RlbmNp
bCk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZyb250RmFj
ZSA9PSBHTF9DVyA/IEQzRFJTX1NURU5DSUxNQVNLIDogRDNEUlNfQ0NXX1NURU5DSUxNQVNLLCBt
U3RhdGUuc3RlbmNpbEJhY2tNYXNrKTsKIAotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShhZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DVyA/IEQzRFJTX1NURU5DSUxGQUlMIDogRDNE
UlNfQ0NXX1NURU5DSUxGQUlMLCAKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRl
KGFkanVzdGVkRnJvbnRGYWNlID09IEdMX0NXID8gRDNEUlNfU1RFTkNJTEZBSUwgOiBEM0RSU19D
Q1dfU1RFTkNJTEZBSUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlczJk
eDo6Q29udmVydFN0ZW5jaWxPcChtU3RhdGUuc3RlbmNpbEJhY2tGYWlsKSk7Ci0gICAgICAgICAg
ICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVzdGVkRnJvbnRGYWNlID09IEdMX0NXID8gRDNE
UlNfU1RFTkNJTFpGQUlMIDogRDNEUlNfQ0NXX1NURU5DSUxaRkFJTCwgCisgICAgICAgICAgICBt
RGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DVyA/IEQzRFJT
X1NURU5DSUxaRkFJTCA6IEQzRFJTX0NDV19TVEVOQ0lMWkZBSUwsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlczJkeDo6Q29udmVydFN0ZW5jaWxPcChtU3RhdGUuc3RlbmNp
bEJhY2tQYXNzRGVwdGhGYWlsKSk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRl
KGFkanVzdGVkRnJvbnRGYWNlID09IEdMX0NXID8gRDNEUlNfU1RFTkNJTFBBU1MgOiBEM0RSU19D
Q1dfU1RFTkNJTFBBU1MsIAorICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoYWRq
dXN0ZWRGcm9udEZhY2UgPT0gR0xfQ1cgPyBEM0RSU19TVEVOQ0lMUEFTUyA6IEQzRFJTX0NDV19T
VEVOQ0lMUEFTUywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzMmR4OjpD
b252ZXJ0U3RlbmNpbE9wKG1TdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpKTsKICAgICAg
ICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEVOQUJMRSwgRkFMU0UpOworICAgICAgICAgICAgbURldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEVOQUJMRSwgRkFMU0UpOwogICAgICAgICB9
CiAKICAgICAgICAgbVN0ZW5jaWxTdGF0ZURpcnR5ID0gZmFsc2U7CkBAIC0xODk0LDE4ICsxOTky
LDE4IEBAIHZvaWQgQ29udGV4dDo6YXBwbHlTdGF0ZShHTGVudW0gZHJhd01vZGUpCiAgICAgICAg
IGlmIChjb2xvck1hc2sgPT0gMCAmJiAhemVyb0NvbG9yTWFza0FsbG93ZWQpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIC8vIEVuYWJsZSBncmVlbiBjaGFubmVsLCBidXQgc2V0IGJsZW5kaW5nIHNv
IG5vdGhpbmcgd2lsbCBiZSBkcmF3bi4KLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwgRDNEQ09MT1JXUklURUVOQUJMRV9HUkVFTik7Ci0g
ICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBQkxFTkRFTkFCTEUs
IFRSVUUpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JX
UklURUVOQUJMRSwgRDNEQ09MT1JXUklURUVOQUJMRV9HUkVFTik7CisgICAgICAgICAgICBtRGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBUUlVFKTsKIAotICAg
ICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TUkNCTEVORCwgRDNEQkxFTkRf
WkVSTyk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RFU1RCTEVO
RCwgRDNEQkxFTkRfT05FKTsKLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfQkxFTkRPUCwgRDNEQkxFTkRPUF9BREQpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfU1JDQkxFTkQsIEQzREJMRU5EX1pFUk8pOworICAgICAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJMRU5ELCBEM0RCTEVORF9PTkUpOworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQkxFTkRPUCwgRDNEQkxFTkRP
UF9BREQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAg
ZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5BQkxFLCBjb2xvck1hc2sp
OworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVO
QUJMRSwgY29sb3JNYXNrKTsKICAgICAgICAgfQotICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX1pXUklURUVOQUJMRSwgbVN0YXRlLmRlcHRoTWFzayA/IFRSVUUgOiBGQUxTRSk7
CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pXUklURUVOQUJMRSwgbVN0
YXRlLmRlcHRoTWFzayA/IFRSVUUgOiBGQUxTRSk7CiAKICAgICAgICAgbU1hc2tTdGF0ZURpcnR5
ID0gZmFsc2U7CiAgICAgfQpAQCAtMTkxNCwxOCArMjAxMiwxOCBAQCB2b2lkIENvbnRleHQ6OmFw
cGx5U3RhdGUoR0xlbnVtIGRyYXdNb2RlKQogICAgIHsKICAgICAgICAgaWYgKG1TdGF0ZS5wb2x5
Z29uT2Zmc2V0RmlsbCkKICAgICAgICAgewotICAgICAgICAgICAgZ2w6OkRlcHRoU3RlbmNpbGJ1
ZmZlciAqZGVwdGhidWZmZXIgPSBmcmFtZWJ1ZmZlck9iamVjdC0+Z2V0RGVwdGhidWZmZXIoKTsK
KyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyID0gZnJhbWVidWZmZXJP
YmplY3QtPmdldERlcHRoYnVmZmVyKCk7CiAgICAgICAgICAgICBpZiAoZGVwdGhidWZmZXIpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19TTE9QRVNDQUxFREVQVEhCSUFTLCAqKChEV09SRCopJm1TdGF0ZS5wb2x5Z29uT2Zmc2V0RmFj
dG9yKSk7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0xP
UEVTQ0FMRURFUFRIQklBUywgKigoRFdPUkQqKSZtU3RhdGUucG9seWdvbk9mZnNldEZhY3Rvcikp
OwogICAgICAgICAgICAgICAgIGZsb2F0IGRlcHRoQmlhcyA9IGxkZXhwKG1TdGF0ZS5wb2x5Z29u
T2Zmc2V0VW5pdHMsIC0oaW50KShkZXB0aGJ1ZmZlci0+Z2V0RGVwdGhTaXplKCkpKTsKLSAgICAg
ICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RFUFRIQklBUywgKigoRFdP
UkQqKSZkZXB0aEJpYXMpKTsKKyAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShEM0RSU19ERVBUSEJJQVMsICooKERXT1JEKikmZGVwdGhCaWFzKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBkZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX1NMT1BFU0NBTEVERVBUSEJJQVMsIDApOwotICAgICAgICAg
ICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19ERVBUSEJJQVMsIDApOworICAgICAgICAg
ICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0xPUEVTQ0FMRURFUFRIQklBUywgMCk7
CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19ERVBUSEJJQVMsIDAp
OwogICAgICAgICB9CiAKICAgICAgICAgbVBvbHlnb25PZmZzZXRTdGF0ZURpcnR5ID0gZmFsc2U7
CkBAIC0xOTM4LDcgKzIwMzYsNyBAQCB2b2lkIENvbnRleHQ6OmFwcGx5U3RhdGUoR0xlbnVtIGRy
YXdNb2RlKQogICAgICAgICAgICAgRklYTUUoIlNhbXBsZSBhbHBoYSB0byBjb3ZlcmFnZSBpcyB1
bmltcGxlbWVudGVkLiIpOwogICAgICAgICB9CiAKLSAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19NVUxUSVNBTVBMRUFOVElBTElBUywgVFJVRSk7CisgICAgICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFQU5USUFMSUFTLCBUUlVFKTsKICAgICAg
ICAgaWYgKG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZSkKICAgICAgICAgewogICAgICAgICAgICAgdW5z
aWduZWQgaW50IG1hc2sgPSAwOwpAQCAtMTk2MywxMSArMjA2MSwxMSBAQCB2b2lkIENvbnRleHQ6
OmFwcGx5U3RhdGUoR0xlbnVtIGRyYXdNb2RlKQogICAgICAgICAgICAgICAgIG1hc2sgPSB+bWFz
azsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19NVUxUSVNBTVBMRU1BU0ssIG1hc2spOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1QTEVNQVNLLCBtYXNrKTsKICAgICAgICAgfQogICAgICAg
ICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfTVVMVElTQU1QTEVNQVNLLCAweEZGRkZGRkZGKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFTUFTSywgMHhGRkZGRkZGRik7CiAgICAgICAg
IH0KIAogICAgICAgICBtU2FtcGxlU3RhdGVEaXJ0eSA9IGZhbHNlOwpAQCAtMTk3NSw3ICsyMDcz
LDcgQEAgdm9pZCBDb250ZXh0OjphcHBseVN0YXRlKEdMZW51bSBkcmF3TW9kZSkKIAogICAgIGlm
IChtRGl0aGVyU3RhdGVEaXJ0eSkKICAgICB7Ci0gICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfRElUSEVSRU5BQkxFLCBtU3RhdGUuZGl0aGVyID8gVFJVRSA6IEZBTFNFKTsKKyAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfRElUSEVSRU5BQkxFLCBtU3RhdGUu
ZGl0aGVyID8gVFJVRSA6IEZBTFNFKTsKIAogICAgICAgICBtRGl0aGVyU3RhdGVEaXJ0eSA9IGZh
bHNlOwogICAgIH0KQEAgLTE5OTEsMTggKzIwODksMjEgQEAgR0xlbnVtIENvbnRleHQ6OmFwcGx5
VmVydGV4QnVmZmVyKEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KQogICAgICAgICByZXR1cm4g
ZXJyOwogICAgIH0KIAotICAgIHJldHVybiBtVmVydGV4RGVjbGFyYXRpb25DYWNoZS5hcHBseURl
Y2xhcmF0aW9uKGF0dHJpYnV0ZXMsIGdldEN1cnJlbnRQcm9ncmFtKCkpOworICAgIHJldHVybiBt
VmVydGV4RGVjbGFyYXRpb25DYWNoZS5hcHBseURlY2xhcmF0aW9uKG1EZXZpY2UsIGF0dHJpYnV0
ZXMsIGdldEN1cnJlbnRQcm9ncmFtKCkpOwogfQogCiAvLyBBcHBsaWVzIHRoZSBpbmRpY2VzIGFu
ZCBlbGVtZW50IGFycmF5IGJpbmRpbmdzIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQogR0xlbnVt
IENvbnRleHQ6OmFwcGx5SW5kZXhCdWZmZXIoY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBj
b3VudCwgR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBlLCBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRl
eEluZm8pCiB7Ci0gICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7CiAg
ICAgR0xlbnVtIGVyciA9IG1JbmRleERhdGFNYW5hZ2VyLT5wcmVwYXJlSW5kZXhEYXRhKHR5cGUs
IGNvdW50LCBtU3RhdGUuZWxlbWVudEFycmF5QnVmZmVyLmdldCgpLCBpbmRpY2VzLCBpbmRleElu
Zm8pOwogCiAgICAgaWYgKGVyciA9PSBHTF9OT19FUlJPUikKICAgICB7Ci0gICAgICAgIGRldmlj
ZS0+U2V0SW5kaWNlcyhpbmRleEluZm8tPmluZGV4QnVmZmVyKTsKKyAgICAgICAgaWYgKGluZGV4
SW5mby0+c2VyaWFsICE9IG1BcHBsaWVkSUJTZXJpYWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1EZXZpY2UtPlNldEluZGljZXMoaW5kZXhJbmZvLT5pbmRleEJ1ZmZlcik7CisgICAgICAgICAg
ICBtQXBwbGllZElCU2VyaWFsID0gaW5kZXhJbmZvLT5zZXJpYWw7CisgICAgICAgIH0KICAgICB9
CiAKICAgICByZXR1cm4gZXJyOwpAQCAtMjAxMSwxNiArMjExMiwxNCBAQCBHTGVudW0gQ29udGV4
dDo6YXBwbHlJbmRleEJ1ZmZlcihjb25zdCB2b2lkICppbmRpY2VzLCBHTHNpemVpIGNvdW50LCBH
TGVudW0gbW9kZQogLy8gQXBwbGllcyB0aGUgc2hhZGVycyBhbmQgc2hhZGVyIGNvbnN0YW50cyB0
byB0aGUgRGlyZWN0M0QgOSBkZXZpY2UKIHZvaWQgQ29udGV4dDo6YXBwbHlTaGFkZXJzKCkKIHsK
LSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKICAgICBQcm9ncmFt
ICpwcm9ncmFtT2JqZWN0ID0gZ2V0Q3VycmVudFByb2dyYW0oKTsKLSAgICBJRGlyZWN0M0RWZXJ0
ZXhTaGFkZXI5ICp2ZXJ0ZXhTaGFkZXIgPSBwcm9ncmFtT2JqZWN0LT5nZXRWZXJ0ZXhTaGFkZXIo
KTsKLSAgICBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgKnBpeGVsU2hhZGVyID0gcHJvZ3JhbU9iamVj
dC0+Z2V0UGl4ZWxTaGFkZXIoKTsKLQotICAgIGRldmljZS0+U2V0VmVydGV4U2hhZGVyKHZlcnRl
eFNoYWRlcik7Ci0gICAgZGV2aWNlLT5TZXRQaXhlbFNoYWRlcihwaXhlbFNoYWRlcik7Ci0KICAg
ICBpZiAocHJvZ3JhbU9iamVjdC0+Z2V0U2VyaWFsKCkgIT0gbUFwcGxpZWRQcm9ncmFtU2VyaWFs
KQogICAgIHsKKyAgICAgICAgSURpcmVjdDNEVmVydGV4U2hhZGVyOSAqdmVydGV4U2hhZGVyID0g
cHJvZ3JhbU9iamVjdC0+Z2V0VmVydGV4U2hhZGVyKCk7CisgICAgICAgIElEaXJlY3QzRFBpeGVs
U2hhZGVyOSAqcGl4ZWxTaGFkZXIgPSBwcm9ncmFtT2JqZWN0LT5nZXRQaXhlbFNoYWRlcigpOwor
CisgICAgICAgIG1EZXZpY2UtPlNldFBpeGVsU2hhZGVyKHBpeGVsU2hhZGVyKTsKKyAgICAgICAg
bURldmljZS0+U2V0VmVydGV4U2hhZGVyKHZlcnRleFNoYWRlcik7CiAgICAgICAgIHByb2dyYW1P
YmplY3QtPmRpcnR5QWxsVW5pZm9ybXMoKTsKICAgICAgICAgbUFwcGxpZWRQcm9ncmFtU2VyaWFs
ID0gcHJvZ3JhbU9iamVjdC0+Z2V0U2VyaWFsKCk7CiAgICAgfQpAQCAtMjA0NCwxNiArMjE0Mywx
NyBAQCB2b2lkIENvbnRleHQ6OmFwcGx5VGV4dHVyZXMoKQogLy8gYW5kIHNldHMgdGhlIHRleHR1
cmUgYW5kIGl0cyBhZGRyZXNzaW5nL2ZpbHRlcmluZyBzdGF0ZSAob3IgTlVMTCB3aGVuIGluYWN0
aXZlKS4KIHZvaWQgQ29udGV4dDo6YXBwbHlUZXh0dXJlcyhTYW1wbGVyVHlwZSB0eXBlKQogewot
ICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwogICAgIFByb2dyYW0g
KnByb2dyYW1PYmplY3QgPSBnZXRDdXJyZW50UHJvZ3JhbSgpOwogCiAgICAgaW50IHNhbXBsZXJD
b3VudCA9ICh0eXBlID09IFNBTVBMRVJfUElYRUwpID8gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMg
OiBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGOyAgIC8vIFJhbmdlIG9mIERpcmVj
dDNEIDkgc2FtcGxlcnMgb2YgZ2l2ZW4gc2FtcGxlciB0eXBlCisgICAgdW5zaWduZWQgaW50ICph
cHBsaWVkVGV4dHVyZVNlcmlhbCA9ICh0eXBlID09IFNBTVBMRVJfUElYRUwpID8gbUFwcGxpZWRU
ZXh0dXJlU2VyaWFsUFMgOiBtQXBwbGllZFRleHR1cmVTZXJpYWxWUzsKKyAgICBpbnQgZDNkU2Ft
cGxlck9mZnNldCA9ICh0eXBlID09IFNBTVBMRVJfUElYRUwpID8gMCA6IEQzRFZFUlRFWFRFWFRV
UkVTQU1QTEVSMDsKKyAgICBpbnQgc2FtcGxlclJhbmdlID0gcHJvZ3JhbU9iamVjdC0+Z2V0VXNl
ZFNhbXBsZXJSYW5nZSh0eXBlKTsKIAotICAgIGZvciAoaW50IHNhbXBsZXJJbmRleCA9IDA7IHNh
bXBsZXJJbmRleCA8IHNhbXBsZXJDb3VudDsgc2FtcGxlckluZGV4KyspCisgICAgZm9yIChpbnQg
c2FtcGxlckluZGV4ID0gMDsgc2FtcGxlckluZGV4IDwgc2FtcGxlclJhbmdlOyBzYW1wbGVySW5k
ZXgrKykKICAgICB7CiAgICAgICAgIGludCB0ZXh0dXJlVW5pdCA9IHByb2dyYW1PYmplY3QtPmdl
dFNhbXBsZXJNYXBwaW5nKHR5cGUsIHNhbXBsZXJJbmRleCk7ICAgLy8gT3BlbkdMIHRleHR1cmUg
aW1hZ2UgdW5pdCBpbmRleAotICAgICAgICBpbnQgZDNkU2FtcGxlciA9ICh0eXBlID09IFNBTVBM
RVJfUElYRUwpID8gc2FtcGxlckluZGV4IDogRDNEVkVSVEVYVEVYVFVSRVNBTVBMRVIwICsgc2Ft
cGxlckluZGV4OwotICAgICAgICB1bnNpZ25lZCBpbnQgKmFwcGxpZWRUZXh0dXJlU2VyaWFsID0g
KHR5cGUgPT0gU0FNUExFUl9QSVhFTCkgPyBtQXBwbGllZFRleHR1cmVTZXJpYWxQUyA6IG1BcHBs
aWVkVGV4dHVyZVNlcmlhbFZTOworICAgICAgICBpbnQgZDNkU2FtcGxlciA9IHNhbXBsZXJJbmRl
eCArIGQzZFNhbXBsZXJPZmZzZXQ7CiAKICAgICAgICAgaWYgKHRleHR1cmVVbml0ICE9IC0xKQog
ICAgICAgICB7CkBAIC0yMDYxLDQwICsyMTYxLDQwIEBAIHZvaWQgQ29udGV4dDo6YXBwbHlUZXh0
dXJlcyhTYW1wbGVyVHlwZSB0eXBlKQogCiAgICAgICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0g
Z2V0U2FtcGxlclRleHR1cmUodGV4dHVyZVVuaXQsIHRleHR1cmVUeXBlKTsKIAotICAgICAgICAg
ICAgaWYgKGFwcGxpZWRUZXh0dXJlU2VyaWFsW3NhbXBsZXJJbmRleF0gIT0gdGV4dHVyZS0+Z2V0
U2VyaWFsKCkgfHwgdGV4dHVyZS0+aXNEaXJ0eVBhcmFtZXRlcigpIHx8IHRleHR1cmUtPmlzRGly
dHlJbWFnZSgpKQorICAgICAgICAgICAgaWYgKGFwcGxpZWRUZXh0dXJlU2VyaWFsW3NhbXBsZXJJ
bmRleF0gIT0gdGV4dHVyZS0+Z2V0VGV4dHVyZVNlcmlhbCgpIHx8IHRleHR1cmUtPmhhc0RpcnR5
UGFyYW1ldGVycygpIHx8IHRleHR1cmUtPmhhc0RpcnR5SW1hZ2VzKCkpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgSURpcmVjdDNEQmFzZVRleHR1cmU5ICpkM2RUZXh0dXJlID0gdGV4
dHVyZS0+Z2V0VGV4dHVyZSgpOwogCiAgICAgICAgICAgICAgICAgaWYgKGQzZFRleHR1cmUpCiAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXBwbGllZFRleHR1cmVT
ZXJpYWxbc2FtcGxlckluZGV4XSAhPSB0ZXh0dXJlLT5nZXRTZXJpYWwoKSB8fCB0ZXh0dXJlLT5p
c0RpcnR5UGFyYW1ldGVyKCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChhcHBsaWVkVGV4dHVy
ZVNlcmlhbFtzYW1wbGVySW5kZXhdICE9IHRleHR1cmUtPmdldFRleHR1cmVTZXJpYWwoKSB8fCB0
ZXh0dXJlLT5oYXNEaXJ0eVBhcmFtZXRlcnMoKSkKICAgICAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHdyYXBTID0gdGV4dHVyZS0+Z2V0V3JhcFMoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB3cmFwVCA9IHRleHR1cmUtPmdldFdyYXBU
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWluRmlsdGVyID0gdGV4dHVyZS0+
Z2V0TWluRmlsdGVyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWFnRmlsdGVy
ID0gdGV4dHVyZS0+Z2V0TWFnRmlsdGVyKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGRl
dmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfQUREUkVTU1UsIGVzMmR4
OjpDb252ZXJ0VGV4dHVyZVdyYXAod3JhcFMpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRl
dmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfQUREUkVTU1YsIGVzMmR4
OjpDb252ZXJ0VGV4dHVyZVdyYXAod3JhcFQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX0FERFJFU1NVLCBlczJk
eDo6Q29udmVydFRleHR1cmVXcmFwKHdyYXBTKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBt
RGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9BRERSRVNTViwgZXMy
ZHg6OkNvbnZlcnRUZXh0dXJlV3JhcCh3cmFwVCkpOwogCi0gICAgICAgICAgICAgICAgICAgICAg
ICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01BR0ZJTFRFUiwg
ZXMyZHg6OkNvbnZlcnRNYWdGaWx0ZXIobWFnRmlsdGVyKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9NQUdGSUxU
RVIsIGVzMmR4OjpDb252ZXJ0TWFnRmlsdGVyKG1hZ0ZpbHRlcikpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgRDNEVEVYVFVSRUZJTFRFUlRZUEUgZDNkTWluRmlsdGVyLCBkM2RNaXBGaWx0ZXI7
CiAgICAgICAgICAgICAgICAgICAgICAgICBlczJkeDo6Q29udmVydE1pbkZpbHRlcihtaW5GaWx0
ZXIsICZkM2RNaW5GaWx0ZXIsICZkM2RNaXBGaWx0ZXIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9NSU5GSUxURVIs
IGQzZE1pbkZpbHRlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFNhbXBs
ZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01JUEZJTFRFUiwgZDNkTWlwRmlsdGVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVy
LCBEM0RTQU1QX01JTkZJTFRFUiwgZDNkTWluRmlsdGVyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01JUEZJTFRF
UiwgZDNkTWlwRmlsdGVyKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
ICAgICAgIGlmIChhcHBsaWVkVGV4dHVyZVNlcmlhbFtzYW1wbGVySW5kZXhdICE9IHRleHR1cmUt
PmdldFNlcmlhbCgpIHx8IHRleHR1cmUtPmlzRGlydHlJbWFnZSgpKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoYXBwbGllZFRleHR1cmVTZXJpYWxbc2FtcGxlckluZGV4XSAhPSB0ZXh0dXJlLT5n
ZXRUZXh0dXJlU2VyaWFsKCkgfHwgdGV4dHVyZS0+aGFzRGlydHlJbWFnZXMoKSkKICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT5TZXRUZXh0dXJl
KGQzZFNhbXBsZXIsIGQzZFRleHR1cmUpOworICAgICAgICAgICAgICAgICAgICAgICAgbURldmlj
ZS0+U2V0VGV4dHVyZShkM2RTYW1wbGVyLCBkM2RUZXh0dXJlKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFRleHR1cmUoZDNkU2FtcGxl
ciwgZ2V0SW5jb21wbGV0ZVRleHR1cmUodGV4dHVyZVR5cGUpLT5nZXRUZXh0dXJlKCkpOworICAg
ICAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlKGQzZFNhbXBsZXIsIGdldEluY29t
cGxldGVUZXh0dXJlKHRleHR1cmVUeXBlKS0+Z2V0VGV4dHVyZSgpKTsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBhcHBsaWVkVGV4dHVyZVNlcmlhbFtzYW1wbGVySW5kZXhd
ID0gdGV4dHVyZS0+Z2V0U2VyaWFsKCk7CisgICAgICAgICAgICAgICAgYXBwbGllZFRleHR1cmVT
ZXJpYWxbc2FtcGxlckluZGV4XSA9IHRleHR1cmUtPmdldFRleHR1cmVTZXJpYWwoKTsKICAgICAg
ICAgICAgICAgICB0ZXh0dXJlLT5yZXNldERpcnR5KCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTIxMDIsMTQgKzIyMDIsMjQgQEAgdm9pZCBDb250ZXh0OjphcHBseVRleHR1cmVzKFNh
bXBsZXJUeXBlIHR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChhcHBsaWVkVGV4dHVy
ZVNlcmlhbFtzYW1wbGVySW5kZXhdICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgZGV2aWNlLT5TZXRUZXh0dXJlKGQzZFNhbXBsZXIsIE5VTEwpOworICAgICAgICAgICAgICAg
IG1EZXZpY2UtPlNldFRleHR1cmUoZDNkU2FtcGxlciwgTlVMTCk7CiAgICAgICAgICAgICAgICAg
YXBwbGllZFRleHR1cmVTZXJpYWxbc2FtcGxlckluZGV4XSA9IDA7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CisKKyAgICBmb3IgKGludCBzYW1wbGVySW5kZXggPSBzYW1wbGVyUmFu
Z2U7IHNhbXBsZXJJbmRleCA8IHNhbXBsZXJDb3VudDsgc2FtcGxlckluZGV4KyspCisgICAgewor
ICAgICAgICBpZiAoYXBwbGllZFRleHR1cmVTZXJpYWxbc2FtcGxlckluZGV4XSAhPSAwKQorICAg
ICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlKHNhbXBsZXJJbmRleCArIGQz
ZFNhbXBsZXJPZmZzZXQsIE5VTEwpOworICAgICAgICAgICAgYXBwbGllZFRleHR1cmVTZXJpYWxb
c2FtcGxlckluZGV4XSA9IDA7CisgICAgICAgIH0KKyAgICB9CiB9CiAKLXZvaWQgQ29udGV4dDo6
cmVhZFBpeGVscyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIHZvaWQqIHBpeGVscykKK3ZvaWQgQ29udGV4
dDo6cmVhZFBpeGVscyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgR0xzaXplaSAqYnVmU2l6ZSwgdm9pZCogcGl4ZWxzKQogewogICAgIEZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlciA9IGdldFJlYWRGcmFtZWJ1ZmZlcigpOwogCkBAIC0yMTIzLDQ4ICsyMjMzLDg1
IEBAIHZvaWQgQ29udGV4dDo6cmVhZFBpeGVscyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtCiAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CiAgICAgfQogCi0gICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRh
cmdldCA9IGZyYW1lYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKTsKKyAgICBHTHNpemVpIG91dHB1
dFBpdGNoID0gQ29tcHV0ZVBpdGNoKHdpZHRoLCBmb3JtYXQsIHR5cGUsIG1TdGF0ZS5wYWNrQWxp
Z25tZW50KTsKKyAgICAvLyBzaXplZCBxdWVyeSBzYW5pdHkgY2hlY2sKKyAgICBpZiAoYnVmU2l6
ZSkKKyAgICB7CisgICAgICAgIGludCByZXF1aXJlZFNpemUgPSBvdXRwdXRQaXRjaCAqIGhlaWdo
dDsKKyAgICAgICAgaWYgKHJlcXVpcmVkU2l6ZSA+ICpidWZTaXplKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9Cisg
ICAgfQogCisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdldCA9IGZyYW1lYnVmZmVy
LT5nZXRSZW5kZXJUYXJnZXQoKTsKICAgICBpZiAoIXJlbmRlclRhcmdldCkKICAgICB7CiAgICAg
ICAgIHJldHVybjsgICAvLyBDb250ZXh0IG11c3QgYmUgbG9zdCwgcmV0dXJuIHNpbGVudGx5CiAg
ICAgfQogCi0gICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7Ci0KICAg
ICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKICAgICByZW5kZXJUYXJnZXQtPkdldERlc2MoJmRlc2Mp
OwogCi0gICAgSURpcmVjdDNEU3VyZmFjZTkgKnN5c3RlbVN1cmZhY2U7Ci0gICAgSFJFU1VMVCBy
ZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZU9mZnNjcmVlblBsYWluU3VyZmFjZShkZXNjLldpZHRoLCBk
ZXNjLkhlaWdodCwgZGVzYy5Gb3JtYXQsIEQzRFBPT0xfU1lTVEVNTUVNLCAmc3lzdGVtU3VyZmFj
ZSwgTlVMTCk7Ci0KLSAgICBpZiAocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8
IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQorICAgIGlmIChkZXNjLk11bHRpU2FtcGxlVHlwZSAh
PSBEM0RNVUxUSVNBTVBMRV9OT05FKQogICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAg
IC8vIEZJWE1FOiBSZXF1aXJlcyByZXNvbHZlIHVzaW5nIFN0cmV0Y2hSZWN0IGludG8gbm9uLW11
bHRpc2FtcGxlZCByZW5kZXIgdGFyZ2V0CisgICAgICAgIHJlbmRlclRhcmdldC0+UmVsZWFzZSgp
OwogICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CiAgICAgfQogCi0gICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICBIUkVTVUxUIHJlc3VsdDsKKyAgICBJRGly
ZWN0M0RTdXJmYWNlOSAqc3lzdGVtU3VyZmFjZSA9IE5VTEw7CisgICAgYm9vbCBkaXJlY3RUb1Bp
eGVscyA9IGdldFBhY2tSZXZlcnNlUm93T3JkZXIoKSAmJiBnZXRQYWNrQWxpZ25tZW50KCkgPD0g
NCAmJiBtRGlzcGxheS0+aXNEM2Q5RXhEZXZpY2UoKSAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICB4ID09IDAgJiYgeSA9PSAwICYmIHdpZHRoID09IGRlc2MuV2lkdGggJiYgaGVpZ2h0ID09
IGRlc2MuSGVpZ2h0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MuRm9ybWF0ID09
IEQzREZNVF9BOFI4RzhCOCAmJiBmb3JtYXQgPT0gR0xfQkdSQV9FWFQgJiYgdHlwZSA9PSBHTF9V
TlNJR05FRF9CWVRFOworICAgIGlmIChkaXJlY3RUb1BpeGVscykKKyAgICB7CisgICAgICAgIC8v
IFVzZSB0aGUgcGl4ZWxzIHB0ciBhcyBhIHNoYXJlZCBoYW5kbGUgdG8gd3JpdGUgZGlyZWN0bHkg
aW50byBjbGllbnQncyBtZW1vcnkKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlT2Zm
c2NyZWVuUGxhaW5TdXJmYWNlKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQz
RFBPT0xfU1lTVEVNTUVNLCAmc3lzdGVtU3VyZmFjZSwgJnBpeGVscyk7CisgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVHJ5IGFnYWluIHdpdGhv
dXQgdGhlIHNoYXJlZCBoYW5kbGUKKyAgICAgICAgICAgIGRpcmVjdFRvUGl4ZWxzID0gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBpZiAoZGVzYy5NdWx0aVNhbXBsZVR5cGUgIT0gRDNE
TVVMVElTQU1QTEVfTk9ORSkKKyAgICBpZiAoIWRpcmVjdFRvUGl4ZWxzKQogICAgIHsKLSAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FOiBSZXF1aXJlcyByZXNvbHZlIHVzaW5nIFN0
cmV0Y2hSZWN0IGludG8gbm9uLW11bHRpc2FtcGxlZCByZW5kZXIgdGFyZ2V0CisgICAgICAgIHJl
c3VsdCA9IG1EZXZpY2UtPkNyZWF0ZU9mZnNjcmVlblBsYWluU3VyZmFjZShkZXNjLldpZHRoLCBk
ZXNjLkhlaWdodCwgZGVzYy5Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEM0RQT09MX1NZU1RFTU1FTSwgJnN5c3RlbVN1cmZhY2Us
IE5VTEwpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09
IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgICAgICB9CiAgICAgfQogCi0gICAgcmVzdWx0ID0gZGV2aWNlLT5HZXRSZW5kZXJU
YXJnZXREYXRhKHJlbmRlclRhcmdldCwgc3lzdGVtU3VyZmFjZSk7CisgICAgcmVzdWx0ID0gbURl
dmljZS0+R2V0UmVuZGVyVGFyZ2V0RGF0YShyZW5kZXJUYXJnZXQsIHN5c3RlbVN1cmZhY2UpOwor
ICAgIHJlbmRlclRhcmdldC0+UmVsZWFzZSgpOworICAgIHJlbmRlclRhcmdldCA9IE5VTEw7CiAK
ICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewogICAgICAgICBzeXN0ZW1TdXJmYWNlLT5S
ZWxlYXNlKCk7CiAKLSAgICAgICAgc3dpdGNoIChyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAg
ICBjYXNlIEQzREVSUl9EUklWRVJJTlRFUk5BTEVSUk9SOgotICAgICAgICAgIGNhc2UgRDNERVJS
X0RFVklDRUxPU1Q6CisgICAgICAgIC8vIEl0IHR1cm5zIG91dCB0aGF0IEQzRCB3aWxsIHNvbWV0
aW1lcyBwcm9kdWNlIG1vcmUgZXJyb3IKKyAgICAgICAgLy8gY29kZXMgdGhhbiB0aG9zZSBkb2N1
bWVudGVkLgorICAgICAgICBpZiAoY2hlY2tEZXZpY2VMb3N0KHJlc3VsdCkpCiAgICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgZWxzZQorICAgICAgICB7CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAg
ICAgICAgcmV0dXJuOyAgIC8vIE5vIHNlbnNpYmxlIGVycm9yIHRvIGdlbmVyYXRlCisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgIH0KKworICAgIGlmIChkaXJlY3RUb1BpeGVs
cykKKyAgICB7CisgICAgICAgIHN5c3RlbVN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIEQzRExPQ0tFRF9SRUNUIGxvY2s7CkBAIC0yMTg0LDExICsyMzMx
LDIxIEBAIHZvaWQgQ29udGV4dDo6cmVhZFBpeGVscyhHTGludCB4LCBHTGludCB5LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtCiAgICAgICAgIHJldHVybjsgICAvLyBObyBz
ZW5zaWJsZSBlcnJvciB0byBnZW5lcmF0ZQogICAgIH0KIAotICAgIHVuc2lnbmVkIGNoYXIgKnNv
dXJjZSA9ICgodW5zaWduZWQgY2hhciopbG9jay5wQml0cykgKyBsb2NrLlBpdGNoICogKHJlY3Qu
Ym90dG9tIC0gcmVjdC50b3AgLSAxKTsKICAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gKHVuc2ln
bmVkIGNoYXIqKXBpeGVsczsKICAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdDE2ID0gKHVuc2lnbmVk
IHNob3J0KilwaXhlbHM7Ci0gICAgaW50IGlucHV0UGl0Y2ggPSAtbG9jay5QaXRjaDsKLSAgICBH
THNpemVpIG91dHB1dFBpdGNoID0gQ29tcHV0ZVBpdGNoKHdpZHRoLCBmb3JtYXQsIHR5cGUsIG1T
dGF0ZS5wYWNrQWxpZ25tZW50KTsKKworICAgIHVuc2lnbmVkIGNoYXIgKnNvdXJjZTsKKyAgICBp
bnQgaW5wdXRQaXRjaDsKKyAgICBpZiAoZ2V0UGFja1JldmVyc2VSb3dPcmRlcigpKQorICAgIHsK
KyAgICAgICAgc291cmNlID0gKHVuc2lnbmVkIGNoYXIqKWxvY2sucEJpdHM7CisgICAgICAgIGlu
cHV0UGl0Y2ggPSBsb2NrLlBpdGNoOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBz
b3VyY2UgPSAoKHVuc2lnbmVkIGNoYXIqKWxvY2sucEJpdHMpICsgbG9jay5QaXRjaCAqIChyZWN0
LmJvdHRvbSAtIHJlY3QudG9wIC0gMSk7CisgICAgICAgIGlucHV0UGl0Y2ggPSAtbG9jay5QaXRj
aDsKKyAgICB9CiAKICAgICBmb3IgKGludCBqID0gMDsgaiA8IHJlY3QuYm90dG9tIC0gcmVjdC50
b3A7IGorKykKICAgICB7CkBAIC0yMzc2LDggKzI1MzMsNiBAQCB2b2lkIENvbnRleHQ6OmNsZWFy
KEdMYml0ZmllbGQgbWFzaykKICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRlJBTUVC
VUZGRVJfT1BFUkFUSU9OKTsKICAgICB9CiAKLSAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBn
ZXREaXNwbGF5KCk7Ci0gICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7
CiAgICAgRFdPUkQgZmxhZ3MgPSAwOwogCiAgICAgaWYgKG1hc2sgJiBHTF9DT0xPUl9CVUZGRVJf
QklUKQpAQCAtMjQ0MywxNyArMjU5OCw3IEBAIHZvaWQgQ29udGV4dDo6Y2xlYXIoR0xiaXRmaWVs
ZCBtYXNrKQogICAgIGZsb2F0IGRlcHRoID0gY2xhbXAwMShtU3RhdGUuZGVwdGhDbGVhclZhbHVl
KTsKICAgICBpbnQgc3RlbmNpbCA9IG1TdGF0ZS5zdGVuY2lsQ2xlYXJWYWx1ZSAmIDB4MDAwMDAw
RkY7CiAKLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqcmVuZGVyVGFyZ2V0ID0gZnJhbWVidWZmZXJP
YmplY3QtPmdldFJlbmRlclRhcmdldCgpOwotCi0gICAgaWYgKCFyZW5kZXJUYXJnZXQpCi0gICAg
ewotICAgICAgICByZXR1cm47ICAgLy8gQ29udGV4dCBtdXN0IGJlIGxvc3QsIHJldHVybiBzaWxl
bnRseQotICAgIH0KLQotICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOwotICAgIHJlbmRlclRhcmdl
dC0+R2V0RGVzYygmZGVzYyk7Ci0KLSAgICBib29sIGFscGhhVW5tYXNrZWQgPSAoZHgyZXM6Okdl
dEFscGhhU2l6ZShkZXNjLkZvcm1hdCkgPT0gMCkgfHwgbVN0YXRlLmNvbG9yTWFza0FscGhhOwor
ICAgIGJvb2wgYWxwaGFVbm1hc2tlZCA9IChkeDJlczo6R2V0QWxwaGFTaXplKG1SZW5kZXJUYXJn
ZXREZXNjLkZvcm1hdCkgPT0gMCkgfHwgbVN0YXRlLmNvbG9yTWFza0FscGhhOwogCiAgICAgY29u
c3QgYm9vbCBuZWVkTWFza2VkU3RlbmNpbENsZWFyID0gKGZsYWdzICYgRDNEQ0xFQVJfU1RFTkNJ
TCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobVN0YXRlLnN0
ZW5jaWxXcml0ZW1hc2sgJiBzdGVuY2lsVW5tYXNrZWQpICE9IHN0ZW5jaWxVbm1hc2tlZDsKQEAg
LTI0NjksMzEgKzI2MTQsMzIgQEAgdm9pZCBDb250ZXh0OjpjbGVhcihHTGJpdGZpZWxkIG1hc2sp
CiAgICAgICAgIEhSRVNVTFQgaHI7CiAgICAgICAgIGlmIChtTWFza2VkQ2xlYXJTYXZlZFN0YXRl
ID09IE5VTEwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGhyID0gZGV2aWNlLT5CZWdpblN0YXRl
QmxvY2soKTsKKyAgICAgICAgICAgIGhyID0gbURldmljZS0+QmVnaW5TdGF0ZUJsb2NrKCk7CiAg
ICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSB8fCBociA9PSBEM0RFUlJfT1VUT0ZWSURF
T01FTU9SWSB8fCBociA9PSBFX09VVE9GTUVNT1JZKTsKIAotICAgICAgICAgICAgZGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19aV1JJVEVFTkFCTEUsIEZBTFNFKTsKLSAgICAgICAgICAgIGRl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkZVTkMsIEQzRENNUF9BTFdBWVMpOwotICAgICAg
ICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBGQUxTRSk7Ci0gICAg
ICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NVTExNT0RFLCBEM0RDVUxMX05P
TkUpOwotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19GSUxMTU9ERSwg
RDNERklMTF9TT0xJRCk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X0FMUEhBVEVTVEVOQUJMRSwgRkFMU0UpOwotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7Ci0gICAgICAgICAgICBkZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX0NMSVBQTEFORUVOQUJMRSwgMCk7Ci0gICAgICAgICAgICBk
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUsIDApOwotICAgICAg
ICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBGQUxTRSk7
Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFBpeGVsU2hhZGVyKE5VTEwpOwotICAgICAgICAgICAg
ZGV2aWNlLT5TZXRWZXJ0ZXhTaGFkZXIoTlVMTCk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldEZW
RihEM0RGVkZfWFlaUkhXIHwgRDNERlZGX0RJRkZVU0UpOwotICAgICAgICAgICAgZGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19TRVBBUkFURUFMUEhBQkxFTkRFTkFCTEUsIFRSVUUpOwotICAg
ICAgICAgICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JPUCwg
RDNEVE9QX1NFTEVDVEFSRzEpOwotICAgICAgICAgICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VT
dGF0ZSgwLCBEM0RUU1NfQ09MT1JBUkcxLCBEM0RUQV9URkFDVE9SKTsKLSAgICAgICAgICAgIGRl
dmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0FMUEhBT1AsIEQzRFRPUF9TRUxF
Q1RBUkcxKTsKLSAgICAgICAgICAgIGRldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNE
VFNTX0FMUEhBQVJHMSwgRDNEVEFfVEZBQ1RPUik7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX1RFWFRVUkVGQUNUT1IsIGNvbG9yKTsKLSAgICAgICAgICAgIGRldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1QTEVNQVNLLCAweEZGRkZGRkZGKTsKLQot
ICAgICAgICAgICAgaHIgPSBkZXZpY2UtPkVuZFN0YXRlQmxvY2soJm1NYXNrZWRDbGVhclNhdmVk
U3RhdGUpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWldSSVRF
RU5BQkxFLCBGQUxTRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19aRlVOQywgRDNEQ01QX0FMV0FZUyk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19aRU5BQkxFLCBGQUxTRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19DVUxMTU9ERSwgRDNEQ1VMTF9OT05FKTsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0ZJTExNT0RFLCBEM0RGSUxMX1NPTElEKTsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBVEVTVEVOQUJMRSwgRkFM
U0UpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFCTEVO
REVOQUJMRSwgRkFMU0UpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfQ0xJUFBMQU5FRU5BQkxFLCAwKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUsIDApOworICAgICAgICAgICAgbURldmljZS0+U2V0
UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEVOQUJMRSwgRkFMU0UpOworICAgICAgICAgICAgbURl
dmljZS0+U2V0UGl4ZWxTaGFkZXIoTlVMTCk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRWZXJ0
ZXhTaGFkZXIoTlVMTCk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRGVkYoRDNERlZGX1hZWlJI
VyB8IEQzREZWRl9ESUZGVVNFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFN0cmVhbVNvdXJj
ZSgwLCBOVUxMLCAwLCAwKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX1NFUEFSQVRFQUxQSEFCTEVOREVOQUJMRSwgVFJVRSk7CisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX1NFTEVDVEFS
RzEpOworICAgICAgICAgICAgbURldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNT
X0NPTE9SQVJHMSwgRDNEVEFfVEZBQ1RPUik7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0
dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQUxQSEFPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOworICAg
ICAgICAgICAgbURldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0FMUEhBQVJH
MSwgRDNEVEFfVEZBQ1RPUik7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19URVhUVVJFRkFDVE9SLCBjb2xvcik7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRU1BU0ssIDB4RkZGRkZGRkYpOworCisgICAgICAgICAg
ICBociA9IG1EZXZpY2UtPkVuZFN0YXRlQmxvY2soJm1NYXNrZWRDbGVhclNhdmVkU3RhdGUpOwog
ICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikgfHwgaHIgPT0gRDNERVJSX09VVE9GVklE
RU9NRU1PUlkgfHwgaHIgPT0gRV9PVVRPRk1FTU9SWSk7CiAgICAgICAgIH0KIApAQCAtMjUwNSw2
MCArMjY1MSw2MCBAQCB2b2lkIENvbnRleHQ6OmNsZWFyKEdMYml0ZmllbGQgbWFzaykKICAgICAg
ICAgICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKICAgICAgICAgfQogCi0gICAgICAgIGRldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWldSSVRFRU5BQkxFLCBGQUxTRSk7Ci0gICAgICAgIGRl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkZVTkMsIEQzRENNUF9BTFdBWVMpOwotICAgICAg
ICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pFTkFCTEUsIEZBTFNFKTsKLSAgICAgICAg
ZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DVUxMTU9ERSwgRDNEQ1VMTF9OT05FKTsKLSAg
ICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19GSUxMTU9ERSwgRDNERklMTF9TT0xJ
RCk7Ci0gICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFURVNURU5BQkxF
LCBGQUxTRSk7Ci0gICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFCTEVO
REVOQUJMRSwgRkFMU0UpOwotICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NM
SVBQTEFORUVOQUJMRSwgMCk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X1pXUklURUVOQUJMRSwgRkFMU0UpOworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19aRlVOQywgRDNEQ01QX0FMV0FZUyk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX1pFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfQ1VMTE1PREUsIEQzRENVTExfTk9ORSk7CisgICAgICAgIG1EZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX0ZJTExNT0RFLCBEM0RGSUxMX1NPTElEKTsKKyAgICAgICAgbURldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFURVNURU5BQkxFLCBGQUxTRSk7CisgICAgICAg
IG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBQkxFTkRFTkFCTEUsIEZBTFNFKTsK
KyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ0xJUFBMQU5FRU5BQkxFLCAw
KTsKIAogICAgICAgICBpZiAoZmxhZ3MgJiBEM0RDTEVBUl9UQVJHRVQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwg
ZXMyZHg6OkNvbnZlcnRDb2xvck1hc2sobVN0YXRlLmNvbG9yTWFza1JlZCwgbVN0YXRlLmNvbG9y
TWFza0dyZWVuLCBtU3RhdGUuY29sb3JNYXNrQmx1ZSwgbVN0YXRlLmNvbG9yTWFza0FscGhhKSk7
CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5B
QkxFLCBlczJkeDo6Q29udmVydENvbG9yTWFzayhtU3RhdGUuY29sb3JNYXNrUmVkLCBtU3RhdGUu
Y29sb3JNYXNrR3JlZW4sIG1TdGF0ZS5jb2xvck1hc2tCbHVlLCBtU3RhdGUuY29sb3JNYXNrQWxw
aGEpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwgMCk7CisgICAgICAg
ICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5BQkxFLCAwKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGVuY2lsVW5tYXNrZWQgIT0gMHgwICYmIChmbGFn
cyAmIEQzRENMRUFSX1NURU5DSUwpKQogICAgICAgICB7Ci0gICAgICAgICAgICBkZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIFRSVUUpOwotICAgICAgICAgICAgZGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19UV09TSURFRFNURU5DSUxNT0RFLCBGQUxTRSk7Ci0g
ICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxGVU5DLCBEM0RD
TVBfQUxXQVlTKTsKLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RF
TkNJTFJFRiwgc3RlbmNpbCk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX1NURU5DSUxXUklURU1BU0ssIG1TdGF0ZS5zdGVuY2lsV3JpdGVtYXNrKTsKLSAgICAgICAg
ICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEZBSUwsIEQzRFNURU5DSUxP
UF9SRVBMQUNFKTsKLSAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RF
TkNJTFpGQUlMLCBEM0RTVEVOQ0lMT1BfUkVQTEFDRSk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxQQVNTLCBEM0RTVEVOQ0lMT1BfUkVQTEFDRSk7Cisg
ICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBU
UlVFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1RXT1NJREVE
U1RFTkNJTE1PREUsIEZBTFNFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX1NURU5DSUxGVU5DLCBEM0RDTVBfQUxXQVlTKTsKKyAgICAgICAgICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxSRUYsIHN0ZW5jaWwpOworICAgICAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTFdSSVRFTUFTSywgbVN0YXRlLnN0
ZW5jaWxXcml0ZW1hc2spOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfU1RFTkNJTEZBSUwsIEQzRFNURU5DSUxPUF9SRVBMQUNFKTsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxaRkFJTCwgRDNEU1RFTkNJTE9QX1JFUExB
Q0UpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTFBB
U1MsIEQzRFNURU5DSUxPUF9SRVBMQUNFKTsKICAgICAgICAgICAgIG1TdGVuY2lsU3RhdGVEaXJ0
eSA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAg
ICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIEZBTFNFKTsKKyAg
ICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIEZB
TFNFKTsKICAgICAgICAgfQogCi0gICAgICAgIGRldmljZS0+U2V0UGl4ZWxTaGFkZXIoTlVMTCk7
Ci0gICAgICAgIGRldmljZS0+U2V0VmVydGV4U2hhZGVyKE5VTEwpOwotICAgICAgICBkZXZpY2Ut
PlNldEZWRihEM0RGVkZfWFlaUkhXKTsKLSAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19TRVBBUkFURUFMUEhBQkxFTkRFTkFCTEUsIFRSVUUpOwotICAgICAgICBkZXZpY2UtPlNl
dFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19DT0xPUk9QLCBEM0RUT1BfU0VMRUNUQVJHMSk7
Ci0gICAgICAgIGRldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0NPTE9SQVJH
MSwgRDNEVEFfVEZBQ1RPUik7Ci0gICAgICAgIGRldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUo
MCwgRDNEVFNTX0FMUEhBT1AsIEQzRFRPUF9TRUxFQ1RBUkcxKTsKLSAgICAgICAgZGV2aWNlLT5T
ZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQUxQSEFBUkcxLCBEM0RUQV9URkFDVE9SKTsK
LSAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19URVhUVVJFRkFDVE9SLCBjb2xv
cik7Ci0gICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1QTEVNQVNL
LCAweEZGRkZGRkZGKTsKKyAgICAgICAgbURldmljZS0+U2V0UGl4ZWxTaGFkZXIoTlVMTCk7Cisg
ICAgICAgIG1EZXZpY2UtPlNldFZlcnRleFNoYWRlcihOVUxMKTsKKyAgICAgICAgbURldmljZS0+
U2V0RlZGKEQzREZWRl9YWVpSSFcpOworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19TRVBBUkFURUFMUEhBQkxFTkRFTkFCTEUsIFRSVUUpOworICAgICAgICBtRGV2aWNlLT5T
ZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX1NFTEVDVEFSRzEp
OworICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JB
UkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAgICAgbURldmljZS0+U2V0VGV4dHVyZVN0YWdlU3Rh
dGUoMCwgRDNEVFNTX0FMUEhBT1AsIEQzRFRPUF9TRUxFQ1RBUkcxKTsKKyAgICAgICAgbURldmlj
ZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0FMUEhBQVJHMSwgRDNEVEFfVEZBQ1RP
Uik7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1RFWFRVUkVGQUNUT1Is
IGNvbG9yKTsKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1Q
TEVNQVNLLCAweEZGRkZGRkZGKTsKIAogICAgICAgICBmbG9hdCBxdWFkWzRdWzRdOyAgIC8vIEEg
cXVhZHJpbGF0ZXJhbCBjb3ZlcmluZyB0aGUgdGFyZ2V0LCBhbGlnbmVkIHRvIG1hdGNoIHRoZSBl
ZGdlcwogICAgICAgICBxdWFkWzBdWzBdID0gLTAuNWY7Ci0gICAgICAgIHF1YWRbMF1bMV0gPSBk
ZXNjLkhlaWdodCAtIDAuNWY7CisgICAgICAgIHF1YWRbMF1bMV0gPSBtUmVuZGVyVGFyZ2V0RGVz
Yy5IZWlnaHQgLSAwLjVmOwogICAgICAgICBxdWFkWzBdWzJdID0gMC4wZjsKICAgICAgICAgcXVh
ZFswXVszXSA9IDEuMGY7CiAKLSAgICAgICAgcXVhZFsxXVswXSA9IGRlc2MuV2lkdGggLSAwLjVm
OwotICAgICAgICBxdWFkWzFdWzFdID0gZGVzYy5IZWlnaHQgLSAwLjVmOworICAgICAgICBxdWFk
WzFdWzBdID0gbVJlbmRlclRhcmdldERlc2MuV2lkdGggLSAwLjVmOworICAgICAgICBxdWFkWzFd
WzFdID0gbVJlbmRlclRhcmdldERlc2MuSGVpZ2h0IC0gMC41ZjsKICAgICAgICAgcXVhZFsxXVsy
XSA9IDAuMGY7CiAgICAgICAgIHF1YWRbMV1bM10gPSAxLjBmOwogCkBAIC0yNTY3LDE5ICsyNzEz
LDE5IEBAIHZvaWQgQ29udGV4dDo6Y2xlYXIoR0xiaXRmaWVsZCBtYXNrKQogICAgICAgICBxdWFk
WzJdWzJdID0gMC4wZjsKICAgICAgICAgcXVhZFsyXVszXSA9IDEuMGY7CiAKLSAgICAgICAgcXVh
ZFszXVswXSA9IGRlc2MuV2lkdGggLSAwLjVmOworICAgICAgICBxdWFkWzNdWzBdID0gbVJlbmRl
clRhcmdldERlc2MuV2lkdGggLSAwLjVmOwogICAgICAgICBxdWFkWzNdWzFdID0gLTAuNWY7CiAg
ICAgICAgIHF1YWRbM11bMl0gPSAwLjBmOwogICAgICAgICBxdWFkWzNdWzNdID0gMS4wZjsKIAot
ICAgICAgICBkaXNwbGF5LT5zdGFydFNjZW5lKCk7Ci0gICAgICAgIGRldmljZS0+RHJhd1ByaW1p
dGl2ZVVQKEQzRFBUX1RSSUFOR0xFU1RSSVAsIDIsIHF1YWQsIHNpemVvZihmbG9hdFs0XSkpOwor
ICAgICAgICBtRGlzcGxheS0+c3RhcnRTY2VuZSgpOworICAgICAgICBtRGV2aWNlLT5EcmF3UHJp
bWl0aXZlVVAoRDNEUFRfVFJJQU5HTEVTVFJJUCwgMiwgcXVhZCwgc2l6ZW9mKGZsb2F0WzRdKSk7
CiAKICAgICAgICAgaWYgKGZsYWdzICYgRDNEQ0xFQVJfWkJVRkZFUikKICAgICAgICAgewotICAg
ICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBUUlVFKTsKLSAg
ICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWldSSVRFRU5BQkxFLCBUUlVF
KTsKLSAgICAgICAgICAgIGRldmljZS0+Q2xlYXIoMCwgTlVMTCwgRDNEQ0xFQVJfWkJVRkZFUiwg
Y29sb3IsIGRlcHRoLCBzdGVuY2lsKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX1pFTkFCTEUsIFRSVUUpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfWldSSVRFRU5BQkxFLCBUUlVFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPkNs
ZWFyKDAsIE5VTEwsIEQzRENMRUFSX1pCVUZGRVIsIGNvbG9yLCBkZXB0aCwgc3RlbmNpbCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAobU1hc2tlZENsZWFyU2F2ZWRTdGF0ZSAhPSBOVUxMKQpA
QCAtMjU4OSw3ICsyNzM1LDcgQEAgdm9pZCBDb250ZXh0OjpjbGVhcihHTGJpdGZpZWxkIG1hc2sp
CiAgICAgfQogICAgIGVsc2UgaWYgKGZsYWdzKQogICAgIHsKLSAgICAgICAgZGV2aWNlLT5DbGVh
cigwLCBOVUxMLCBmbGFncywgY29sb3IsIGRlcHRoLCBzdGVuY2lsKTsKKyAgICAgICAgbURldmlj
ZS0+Q2xlYXIoMCwgTlVMTCwgZmxhZ3MsIGNvbG9yLCBkZXB0aCwgc3RlbmNpbCk7CiAgICAgfQog
fQogCkBAIC0yNjAwLDggKzI3NDYsNiBAQCB2b2lkIENvbnRleHQ6OmRyYXdBcnJheXMoR0xlbnVt
IG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KQogICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogICAgIH0KIAotICAgIGVnbDo6RGlzcGxheSAqZGlzcGxh
eSA9IGdldERpc3BsYXkoKTsKLSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZp
Y2UoKTsKICAgICBEM0RQUklNSVRJVkVUWVBFIHByaW1pdGl2ZVR5cGU7CiAgICAgaW50IHByaW1p
dGl2ZUNvdW50OwogCkBAIC0yNjM2LDEzICsyNzgwLDEzIEBAIHZvaWQgQ29udGV4dDo6ZHJhd0Fy
cmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiAKICAgICBpZiAo
IWN1bGxTa2lwc0RyYXcobW9kZSkpCiAgICAgewotICAgICAgICBkaXNwbGF5LT5zdGFydFNjZW5l
KCk7CisgICAgICAgIG1EaXNwbGF5LT5zdGFydFNjZW5lKCk7CiAgICAgICAgIAotICAgICAgICBk
ZXZpY2UtPkRyYXdQcmltaXRpdmUocHJpbWl0aXZlVHlwZSwgMCwgcHJpbWl0aXZlQ291bnQpOwor
ICAgICAgICBtRGV2aWNlLT5EcmF3UHJpbWl0aXZlKHByaW1pdGl2ZVR5cGUsIDAsIHByaW1pdGl2
ZUNvdW50KTsKIAogICAgICAgICBpZiAobW9kZSA9PSBHTF9MSU5FX0xPT1ApICAgLy8gRHJhdyB0
aGUgbGFzdCBzZWdtZW50IHNlcGFyYXRlbHkKICAgICAgICAgewotICAgICAgICAgICAgZHJhd0Ns
b3NpbmdMaW5lKGZpcnN0LCBmaXJzdCArIGNvdW50IC0gMSk7CisgICAgICAgICAgICBkcmF3Q2xv
c2luZ0xpbmUoMCwgY291bnQgLSAxLCAwKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI2NTks
OCArMjgwMyw2IEBAIHZvaWQgQ29udGV4dDo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNp
emVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqCiAgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CiAgICAgfQogCi0gICAgZWdsOjpEaXNwbGF5ICpkaXNw
bGF5ID0gZ2V0RGlzcGxheSgpOwotICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERl
dmljZSgpOwogICAgIEQzRFBSSU1JVElWRVRZUEUgcHJpbWl0aXZlVHlwZTsKICAgICBpbnQgcHJp
bWl0aXZlQ291bnQ7CiAKQEAgLTI3MDMsMjUgKzI4NDUsMjUgQEAgdm9pZCBDb250ZXh0OjpkcmF3
RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2
b2lkICoKIAogICAgIGlmICghY3VsbFNraXBzRHJhdyhtb2RlKSkKICAgICB7Ci0gICAgICAgIGRp
c3BsYXktPnN0YXJ0U2NlbmUoKTsKKyAgICAgICAgbURpc3BsYXktPnN0YXJ0U2NlbmUoKTsKIAot
ICAgICAgICBkZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKHByaW1pdGl2ZVR5cGUsIC0oSU5U
KWluZGV4SW5mby5taW5JbmRleCwgaW5kZXhJbmZvLm1pbkluZGV4LCB2ZXJ0ZXhDb3VudCwgaW5k
ZXhJbmZvLnN0YXJ0SW5kZXgsIHByaW1pdGl2ZUNvdW50KTsKKyAgICAgICAgbURldmljZS0+RHJh
d0luZGV4ZWRQcmltaXRpdmUocHJpbWl0aXZlVHlwZSwgLShJTlQpaW5kZXhJbmZvLm1pbkluZGV4
LCBpbmRleEluZm8ubWluSW5kZXgsIHZlcnRleENvdW50LCBpbmRleEluZm8uc3RhcnRJbmRleCwg
cHJpbWl0aXZlQ291bnQpOwogCiAgICAgICAgIGlmIChtb2RlID09IEdMX0xJTkVfTE9PUCkgICAv
LyBEcmF3IHRoZSBsYXN0IHNlZ21lbnQgc2VwYXJhdGVseQogICAgICAgICB7Ci0gICAgICAgICAg
ICBkcmF3Q2xvc2luZ0xpbmUoY291bnQsIHR5cGUsIGluZGljZXMpOworICAgICAgICAgICAgZHJh
d0Nsb3NpbmdMaW5lKGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleEluZm8ubWluSW5kZXgpOwog
ICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENvbnRleHQ6OmZpbmlzaCgpCisvLyBJbXBsZW1l
bnRzIGdsRmx1c2ggd2hlbiBibG9jayBpcyBmYWxzZSwgZ2xGaW5pc2ggd2hlbiBibG9jayBpcyB0
cnVlCit2b2lkIENvbnRleHQ6OnN5bmMoYm9vbCBibG9jaykKIHsKICAgICBlZ2w6OkRpc3BsYXkg
KmRpc3BsYXkgPSBnZXREaXNwbGF5KCk7Ci0gICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0g
Z2V0RGV2aWNlKCk7Ci0gICAgSURpcmVjdDNEUXVlcnk5ICpvY2NsdXNpb25RdWVyeSA9IE5VTEw7
CisgICAgSURpcmVjdDNEUXVlcnk5ICpldmVudFF1ZXJ5ID0gTlVMTDsKICAgICBIUkVTVUxUIHJl
c3VsdDsKIAotICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlUXVlcnkoRDNEUVVFUllUWVBFX09D
Q0xVU0lPTiwgJm9jY2x1c2lvblF1ZXJ5KTsKKyAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVR
dWVyeShEM0RRVUVSWVRZUEVfRVZFTlQsICZldmVudFF1ZXJ5KTsKICAgICBpZiAoRkFJTEVEKHJl
c3VsdCkpCiAgICAgewogICAgICAgICBFUlIoIkNyZWF0ZVF1ZXJ5IGZhaWxlZCBocj0leFxuIiwg
cmVzdWx0KTsKQEAgLTI3MzMsMTA1ICsyODc1LDQ0IEBAIHZvaWQgQ29udGV4dDo6ZmluaXNoKCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIElEaXJlY3QzRFN0YXRlQmxvY2s5ICpzYXZl
ZFN0YXRlID0gTlVMTDsKLSAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVN0YXRlQmxvY2soRDNE
U0JUX0FMTCwgJnNhdmVkU3RhdGUpOwotICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICB7Ci0g
ICAgICAgIEVSUigiQ3JlYXRlU3RhdGVCbG9jayBmYWlsZWQgaHI9JXhcbiIsIHJlc3VsdCk7Ci0g
ICAgICAgIG9jY2x1c2lvblF1ZXJ5LT5SZWxlYXNlKCk7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCA9
PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAg
ICAgICB9Ci0gICAgICAgIEFTU0VSVChmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICByZXN1bHQgPSBvY2NsdXNpb25RdWVyeS0+SXNzdWUoRDNESVNTVUVfQkVHSU4pOwotICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICB7Ci0gICAgICAgIEVSUigib2NjbHVzaW9uUXVlcnkt
Pklzc3VlKEJFR0lOKSBmYWlsZWQgaHI9JXhcbiIsIHJlc3VsdCk7Ci0gICAgICAgIG9jY2x1c2lv
blF1ZXJ5LT5SZWxlYXNlKCk7Ci0gICAgICAgIHNhdmVkU3RhdGUtPlJlbGVhc2UoKTsKLSAgICAg
ICAgQVNTRVJUKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFJlbmRl
ciBzb21ldGhpbmcgb3V0c2lkZSB0aGUgcmVuZGVyIHRhcmdldAotICAgIGRldmljZS0+U2V0UGl4
ZWxTaGFkZXIoTlVMTCk7Ci0gICAgZGV2aWNlLT5TZXRWZXJ0ZXhTaGFkZXIoTlVMTCk7Ci0gICAg
ZGV2aWNlLT5TZXRGVkYoRDNERlZGX1hZWlJIVyk7Ci0gICAgZmxvYXQgZGF0YVs0XSA9IHstMS4w
ZiwgLTEuMGYsIC0xLjBmLCAxLjBmfTsKLSAgICBkaXNwbGF5LT5zdGFydFNjZW5lKCk7Ci0gICAg
ZGV2aWNlLT5EcmF3UHJpbWl0aXZlVVAoRDNEUFRfUE9JTlRMSVNULCAxLCBkYXRhLCBzaXplb2Yo
ZGF0YSkpOwotCi0gICAgcmVzdWx0ID0gb2NjbHVzaW9uUXVlcnktPklzc3VlKEQzRElTU1VFX0VO
RCk7CisgICAgcmVzdWx0ID0gZXZlbnRRdWVyeS0+SXNzdWUoRDNESVNTVUVfRU5EKTsKICAgICBp
ZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBFUlIoIm9jY2x1c2lvblF1ZXJ5LT5J
c3N1ZShFTkQpIGZhaWxlZCBocj0leFxuIiwgcmVzdWx0KTsKLSAgICAgICAgb2NjbHVzaW9uUXVl
cnktPlJlbGVhc2UoKTsKLSAgICAgICAgc2F2ZWRTdGF0ZS0+QXBwbHkoKTsKLSAgICAgICAgc2F2
ZWRTdGF0ZS0+UmVsZWFzZSgpOworICAgICAgICBFUlIoImV2ZW50UXVlcnktPklzc3VlKEVORCkg
ZmFpbGVkIGhyPSV4XG4iLCByZXN1bHQpOwogICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAg
ICBldmVudFF1ZXJ5LT5SZWxlYXNlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB3
aGlsZSAoKHJlc3VsdCA9IG9jY2x1c2lvblF1ZXJ5LT5HZXREYXRhKE5VTEwsIDAsIEQzREdFVERB
VEFfRkxVU0gpKSA9PSBTX0ZBTFNFKQorICAgIGRvCiAgICAgewotICAgICAgICAvLyBLZWVwIHBv
bGxpbmcsIGJ1dCBhbGxvdyBvdGhlciB0aHJlYWRzIHRvIGRvIHNvbWV0aGluZyB1c2VmdWwgZmly
c3QKLSAgICAgICAgU2xlZXAoMCk7Ci0gICAgfQotCi0gICAgb2NjbHVzaW9uUXVlcnktPlJlbGVh
c2UoKTsKLSAgICBzYXZlZFN0YXRlLT5BcHBseSgpOwotICAgIHNhdmVkU3RhdGUtPlJlbGVhc2Uo
KTsKKyAgICAgICAgcmVzdWx0ID0gZXZlbnRRdWVyeS0+R2V0RGF0YShOVUxMLCAwLCBEM0RHRVRE
QVRBX0ZMVVNIKTsKIAotICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX0RFVklDRUxPU1QpCi0gICAg
ewotICAgICAgICBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29u
dGV4dDo6Zmx1c2goKQotewotICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmlj
ZSgpOwotICAgIElEaXJlY3QzRFF1ZXJ5OSAqZXZlbnRRdWVyeSA9IE5VTEw7Ci0gICAgSFJFU1VM
VCByZXN1bHQ7Ci0KLSAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQ
RV9FVkVOVCwgJmV2ZW50UXVlcnkpOwotICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICB7Ci0g
ICAgICAgIEVSUigiQ3JlYXRlUXVlcnkgZmFpbGVkIGhyPSV4XG4iLCByZXN1bHQpOwotICAgICAg
ICBpZiAocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09V
VE9GTUVNT1JZKQorICAgICAgICBpZihibG9jayAmJiByZXN1bHQgPT0gU19GQUxTRSkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAg
ICAgICAgLy8gS2VlcCBwb2xsaW5nLCBidXQgYWxsb3cgb3RoZXIgdGhyZWFkcyB0byBkbyBzb21l
dGhpbmcgdXNlZnVsIGZpcnN0CisgICAgICAgICAgICBTbGVlcCgwKTsKKyAgICAgICAgICAgIC8v
IGV4cGxpY2l0bHkgY2hlY2sgZm9yIGRldmljZSBsb3NzCisgICAgICAgICAgICAvLyBzb21lIGRy
aXZlcnMgc2VlbSB0byByZXR1cm4gU19GQUxTRSBldmVuIGlmIHRoZSBkZXZpY2UgaXMgbG9zdAor
ICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBEM0RFUlJfREVWSUNFTE9TVCBsaWtlIHRoZXkgc2hv
dWxkCisgICAgICAgICAgICBpZiAoZGlzcGxheS0+dGVzdERldmljZUxvc3QoKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBEM0RFUlJfREVWSUNFTE9TVDsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBBU1NFUlQoZmFsc2UpOwotICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIHdoaWxlKGJsb2NrICYmIHJlc3VsdCA9PSBTX0ZBTFNFKTsKIAotICAg
IHJlc3VsdCA9IGV2ZW50UXVlcnktPklzc3VlKEQzRElTU1VFX0VORCk7Ci0gICAgaWYgKEZBSUxF
RChyZXN1bHQpKQotICAgIHsKLSAgICAgICAgRVJSKCJldmVudFF1ZXJ5LT5Jc3N1ZShFTkQpIGZh
aWxlZCBocj0leFxuIiwgcmVzdWx0KTsKLSAgICAgICAgQVNTRVJUKGZhbHNlKTsKLSAgICAgICAg
ZXZlbnRRdWVyeS0+UmVsZWFzZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmVz
dWx0ID0gZXZlbnRRdWVyeS0+R2V0RGF0YShOVUxMLCAwLCBEM0RHRVREQVRBX0ZMVVNIKTsKICAg
ICBldmVudFF1ZXJ5LT5SZWxlYXNlKCk7CiAKLSAgICBpZiAocmVzdWx0ID09IEQzREVSUl9ERVZJ
Q0VMT1NUKQorICAgIGlmIChjaGVja0RldmljZUxvc3QocmVzdWx0KSkKICAgICB7CiAgICAgICAg
IGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgIH0KIH0KIAotdm9pZCBDb250ZXh0OjpkcmF3
Q2xvc2luZ0xpbmUodW5zaWduZWQgaW50IGZpcnN0LCB1bnNpZ25lZCBpbnQgbGFzdCkKK3ZvaWQg
Q29udGV4dDo6ZHJhd0Nsb3NpbmdMaW5lKHVuc2lnbmVkIGludCBmaXJzdCwgdW5zaWduZWQgaW50
IGxhc3QsIGludCBtaW5JbmRleCkKIHsKLSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBn
ZXREZXZpY2UoKTsKICAgICBJRGlyZWN0M0RJbmRleEJ1ZmZlcjkgKmluZGV4QnVmZmVyID0gTlVM
TDsKICAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOwogICAgIFVJTlQgb2Zmc2V0OwpAQCAtMjg0
Miw3ICsyOTIzLDcgQEAgdm9pZCBDb250ZXh0OjpkcmF3Q2xvc2luZ0xpbmUodW5zaWduZWQgaW50
IGZpcnN0LCB1bnNpZ25lZCBpbnQgbGFzdCkKIAogICAgICAgICBpZiAoIW1DbG9zaW5nSUIpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIG1DbG9zaW5nSUIgPSBuZXcgU3RyZWFtaW5nSW5kZXhCdWZm
ZXIoZGV2aWNlLCBDTE9TSU5HX0lOREVYX0JVRkZFUl9TSVpFLCBEM0RGTVRfSU5ERVgzMik7Cisg
ICAgICAgICAgICBtQ2xvc2luZ0lCID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVyKG1EZXZpY2Us
IENMT1NJTkdfSU5ERVhfQlVGRkVSX1NJWkUsIEQzREZNVF9JTkRFWDMyKTsKICAgICAgICAgfQog
CiAgICAgICAgIG1DbG9zaW5nSUItPnJlc2VydmVTcGFjZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdO
RURfSU5UKTsKQEAgLTI4NjMsNyArMjk0NCw3IEBAIHZvaWQgQ29udGV4dDo6ZHJhd0Nsb3NpbmdM
aW5lKHVuc2lnbmVkIGludCBmaXJzdCwgdW5zaWduZWQgaW50IGxhc3QpCiAKICAgICAgICAgaWYg
KCFtQ2xvc2luZ0lCKQogICAgICAgICB7Ci0gICAgICAgICAgICBtQ2xvc2luZ0lCID0gbmV3IFN0
cmVhbWluZ0luZGV4QnVmZmVyKGRldmljZSwgQ0xPU0lOR19JTkRFWF9CVUZGRVJfU0laRSwgRDNE
Rk1UX0lOREVYMTYpOworICAgICAgICAgICAgbUNsb3NpbmdJQiA9IG5ldyBTdHJlYW1pbmdJbmRl
eEJ1ZmZlcihtRGV2aWNlLCBDTE9TSU5HX0lOREVYX0JVRkZFUl9TSVpFLCBEM0RGTVRfSU5ERVgx
Nik7CiAgICAgICAgIH0KIAogICAgICAgICBtQ2xvc2luZ0lCLT5yZXNlcnZlU3BhY2Uoc3BhY2VO
ZWVkZWQsIEdMX1VOU0lHTkVEX1NIT1JUKTsKQEAgLTI4ODEsOSArMjk2MiwxMCBAQCB2b2lkIENv
bnRleHQ6OmRyYXdDbG9zaW5nTGluZSh1bnNpZ25lZCBpbnQgZmlyc3QsIHVuc2lnbmVkIGludCBs
YXN0KQogICAgIAogICAgIGlmIChzdWNjZWVkZWQpCiAgICAgewotICAgICAgICBkZXZpY2UtPlNl
dEluZGljZXMobUNsb3NpbmdJQi0+Z2V0QnVmZmVyKCkpOworICAgICAgICBtRGV2aWNlLT5TZXRJ
bmRpY2VzKG1DbG9zaW5nSUItPmdldEJ1ZmZlcigpKTsKKyAgICAgICAgbUFwcGxpZWRJQlNlcmlh
bCA9IG1DbG9zaW5nSUItPmdldFNlcmlhbCgpOwogCi0gICAgICAgIGRldmljZS0+RHJhd0luZGV4
ZWRQcmltaXRpdmUoRDNEUFRfTElORUxJU1QsIDAsIDAsIGxhc3QsIG9mZnNldCwgMSk7CisgICAg
ICAgIG1EZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKEQzRFBUX0xJTkVMSVNULCAtbWluSW5k
ZXgsIG1pbkluZGV4LCBsYXN0LCBvZmZzZXQsIDEpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpA
QCAtMjg5Miw3ICsyOTc0LDcgQEAgdm9pZCBDb250ZXh0OjpkcmF3Q2xvc2luZ0xpbmUodW5zaWdu
ZWQgaW50IGZpcnN0LCB1bnNpZ25lZCBpbnQgbGFzdCkKICAgICB9CiB9CiAKLXZvaWQgQ29udGV4
dDo6ZHJhd0Nsb3NpbmdMaW5lKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lk
ICppbmRpY2VzKQordm9pZCBDb250ZXh0OjpkcmF3Q2xvc2luZ0xpbmUoR0xzaXplaSBjb3VudCwg
R0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCkKIHsKICAgICB1
bnNpZ25lZCBpbnQgZmlyc3QgPSAwOwogICAgIHVuc2lnbmVkIGludCBsYXN0ID0gMDsKQEAgLTI5
MjEsNyArMzAwMyw3IEBAIHZvaWQgQ29udGV4dDo6ZHJhd0Nsb3NpbmdMaW5lKEdMc2l6ZWkgY291
bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzKQogICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKICAgICB9CiAKLSAgICBkcmF3Q2xvc2luZ0xpbmUoZmlyc3QsIGxhc3QpOwor
ICAgIGRyYXdDbG9zaW5nTGluZShmaXJzdCwgbGFzdCwgbWluSW5kZXgpOwogfQogCiB2b2lkIENv
bnRleHQ6OnJlY29yZEludmFsaWRFbnVtKCkKQEAgLTI5OTEsNiArMzA3MywzNiBAQCBHTGVudW0g
Q29udGV4dDo6Z2V0RXJyb3IoKQogICAgIHJldHVybiBHTF9OT19FUlJPUjsKIH0KIAorR0xlbnVt
IENvbnRleHQ6OmdldFJlc2V0U3RhdHVzKCkKK3sKKyAgICBpZiAobVJlc2V0U3RhdHVzID09IEdM
X05PX0VSUk9SKQorICAgIHsKKyAgICAgICAgYm9vbCBsb3N0ID0gbURpc3BsYXktPnRlc3REZXZp
Y2VMb3N0KCk7CisKKyAgICAgICAgaWYgKGxvc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1E
aXNwbGF5LT5ub3RpZnlEZXZpY2VMb3N0KCk7ICAgLy8gU2V0cyBtUmVzZXRTdGF0dXMKKyAgICAg
ICAgfQorICAgIH0KKworICAgIEdMZW51bSBzdGF0dXMgPSBtUmVzZXRTdGF0dXM7CisKKyAgICBp
ZiAobVJlc2V0U3RhdHVzICE9IEdMX05PX0VSUk9SKQorICAgIHsKKyAgICAgICAgaWYgKG1EaXNw
bGF5LT50ZXN0RGV2aWNlUmVzZXR0YWJsZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBtUmVz
ZXRTdGF0dXMgPSBHTF9OT19FUlJPUjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1
cm4gc3RhdHVzOworfQorCitib29sIENvbnRleHQ6OmlzUmVzZXROb3RpZmljYXRpb25FbmFibGVk
KCkKK3sKKyAgICByZXR1cm4gKG1SZXNldFN0cmF0ZWd5ID09IEdMX0xPU0VfQ09OVEVYVF9PTl9S
RVNFVF9FWFQpOworfQorCiBib29sIENvbnRleHQ6OnN1cHBvcnRzU2hhZGVyTW9kZWwzKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbVN1cHBvcnRzU2hhZGVyTW9kZWwzOwpAQCAtMzA1MCwzOSArMzE2
Miw0OSBAQCBib29sIENvbnRleHQ6OnN1cHBvcnRzRXZlbnRRdWVyaWVzKCkgY29uc3QKICAgICBy
ZXR1cm4gbVN1cHBvcnRzRXZlbnRRdWVyaWVzOwogfQogCi1ib29sIENvbnRleHQ6OnN1cHBvcnRz
Q29tcHJlc3NlZFRleHR1cmVzKCkgY29uc3QKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNEWFQxVGV4
dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNEWFQxVGV4dHVyZXM7Cit9CisK
K2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSBjb25zdAogewotICAgIHJldHVy
biBtU3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZXM7CisgICAgcmV0dXJuIG1TdXBwb3J0c0RYVDNU
ZXh0dXJlczsKIH0KIAotYm9vbCBDb250ZXh0OjpzdXBwb3J0c0Zsb2F0VGV4dHVyZXMoKSBjb25z
dAorYm9vbCBDb250ZXh0OjpzdXBwb3J0c0RYVDVUZXh0dXJlcygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1TdXBwb3J0c0Zsb2F0VGV4dHVyZXM7CisgICAgcmV0dXJuIG1TdXBwb3J0c0RYVDVUZXh0
dXJlczsKIH0KIAotYm9vbCBDb250ZXh0OjpzdXBwb3J0c0Zsb2F0TGluZWFyRmlsdGVyKCkgY29u
c3QKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMoKSBjb25zdAogewotICAg
IHJldHVybiBtU3VwcG9ydHNGbG9hdExpbmVhckZpbHRlcjsKKyAgICByZXR1cm4gbVN1cHBvcnRz
RmxvYXQzMlRleHR1cmVzOwogfQogCi1ib29sIENvbnRleHQ6OnN1cHBvcnRzRmxvYXRSZW5kZXJh
YmxlVGV4dHVyZXMoKSBjb25zdAorYm9vbCBDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MzJMaW5lYXJG
aWx0ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtU3VwcG9ydHNGbG9hdFJlbmRlcmFibGVUZXh0
dXJlczsKKyAgICByZXR1cm4gbVN1cHBvcnRzRmxvYXQzMkxpbmVhckZpbHRlcjsKIH0KIAotYm9v
bCBDb250ZXh0OjpzdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzKCkgY29uc3QKK2Jvb2wgQ29udGV4
dDo6c3VwcG9ydHNGbG9hdDMyUmVuZGVyYWJsZVRleHR1cmVzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbVN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXM7CisgICAgcmV0dXJuIG1TdXBwb3J0c0Zsb2F0
MzJSZW5kZXJhYmxlVGV4dHVyZXM7CiB9CiAKLWJvb2wgQ29udGV4dDo6c3VwcG9ydHNIYWxmRmxv
YXRMaW5lYXJGaWx0ZXIoKSBjb25zdAorYm9vbCBDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MTZUZXh0
dXJlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1TdXBwb3J0c0hhbGZGbG9hdExpbmVhckZpbHRl
cjsKKyAgICByZXR1cm4gbVN1cHBvcnRzRmxvYXQxNlRleHR1cmVzOwogfQogCi1ib29sIENvbnRl
eHQ6OnN1cHBvcnRzSGFsZkZsb2F0UmVuZGVyYWJsZVRleHR1cmVzKCkgY29uc3QKK2Jvb2wgQ29u
dGV4dDo6c3VwcG9ydHNGbG9hdDE2TGluZWFyRmlsdGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bVN1cHBvcnRzSGFsZkZsb2F0UmVuZGVyYWJsZVRleHR1cmVzOworICAgIHJldHVybiBtU3VwcG9y
dHNGbG9hdDE2TGluZWFyRmlsdGVyOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzRmxvYXQx
NlJlbmRlcmFibGVUZXh0dXJlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c0Zsb2F0
MTZSZW5kZXJhYmxlVGV4dHVyZXM7CiB9CiAKIGludCBDb250ZXh0OjpnZXRNYXhpbXVtUmVuZGVy
YnVmZmVyRGltZW5zaW9uKCkgY29uc3QKQEAgLTMzMTMsNTggKzM0MzUsODMgQEAgdm9pZCBDb250
ZXh0OjpzZXRWZXJ0ZXhBdHRyaWIoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMp
CiAgICAgbVZlcnRleERhdGFNYW5hZ2VyLT5kaXJ0eUN1cnJlbnRWYWx1ZShpbmRleCk7CiB9CiAK
Ky8vIGtlZXAgbGlzdCBzb3J0ZWQgaW4gZm9sbG93aW5nIG9yZGVyCisvLyBPRVMgZXh0ZW5zaW9u
cworLy8gRVhUIGV4dGVuc2lvbnMKKy8vIFZlbmRvciBleHRlbnNpb25zCiB2b2lkIENvbnRleHQ6
OmluaXRFeHRlbnNpb25TdHJpbmcoKQogeworICAgIG1FeHRlbnNpb25TdHJpbmcgPSAiIjsKKwor
ICAgIC8vIE9FUyBleHRlbnNpb25zCisgICAgaWYgKHN1cHBvcnRzMzJiaXRJbmRpY2VzKCkpCisg
ICAgeworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50ICI7CisgICAgfQorCiAgICAgbUV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsICI7Ci0gICAgbUV4dGVuc2lvblN0cmluZyArPSAiR0xfRVhUX3RleHR1cmVf
Zm9ybWF0X0JHUkE4ODg4ICI7Ci0gICAgbUV4dGVuc2lvblN0cmluZyArPSAiR0xfRVhUX3JlYWRf
Zm9ybWF0X2JncmEgIjsKLSAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9BTkdMRV9mcmFtZWJ1
ZmZlcl9ibGl0ICI7CiAgICAgbUV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3JnYjhfcmdiYTgg
IjsKICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMg
IjsKIAotICAgIGlmIChzdXBwb3J0c0V2ZW50UXVlcmllcygpKQorICAgIGlmIChzdXBwb3J0c0Zs
b2F0MTZUZXh0dXJlcygpKQogICAgIHsKLSAgICAgICAgbUV4dGVuc2lvblN0cmluZyArPSAiR0xf
TlZfZmVuY2UgIjsKKyAgICAgICAgbUV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3RleHR1cmVf
aGFsZl9mbG9hdCAiOwogICAgIH0KLQotICAgIGlmIChzdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJl
cygpKQorICAgIGlmIChzdXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXIoKSkKICAgICB7Ci0gICAg
ICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEg
IjsKKyAgICAgICAgbUV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dF9saW5lYXIgIjsKICAgICB9Ci0KLSAgICBpZiAoc3VwcG9ydHNGbG9hdFRleHR1cmVzKCkpCisg
ICAgaWYgKHN1cHBvcnRzRmxvYXQzMlRleHR1cmVzKCkpCiAgICAgewogICAgICAgICBtRXh0ZW5z
aW9uU3RyaW5nICs9ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCAiOwogICAgIH0KLQotICAgIGlmIChz
dXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzKCkpCisgICAgaWYgKHN1cHBvcnRzRmxvYXQzMkxpbmVh
ckZpbHRlcigpKQogICAgIHsKLSAgICAgICAgbUV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdCAiOworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNf
dGV4dHVyZV9mbG9hdF9saW5lYXIgIjsKICAgICB9CiAKLSAgICBpZiAoc3VwcG9ydHNGbG9hdExp
bmVhckZpbHRlcigpKQorICAgIGlmIChzdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKSkKICAgICB7
Ci0gICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVh
ciAiOworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfdGV4dHVyZV9ucG90ICI7
CiAgICAgfQogCi0gICAgaWYgKHN1cHBvcnRzSGFsZkZsb2F0TGluZWFyRmlsdGVyKCkpCisgICAg
Ly8gTXVsdGktdmVuZG9yIChFWFQpIGV4dGVuc2lvbnMKKyAgICBtRXh0ZW5zaW9uU3RyaW5nICs9
ICJHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSAiOworICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkdM
X0VYVF9yb2J1c3RuZXNzICI7CisKKyAgICBpZiAoc3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKICAg
ICB7Ci0gICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkdMX09FU190ZXh0dXJlX2hhbGZfZmxv
YXRfbGluZWFyICI7CisgICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDEgIjsKICAgICB9CiAKKyAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJH
TF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggIjsKKyAgICBtRXh0ZW5zaW9uU3RyaW5nICs9
ICJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlICI7CisKKyAgICAvLyBBTkdMRS1zcGVjaWZpYyBleHRl
bnNpb25zCisgICAgbUV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxp
dCAiOwogICAgIGlmIChnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgIT0gMCkKICAgICB7CiAgICAg
ICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
ICI7CiAgICAgfQogCi0gICAgaWYgKHN1cHBvcnRzMzJiaXRJbmRpY2VzKCkpCisgICAgbUV4dGVu
c2lvblN0cmluZyArPSAiR0xfQU5HTEVfcGFja19yZXZlcnNlX3Jvd19vcmRlciAiOworCisgICAg
aWYgKHN1cHBvcnRzRFhUM1RleHR1cmVzKCkpCiAgICAgewotICAgICAgICBtRXh0ZW5zaW9uU3Ry
aW5nICs9ICJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50ICI7CisgICAgICAgIG1FeHRlbnNpb25T
dHJpbmcgKz0gIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyAiOworICAgIH0KKyAg
ICBpZiAoc3VwcG9ydHNEWFQ1VGV4dHVyZXMoKSkKKyAgICB7CisgICAgICAgIG1FeHRlbnNpb25T
dHJpbmcgKz0gIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSAiOwogICAgIH0KIAot
ICAgIGlmIChzdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKSkKKyAgICBtRXh0ZW5zaW9uU3RyaW5n
ICs9ICJHTF9BTkdMRV90ZXh0dXJlX3VzYWdlICI7CisgICAgbUV4dGVuc2lvblN0cmluZyArPSAi
R0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlICI7CisKKyAgICAvLyBPdGhlciB2ZW5k
b3Itc3BlY2lmaWMgZXh0ZW5zaW9ucworICAgIGlmIChzdXBwb3J0c0V2ZW50UXVlcmllcygpKQog
ICAgIHsKLSAgICAgICAgbUV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3RleHR1cmVfbnBvdCAi
OworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9OVl9mZW5jZSAiOwogICAgIH0KIAog
ICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZW5kID0gbUV4dGVuc2lvblN0cmluZy5maW5kX2xh
c3Rfbm90X29mKCcgJyk7CkBAIC0zMzc5LDEyICszNTI2LDI0IEBAIGNvbnN0IGNoYXIgKkNvbnRl
eHQ6OmdldEV4dGVuc2lvblN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1FeHRlbnNpb25TdHJp
bmcuY19zdHIoKTsKIH0KIAordm9pZCBDb250ZXh0Ojppbml0UmVuZGVyZXJTdHJpbmcoKQorewor
ICAgIEQzREFEQVBURVJfSURFTlRJRklFUjkgKmlkZW50aWZpZXIgPSBtRGlzcGxheS0+Z2V0QWRh
cHRlcklkZW50aWZpZXIoKTsKKworICAgIG1SZW5kZXJlclN0cmluZyA9ICJBTkdMRSAoIjsKKyAg
ICBtUmVuZGVyZXJTdHJpbmcgKz0gaWRlbnRpZmllci0+RGVzY3JpcHRpb247CisgICAgbVJlbmRl
cmVyU3RyaW5nICs9ICIpIjsKK30KKworY29uc3QgY2hhciAqQ29udGV4dDo6Z2V0UmVuZGVyZXJT
dHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtUmVuZGVyZXJTdHJpbmcuY19zdHIoKTsKK30K
Kwogdm9pZCBDb250ZXh0OjpibGl0RnJhbWVidWZmZXIoR0xpbnQgc3JjWDAsIEdMaW50IHNyY1kw
LCBHTGludCBzcmNYMSwgR0xpbnQgc3JjWTEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQgZHN0WTEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2spCiB7Ci0gICAgSURp
cmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7Ci0KICAgICBGcmFtZWJ1ZmZlciAq
cmVhZEZyYW1lYnVmZmVyID0gZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CiAgICAgRnJhbWVidWZmZXIg
KmRyYXdGcmFtZWJ1ZmZlciA9IGdldERyYXdGcmFtZWJ1ZmZlcigpOwogCkBAIC0zNTcyLDggKzM3
MzEsOCBAQCB2b2lkIENvbnRleHQ6OmJsaXRGcmFtZWJ1ZmZlcihHTGludCBzcmNYMCwgR0xpbnQg
c3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMQogCiAgICAgaWYgKG1hc2sgJiAoR0xfREVQ
VEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCkpCiAgICAgewotICAgICAgICBE
ZXB0aFN0ZW5jaWxidWZmZXIgKnJlYWREU0J1ZmZlciA9IE5VTEw7Ci0gICAgICAgIERlcHRoU3Rl
bmNpbGJ1ZmZlciAqZHJhd0RTQnVmZmVyID0gTlVMTDsKKyAgICAgICAgUmVuZGVyYnVmZmVyICpy
ZWFkRFNCdWZmZXIgPSBOVUxMOworICAgICAgICBSZW5kZXJidWZmZXIgKmRyYXdEU0J1ZmZlciA9
IE5VTEw7CiAKICAgICAgICAgLy8gV2Ugc3VwcG9ydCBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWws
IGFuZCBkbyBub3Qgc3VwcG9ydCBhIHNlcGFyYXRlbHkgYXR0YWNoZWQgZGVwdGggYW5kIHN0ZW5j
aWwgYnVmZmVyLCBzbyBpZiB3ZSBoYXZlCiAgICAgICAgIC8vIGJvdGggYSBkZXB0aCBhbmQgc3Rl
bmNpbCBidWZmZXIsIGl0IHdpbGwgYmUgdGhlIHNhbWUgYnVmZmVyLgpAQCAtMzYyNSwxMyArMzc4
NCwxOCBAQCB2b2lkIENvbnRleHQ6OmJsaXRGcmFtZWJ1ZmZlcihHTGludCBzcmNYMCwgR0xpbnQg
c3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMQogCiAgICAgaWYgKGJsaXRSZW5kZXJUYXJn
ZXQgfHwgYmxpdERlcHRoU3RlbmNpbCkKICAgICB7Ci0gICAgICAgIGVnbDo6RGlzcGxheSAqZGlz
cGxheSA9IGdldERpc3BsYXkoKTsKLSAgICAgICAgZGlzcGxheS0+ZW5kU2NlbmUoKTsKKyAgICAg
ICAgbURpc3BsYXktPmVuZFNjZW5lKCk7CiAKICAgICAgICAgaWYgKGJsaXRSZW5kZXJUYXJnZXQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5TdHJldGNo
UmVjdChyZWFkRnJhbWVidWZmZXItPmdldFJlbmRlclRhcmdldCgpLCAmc291cmNlVHJpbW1lZFJl
Y3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRy
YXdGcmFtZWJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCksICZkZXN0VHJpbW1lZFJlY3QsIEQzRFRF
WEZfTk9ORSk7CisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSogcmVhZFJlbmRlclRhcmdl
dCA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCk7CisgICAgICAgICAgICBJRGly
ZWN0M0RTdXJmYWNlOSogZHJhd1JlbmRlclRhcmdldCA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0UmVu
ZGVyVGFyZ2V0KCk7CisKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+U3Ry
ZXRjaFJlY3QocmVhZFJlbmRlclRhcmdldCwgJnNvdXJjZVRyaW1tZWRSZWN0LCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1JlbmRlclRhcmdl
dCwgJmRlc3RUcmltbWVkUmVjdCwgRDNEVEVYRl9OT05FKTsKKworICAgICAgICAgICAgcmVhZFJl
bmRlclRhcmdldC0+UmVsZWFzZSgpOworICAgICAgICAgICAgZHJhd1JlbmRlclRhcmdldC0+UmVs
ZWFzZSgpOwogCiAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgICAgICB7
CkBAIC0zNjQyLDcgKzM4MDYsNyBAQCB2b2lkIENvbnRleHQ6OmJsaXRGcmFtZWJ1ZmZlcihHTGlu
dCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMQogCiAgICAgICAg
IGlmIChibGl0RGVwdGhTdGVuY2lsKQogICAgICAgICB7Ci0gICAgICAgICAgICBIUkVTVUxUIHJl
c3VsdCA9IGRldmljZS0+U3RyZXRjaFJlY3QocmVhZEZyYW1lYnVmZmVyLT5nZXREZXB0aFN0ZW5j
aWwoKSwgTlVMTCwgZHJhd0ZyYW1lYnVmZmVyLT5nZXREZXB0aFN0ZW5jaWwoKSwgTlVMTCwgRDNE
VEVYRl9OT05FKTsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+U3RyZXRj
aFJlY3QocmVhZEZyYW1lYnVmZmVyLT5nZXREZXB0aFN0ZW5jaWwoKSwgTlVMTCwgZHJhd0ZyYW1l
YnVmZmVyLT5nZXREZXB0aFN0ZW5jaWwoKSwgTlVMTCwgRDNEVEVYRl9OT05FKTsKIAogICAgICAg
ICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICAgICAgewpAQCAtMzY3MywxMCArMzgz
Nyw4IEBAIFZlcnRleERlY2xhcmF0aW9uQ2FjaGU6On5WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKCkK
ICAgICB9CiB9CiAKLUdMZW51bSBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOjphcHBseURlY2xhcmF0
aW9uKFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tdLCBQcm9ncmFtICpwcm9ncmFtKQor
R0xlbnVtIFZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5RGVjbGFyYXRpb24oSURpcmVjdDNE
RGV2aWNlOSAqZGV2aWNlLCBUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbXSwgUHJvZ3Jh
bSAqcHJvZ3JhbSkKIHsKLSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2Uo
KTsKLQogICAgIEQzRFZFUlRFWEVMRU1FTlQ5IGVsZW1lbnRzW01BWF9WRVJURVhfQVRUUklCUyAr
IDFdOwogICAgIEQzRFZFUlRFWEVMRU1FTlQ5ICplbGVtZW50ID0gJmVsZW1lbnRzWzBdOwogCkBA
IC0zNjg0LDcgKzM4NDYsMTUgQEAgR0xlbnVtIFZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5
RGVjbGFyYXRpb24oVHJhbnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW10KICAgICB7CiAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzW2ldLmFjdGl2ZSkKICAgICAgICAgewotICAgICAgICAgICAgZGV2
aWNlLT5TZXRTdHJlYW1Tb3VyY2UoaSwgYXR0cmlidXRlc1tpXS52ZXJ0ZXhCdWZmZXIsIGF0dHJp
YnV0ZXNbaV0ub2Zmc2V0LCBhdHRyaWJ1dGVzW2ldLnN0cmlkZSk7CisgICAgICAgICAgICBpZiAo
bUFwcGxpZWRWQnNbaV0uc2VyaWFsICE9IGF0dHJpYnV0ZXNbaV0uc2VyaWFsIHx8CisgICAgICAg
ICAgICAgICAgbUFwcGxpZWRWQnNbaV0uc3RyaWRlICE9IGF0dHJpYnV0ZXNbaV0uc3RyaWRlIHx8
CisgICAgICAgICAgICAgICAgbUFwcGxpZWRWQnNbaV0ub2Zmc2V0ICE9IGF0dHJpYnV0ZXNbaV0u
b2Zmc2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRldmljZS0+U2V0U3RyZWFt
U291cmNlKGksIGF0dHJpYnV0ZXNbaV0udmVydGV4QnVmZmVyLCBhdHRyaWJ1dGVzW2ldLm9mZnNl
dCwgYXR0cmlidXRlc1tpXS5zdHJpZGUpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW2ld
LnNlcmlhbCA9IGF0dHJpYnV0ZXNbaV0uc2VyaWFsOworICAgICAgICAgICAgICAgIG1BcHBsaWVk
VkJzW2ldLnN0cmlkZSA9IGF0dHJpYnV0ZXNbaV0uc3RyaWRlOworICAgICAgICAgICAgICAgIG1B
cHBsaWVkVkJzW2ldLm9mZnNldCA9IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0OworICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBlbGVtZW50LT5TdHJlYW0gPSBpOwogICAgICAgICAgICAgZWxlbWVu
dC0+T2Zmc2V0ID0gMDsKQEAgLTM3MDUsOCArMzg3NSwxMiBAQCBHTGVudW0gVmVydGV4RGVjbGFy
YXRpb25DYWNoZTo6YXBwbHlEZWNsYXJhdGlvbihUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0
ZXNbXQogICAgICAgICBpZiAobWVtY21wKGVudHJ5LT5jYWNoZWRFbGVtZW50cywgZWxlbWVudHMs
IChlbGVtZW50IC0gZWxlbWVudHMpICogc2l6ZW9mKEQzRFZFUlRFWEVMRU1FTlQ5KSkgPT0gMCAm
JiBlbnRyeS0+dmVydGV4RGVjbGFyYXRpb24pCiAgICAgICAgIHsKICAgICAgICAgICAgIGVudHJ5
LT5scnVDb3VudCA9ICsrbU1heExydTsKLSAgICAgICAgICAgIGRldmljZS0+U2V0VmVydGV4RGVj
bGFyYXRpb24oZW50cnktPnZlcnRleERlY2xhcmF0aW9uKTsKLSAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYoZW50cnktPnZlcnRleERlY2xhcmF0aW9uICE9IG1MYXN0U2V0VkRlY2wpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZGV2aWNlLT5TZXRWZXJ0ZXhEZWNsYXJhdGlvbihl
bnRyeS0+dmVydGV4RGVjbGFyYXRpb24pOworICAgICAgICAgICAgICAgIG1MYXN0U2V0VkRlY2wg
PSBlbnRyeS0+dmVydGV4RGVjbGFyYXRpb247CisgICAgICAgICAgICB9CisKICAgICAgICAgICAg
IHJldHVybiBHTF9OT19FUlJPUjsKICAgICAgICAgfQogICAgIH0KQEAgLTM3MjUsMjMgKzM4OTks
MzYgQEAgR0xlbnVtIFZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5RGVjbGFyYXRpb24oVHJh
bnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW10KICAgICB7CiAgICAgICAgIGxhc3RDYWNoZS0+
dmVydGV4RGVjbGFyYXRpb24tPlJlbGVhc2UoKTsKICAgICAgICAgbGFzdENhY2hlLT52ZXJ0ZXhE
ZWNsYXJhdGlvbiA9IE5VTEw7CisgICAgICAgIC8vIG1MYXN0U2V0VkRlY2wgaXMgc2V0IHRvIHRo
ZSByZXBsYWNlbWVudCwgc28gd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeQorICAgICAgICAvLyBhYm91
dCBpdC4KICAgICB9CiAKICAgICBtZW1jcHkobGFzdENhY2hlLT5jYWNoZWRFbGVtZW50cywgZWxl
bWVudHMsIChlbGVtZW50IC0gZWxlbWVudHMpICogc2l6ZW9mKEQzRFZFUlRFWEVMRU1FTlQ5KSk7
CiAgICAgZGV2aWNlLT5DcmVhdGVWZXJ0ZXhEZWNsYXJhdGlvbihlbGVtZW50cywgJmxhc3RDYWNo
ZS0+dmVydGV4RGVjbGFyYXRpb24pOwogICAgIGRldmljZS0+U2V0VmVydGV4RGVjbGFyYXRpb24o
bGFzdENhY2hlLT52ZXJ0ZXhEZWNsYXJhdGlvbik7CisgICAgbUxhc3RTZXRWRGVjbCA9IGxhc3RD
YWNoZS0+dmVydGV4RGVjbGFyYXRpb247CiAgICAgbGFzdENhY2hlLT5scnVDb3VudCA9ICsrbU1h
eExydTsKIAogICAgIHJldHVybiBHTF9OT19FUlJPUjsKIH0KIAordm9pZCBWZXJ0ZXhEZWNsYXJh
dGlvbkNhY2hlOjptYXJrU3RhdGVEaXJ0eSgpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBN
QVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIG1BcHBsaWVkVkJzW2ldLnNl
cmlhbCA9IDA7CisgICAgfQorCisgICAgbUxhc3RTZXRWRGVjbCA9IE5VTEw7Cit9CisKIH0KIAog
ZXh0ZXJuICJDIgogewotZ2w6OkNvbnRleHQgKmdsQ3JlYXRlQ29udGV4dChjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlnLCBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0KQorZ2w6OkNvbnRl
eHQgKmdsQ3JlYXRlQ29udGV4dChjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBjb25zdCBnbDo6
Q29udGV4dCAqc2hhcmVDb250ZXh0LCBib29sIG5vdGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nl
c3MpCiB7Ci0gICAgcmV0dXJuIG5ldyBnbDo6Q29udGV4dChjb25maWcsIHNoYXJlQ29udGV4dCk7
CisgICAgcmV0dXJuIG5ldyBnbDo6Q29udGV4dChjb25maWcsIHNoYXJlQ29udGV4dCwgbm90aWZ5
UmVzZXRzLCByb2J1c3RBY2Nlc3MpOwogfQogCiB2b2lkIGdsRGVzdHJveUNvbnRleHQoZ2w6OkNv
bnRleHQgKmNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL0NvbnRleHQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvQ29udGV4dC5oCmluZGV4IDMwMDI2NTQ0Y2I1ZTcxZDA3MTBhOWM5ZjY2OThhODU0NGNmZDEz
ZTguLmU0MzY3MjRkNjA4MDhjNmM3YjgwZmM4YzdjODA3M2Y2OGNiMTBmZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQ29udGV4dC5oCkBAIC02NSw3ICs2
NSw3IEBAIGVudW0KICAgICBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyA9IDE2LAogICAgIE1BWF9W
RVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU19WVEYgPSA0LCAgIC8vIEZvciBkZXZpY2VzIHN1cHBv
cnRpbmcgdmVydGV4IHRleHR1cmUgZmV0Y2gKICAgICBNQVhfQ09NQklORURfVEVYVFVSRV9JTUFH
RV9VTklUU19WVEYgPSBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyArIE1BWF9WRVJURVhfVEVYVFVS
RV9JTUFHRV9VTklUU19WVEYsICAgIAotICAgIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNf
U00yID0gMzIgLSAzLCAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciBkeF9WaWV3cG9ydCwgZHhfRGVw
dGgsIGFuZCBkeF9EZXB0aFJhbmdlLiBkeF9Qb2ludE9yTGluZXMgYW5kIGR4X0Zyb250Q0NXIHVz
ZSBzZXBhcmF0ZSBib29sIHJlZ2lzdGVycy4KKyAgICBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNU
T1JTX1NNMiA9IDMyIC0gMywgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgZHhfQ29vcmQsIGR4X0Rl
cHRoLCBhbmQgZHhfRGVwdGhSYW5nZS4gZHhfUG9pbnRPckxpbmVzIGFuZCBkeF9Gcm9udENDVyB1
c2Ugc2VwYXJhdGUgYm9vbCByZWdpc3RlcnMuCiAgICAgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVD
VE9SU19TTTMgPSAyMjQgLSAzLAogICAgIE1BWF9EUkFXX0JVRkZFUlMgPSAxLAogCkBAIC0yMTks
NiArMjE5LDcgQEAgc3RydWN0IFN0YXRlCiAKICAgICBHTGludCB1bnBhY2tBbGlnbm1lbnQ7CiAg
ICAgR0xpbnQgcGFja0FsaWdubWVudDsKKyAgICBib29sIHBhY2tSZXZlcnNlUm93T3JkZXI7CiB9
OwogCiAvLyBIZWxwZXIgY2xhc3MgdG8gY29uc3RydWN0IGFuZCBjYWNoZSB2ZXJ0ZXggZGVjbGFy
YXRpb25zCkBAIC0yMjgsMTMgKzIyOSwyNSBAQCBjbGFzcyBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hl
CiAgICAgVmVydGV4RGVjbGFyYXRpb25DYWNoZSgpOwogICAgIH5WZXJ0ZXhEZWNsYXJhdGlvbkNh
Y2hlKCk7CiAKLSAgICBHTGVudW0gYXBwbHlEZWNsYXJhdGlvbihUcmFuc2xhdGVkQXR0cmlidXRl
IGF0dHJpYnV0ZXNbXSwgUHJvZ3JhbSAqcHJvZ3JhbSk7CisgICAgR0xlbnVtIGFwcGx5RGVjbGFy
YXRpb24oSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJp
YnV0ZXNbXSwgUHJvZ3JhbSAqcHJvZ3JhbSk7CisKKyAgICB2b2lkIG1hcmtTdGF0ZURpcnR5KCk7
CiAKICAgcHJpdmF0ZToKICAgICBVSU5UIG1NYXhMcnU7CiAKICAgICBlbnVtIHsgTlVNX1ZFUlRF
WF9ERUNMX0NBQ0hFX0VOVFJJRVMgPSAxNiB9OwogCisgICAgc3RydWN0IFZCRGF0YQorICAgIHsK
KyAgICAgICAgdW5zaWduZWQgaW50IHNlcmlhbDsKKyAgICAgICAgdW5zaWduZWQgaW50IHN0cmlk
ZTsKKyAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldDsKKyAgICB9OworCisgICAgVkJEYXRhIG1B
cHBsaWVkVkJzW01BWF9WRVJURVhfQVRUUklCU107CisgICAgSURpcmVjdDNEVmVydGV4RGVjbGFy
YXRpb245ICptTGFzdFNldFZEZWNsOworCiAgICAgc3RydWN0IFZlcnRleERlY2xDYWNoZUVudHJ5
CiAgICAgewogICAgICAgICBEM0RWRVJURVhFTEVNRU5UOSBjYWNoZWRFbGVtZW50c1tNQVhfVkVS
VEVYX0FUVFJJQlMgKyAxXTsKQEAgLTI0Niw3ICsyNTksNyBAQCBjbGFzcyBWZXJ0ZXhEZWNsYXJh
dGlvbkNhY2hlCiBjbGFzcyBDb250ZXh0CiB7CiAgIHB1YmxpYzoKLSAgICBDb250ZXh0KGNvbnN0
IGVnbDo6Q29uZmlnICpjb25maWcsIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQpOwor
ICAgIENvbnRleHQoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywgY29uc3QgZ2w6OkNvbnRleHQg
KnNoYXJlQ29udGV4dCwgYm9vbCBub3RpZnlSZXNldHMsIGJvb2wgcm9idXN0QWNjZXNzKTsKIAog
ICAgIH5Db250ZXh0KCk7CiAKQEAgLTI1NCw2ICsyNjcsOSBAQCBjbGFzcyBDb250ZXh0CiAKICAg
ICB2b2lkIG1hcmtBbGxTdGF0ZURpcnR5KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0NvbnRl
eHRMb3N0KCk7CisgICAgYm9vbCBpc0NvbnRleHRMb3N0KCk7CisKICAgICAvLyBTdGF0ZSBtYW5p
cHVsYXRpb24KICAgICB2b2lkIHNldENsZWFyQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwg
ZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpOwogCkBAIC0zNDUsNiArMzYxLDkgQEAgY2xhc3MgQ29u
dGV4dAogICAgIHZvaWQgc2V0UGFja0FsaWdubWVudChHTGludCBhbGlnbm1lbnQpOwogICAgIEdM
aW50IGdldFBhY2tBbGlnbm1lbnQoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0UGFja1JldmVyc2VS
b3dPcmRlcihib29sIHJldmVyc2VSb3dPcmRlcik7CisgICAgYm9vbCBnZXRQYWNrUmV2ZXJzZVJv
d09yZGVyKCkgY29uc3Q7CisKICAgICAvLyBUaGVzZSBjcmVhdGUgIGFuZCBkZXN0cm95IG1ldGhv
ZHMgYXJlIG1lcmVseSBwYXNzLXRocm91Z2hzIHRvIAogICAgIC8vIFJlc291cmNlTWFuYWdlciwg
d2hpY2ggb3ducyB0aGVzZSBvYmplY3QgdHlwZXMKICAgICBHTHVpbnQgY3JlYXRlQnVmZmVyKCk7
CkBAIC00MDUsMTYgKzQyNCwxNSBAQCBjbGFzcyBDb250ZXh0CiAKICAgICBib29sIGdldFF1ZXJ5
UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAqdHlwZSwgdW5zaWduZWQgaW50ICpu
dW1QYXJhbXMpOwogCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgdm9p
ZCogcGl4ZWxzKTsKKyAgICB2b2lkIHJlYWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNp
emVpICpidWZTaXplLCB2b2lkKiBwaXhlbHMpOwogICAgIHZvaWQgY2xlYXIoR0xiaXRmaWVsZCBt
YXNrKTsKICAgICB2b2lkIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNp
emVpIGNvdW50KTsKICAgICB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBj
b3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMpOwotICAgIHZvaWQgZmluaXNo
KCk7Ci0gICAgdm9pZCBmbHVzaCgpOworICAgIHZvaWQgc3luYyhib29sIGJsb2NrKTsgICAvLyBm
bHVzaC9maW5pc2gKIAogCS8vIERyYXcgdGhlIGxhc3Qgc2VnbWVudCBvZiBhIGxpbmUgbG9vcAot
ICAgIHZvaWQgZHJhd0Nsb3NpbmdMaW5lKHVuc2lnbmVkIGludCBmaXJzdCwgdW5zaWduZWQgaW50
IGxhc3QpOwotICAgIHZvaWQgZHJhd0Nsb3NpbmdMaW5lKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0
eXBlLCBjb25zdCB2b2lkICppbmRpY2VzKTsKKyAgICB2b2lkIGRyYXdDbG9zaW5nTGluZSh1bnNp
Z25lZCBpbnQgZmlyc3QsIHVuc2lnbmVkIGludCBsYXN0LCBpbnQgbWluSW5kZXgpOworICAgIHZv
aWQgZHJhd0Nsb3NpbmdMaW5lKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lk
ICppbmRpY2VzLCBpbnQgbWluSW5kZXgpOwogCiAgICAgdm9pZCByZWNvcmRJbnZhbGlkRW51bSgp
OwogICAgIHZvaWQgcmVjb3JkSW52YWxpZFZhbHVlKCk7CkBAIC00MjMsNiArNDQxLDggQEAgY2xh
c3MgQ29udGV4dAogICAgIHZvaWQgcmVjb3JkSW52YWxpZEZyYW1lYnVmZmVyT3BlcmF0aW9uKCk7
CiAKICAgICBHTGVudW0gZ2V0RXJyb3IoKTsKKyAgICBHTGVudW0gZ2V0UmVzZXRTdGF0dXMoKTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQoKTsKIAogICAgIGJv
b2wgc3VwcG9ydHNTaGFkZXJNb2RlbDMoKSBjb25zdDsKICAgICBpbnQgZ2V0TWF4aW11bVZhcnlp
bmdWZWN0b3JzKCkgY29uc3Q7CkBAIC00MzYsMTQgKzQ1NiwxNyBAQCBjbGFzcyBDb250ZXh0CiAg
ICAgR0xzaXplaSBnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgY29uc3Q7CiAgICAgaW50IGdldE5l
YXJlc3RTdXBwb3J0ZWRTYW1wbGVzKEQzREZPUk1BVCBmb3JtYXQsIGludCByZXF1ZXN0ZWQpIGNv
bnN0OwogICAgIGNvbnN0IGNoYXIgKmdldEV4dGVuc2lvblN0cmluZygpIGNvbnN0OworICAgIGNv
bnN0IGNoYXIgKmdldFJlbmRlcmVyU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0V2
ZW50UXVlcmllcygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZXMo
KSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzRmxvYXRUZXh0dXJlcygpIGNvbnN0OwotICAgIGJv
b2wgc3VwcG9ydHNGbG9hdExpbmVhckZpbHRlcigpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNG
bG9hdFJlbmRlcmFibGVUZXh0dXJlcygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNIYWxmRmxv
YXRUZXh0dXJlcygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNIYWxmRmxvYXRMaW5lYXJGaWx0
ZXIoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzSGFsZkZsb2F0UmVuZGVyYWJsZVRleHR1cmVz
KCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0RYVDFUZXh0dXJlcygpIGNvbnN0OworICAgIGJv
b2wgc3VwcG9ydHNEWFQzVGV4dHVyZXMoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzRFhUNVRl
eHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0Zsb2F0MzJUZXh0dXJlcygpIGNvbnN0
OworICAgIGJvb2wgc3VwcG9ydHNGbG9hdDMyTGluZWFyRmlsdGVyKCkgY29uc3Q7CisgICAgYm9v
bCBzdXBwb3J0c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXMoKSBjb25zdDsKKyAgICBib29sIHN1
cHBvcnRzRmxvYXQxNlRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0Zsb2F0MTZM
aW5lYXJGaWx0ZXIoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzRmxvYXQxNlJlbmRlcmFibGVU
ZXh0dXJlcygpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNMdW1pbmFuY2VUZXh0dXJlcygpIGNv
bnN0OwogICAgIGJvb2wgc3VwcG9ydHNMdW1pbmFuY2VBbHBoYVRleHR1cmVzKCkgY29uc3Q7CiAg
ICAgYm9vbCBzdXBwb3J0czMyYml0SW5kaWNlcygpIGNvbnN0OwpAQCAtNDc4LDcgKzUwMSwxMiBA
QCBjbGFzcyBDb250ZXh0CiAgICAgYm9vbCBjdWxsU2tpcHNEcmF3KEdMZW51bSBkcmF3TW9kZSk7
CiAgICAgYm9vbCBpc1RyaWFuZ2xlTW9kZShHTGVudW0gZHJhd01vZGUpOwogCisgICAgdm9pZCBp
bml0RXh0ZW5zaW9uU3RyaW5nKCk7CisgICAgdm9pZCBpbml0UmVuZGVyZXJTdHJpbmcoKTsKKwog
ICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25zdCBtQ29uZmlnOworICAgIGVnbDo6RGlzcGxheSAq
bURpc3BsYXk7CisgICAgSURpcmVjdDNERGV2aWNlOSAqbURldmljZTsKIAogICAgIFN0YXRlIG1T
dGF0ZTsKIApAQCAtNDkzLDggKzUyMSw4IEBAIGNsYXNzIENvbnRleHQKICAgICBGZW5jZU1hcCBt
RmVuY2VNYXA7CiAgICAgSGFuZGxlQWxsb2NhdG9yIG1GZW5jZUhhbmRsZUFsbG9jYXRvcjsKIAot
ICAgIHZvaWQgaW5pdEV4dGVuc2lvblN0cmluZygpOwogICAgIHN0ZDo6c3RyaW5nIG1FeHRlbnNp
b25TdHJpbmc7CisgICAgc3RkOjpzdHJpbmcgbVJlbmRlcmVyU3RyaW5nOwogCiAgICAgVmVydGV4
RGF0YU1hbmFnZXIgKm1WZXJ0ZXhEYXRhTWFuYWdlcjsKICAgICBJbmRleERhdGFNYW5hZ2VyICpt
SW5kZXhEYXRhTWFuYWdlcjsKQEAgLTUxMiw3ICs1NDAsMTIgQEAgY2xhc3MgQ29udGV4dAogICAg
IGJvb2wgbU91dE9mTWVtb3J5OwogICAgIGJvb2wgbUludmFsaWRGcmFtZWJ1ZmZlck9wZXJhdGlv
bjsKIAorICAgIC8vIEN1cnJlbnQvbG9zdCBjb250ZXh0IGZsYWdzCiAgICAgYm9vbCBtSGFzQmVl
bkN1cnJlbnQ7CisgICAgYm9vbCBtQ29udGV4dExvc3Q7CisgICAgR0xlbnVtIG1SZXNldFN0YXR1
czsKKyAgICBHTGVudW0gbVJlc2V0U3RyYXRlZ3k7CisgICAgYm9vbCBtUm9idXN0QWNjZXNzOwog
CiAgICAgdW5zaWduZWQgaW50IG1BcHBsaWVkVGV4dHVyZVNlcmlhbFBTW01BWF9URVhUVVJFX0lN
QUdFX1VOSVRTXTsKICAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRUZXh0dXJlU2VyaWFsVlNbTUFY
X1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTX1ZURl07CkBAIC01MjAsNyArNTUzLDE1IEBAIGNs
YXNzIENvbnRleHQKICAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRSZW5kZXJUYXJnZXRTZXJpYWw7
CiAgICAgdW5zaWduZWQgaW50IG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWw7CiAgICAgdW5zaWdu
ZWQgaW50IG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbDsKKyAgICB1bnNpZ25lZCBpbnQgbUFw
cGxpZWRJQlNlcmlhbDsKICAgICBib29sIG1EZXB0aFN0ZW5jaWxJbml0aWFsaXplZDsKKyAgICBi
b29sIG1WaWV3cG9ydEluaXRpYWxpemVkOworICAgIEQzRFZJRVdQT1JUOSBtU2V0Vmlld3BvcnQ7
CisgICAgYm9vbCBtUmVuZGVyVGFyZ2V0RGVzY0luaXRpYWxpemVkOworICAgIEQzRFNVUkZBQ0Vf
REVTQyBtUmVuZGVyVGFyZ2V0RGVzYzsKKyAgICBib29sIG1EeFVuaWZvcm1zRGlydHk7CisgICAg
UHJvZ3JhbSAqbUNhY2hlZEN1cnJlbnRQcm9ncmFtOworICAgIEZyYW1lYnVmZmVyICptQm91bmRE
cmF3RnJhbWVidWZmZXI7CiAKICAgICBib29sIG1TdXBwb3J0c1NoYWRlck1vZGVsMzsKICAgICBi
b29sIG1TdXBwb3J0c1ZlcnRleFRleHR1cmU7CkBAIC01MzIsMTYgKzU3MywxOSBAQCBjbGFzcyBD
b250ZXh0CiAgICAgc3RkOjptYXA8RDNERk9STUFULCBib29sICo+IG1NdWx0aVNhbXBsZVN1cHBv
cnQ7CiAgICAgR0xzaXplaSBtTWF4U3VwcG9ydGVkU2FtcGxlczsKICAgICBib29sIG1TdXBwb3J0
c0V2ZW50UXVlcmllczsKLSAgICBib29sIG1TdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlczsKLSAg
ICBib29sIG1TdXBwb3J0c0Zsb2F0VGV4dHVyZXM7Ci0gICAgYm9vbCBtU3VwcG9ydHNGbG9hdExp
bmVhckZpbHRlcjsKLSAgICBib29sIG1TdXBwb3J0c0Zsb2F0UmVuZGVyYWJsZVRleHR1cmVzOwot
ICAgIGJvb2wgbVN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXM7Ci0gICAgYm9vbCBtU3VwcG9ydHNI
YWxmRmxvYXRMaW5lYXJGaWx0ZXI7Ci0gICAgYm9vbCBtU3VwcG9ydHNIYWxmRmxvYXRSZW5kZXJh
YmxlVGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNEWFQxVGV4dHVyZXM7CisgICAgYm9vbCBt
U3VwcG9ydHNEWFQzVGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNEWFQ1VGV4dHVyZXM7Cisg
ICAgYm9vbCBtU3VwcG9ydHNGbG9hdDMyVGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNGbG9h
dDMyTGluZWFyRmlsdGVyOworICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQzMlJlbmRlcmFibGVUZXh0
dXJlczsKKyAgICBib29sIG1TdXBwb3J0c0Zsb2F0MTZUZXh0dXJlczsKKyAgICBib29sIG1TdXBw
b3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXI7CisgICAgYm9vbCBtU3VwcG9ydHNGbG9hdDE2UmVuZGVy
YWJsZVRleHR1cmVzOwogICAgIGJvb2wgbVN1cHBvcnRzTHVtaW5hbmNlVGV4dHVyZXM7CiAgICAg
Ym9vbCBtU3VwcG9ydHNMdW1pbmFuY2VBbHBoYVRleHR1cmVzOwogICAgIGJvb2wgbVN1cHBvcnRz
MzJiaXRJbmRpY2VzOworICAgIGludCBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRzOwogCiAg
ICAgLy8gc3RhdGUgY2FjaGluZyBmbGFncwogICAgIGJvb2wgbUNsZWFyU3RhdGVEaXJ0eTsKQEAg
LTU3MCwxMiArNjE0LDEyIEBAIGNsYXNzIENvbnRleHQKIGV4dGVybiAiQyIKIHsKIC8vIEV4cG9y
dGVkIGZ1bmN0aW9ucyBmb3IgdXNlIGJ5IEVHTAotZ2w6OkNvbnRleHQgKmdsQ3JlYXRlQ29udGV4
dChjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250
ZXh0KTsKK2dsOjpDb250ZXh0ICpnbENyZWF0ZUNvbnRleHQoY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZywgY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwgYm9vbCBub3RpZnlSZXNldHMs
IGJvb2wgcm9idXN0QWNjZXNzKTsKIHZvaWQgZ2xEZXN0cm95Q29udGV4dChnbDo6Q29udGV4dCAq
Y29udGV4dCk7CiB2b2lkIGdsTWFrZUN1cnJlbnQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIGVnbDo6
RGlzcGxheSAqZGlzcGxheSwgZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKIGdsOjpDb250ZXh0ICpn
bEdldEN1cnJlbnRDb250ZXh0KCk7CiBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50
ZXJUeXBlIF9fc3RkY2FsbCBnbEdldFByb2NBZGRyZXNzKGNvbnN0IGNoYXIgKnByb2NuYW1lKTsK
LXZvaWQgX19zdGRjYWxsIGdsQmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7Citi
b29sIF9fc3RkY2FsbCBnbEJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwogfQog
CiAjZW5kaWYgICAvLyBJTkNMVURFX0NPTlRFWFRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmVuY2UuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5jcHAKaW5kZXggN2ZiY2I2YWQzNGRiZjE0Mzc3M2Zm
MTE1ZDE3ZmY3MmM5MmRiMmFjNy4uOTZhM2NjOWY1OGJmYzFlZGNhNzVjMGM4ZjMxYzNlMjFkNGJk
MmYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9G
ZW5jZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5j
ZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgR0xib29sZWFuIEZlbmNlOjp0ZXN0RmVuY2UoKQogCiAg
ICAgSFJFU1VMVCByZXN1bHQgPSBtUXVlcnktPkdldERhdGEoTlVMTCwgMCwgRDNER0VUREFUQV9G
TFVTSCk7CiAKLSAgICBpZiAocmVzdWx0ID09IEQzREVSUl9ERVZJQ0VMT1NUKQorICAgIGlmIChj
aGVja0RldmljZUxvc3QocmVzdWx0KSkKICAgICB7CiAgICAgICAgcmV0dXJuIGVycm9yKEdMX09V
VF9PRl9NRU1PUlksIEdMX1RSVUUpOwogICAgIH0KQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIEZl
bmNlOjpnZXRGZW5jZWl2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKICAgICAgICAgICAg
IAogICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtUXVlcnktPkdldERhdGEoTlVMTCwgMCwg
MCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX0RFVklD
RUxPU1QpCisgICAgICAgICAgICBpZiAoY2hlY2tEZXZpY2VMb3N0KHJlc3VsdCkpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gR0xfVFJVRTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuY3BwCmluZGV4IDBmN2Vj
MjBmODgwMTJiOTZiMmIzMWNjYzVkZmFiZDIxZTIyZmU1YTcuLjAwZjdmOThjZWEzNTliZTY4MDA5
MzBlNjdhZmJiZmQ5OTM1YjJiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuY3BwCkBAIC01OCwxOSArNTgsMTkgQEAgUmVu
ZGVyYnVmZmVyICpGcmFtZWJ1ZmZlcjo6bG9va3VwUmVuZGVyYnVmZmVyKEdMZW51bSB0eXBlLCBH
THVpbnQgaGFuZGxlKSBjb25zdAogCiB2b2lkIEZyYW1lYnVmZmVyOjpzZXRDb2xvcmJ1ZmZlcihH
TGVudW0gdHlwZSwgR0x1aW50IGNvbG9yYnVmZmVyKQogewotICAgIG1Db2xvcmJ1ZmZlclR5cGUg
PSB0eXBlOworICAgIG1Db2xvcmJ1ZmZlclR5cGUgPSAoY29sb3JidWZmZXIgIT0gMCkgPyB0eXBl
IDogR0xfTk9ORTsKICAgICBtQ29sb3JidWZmZXJQb2ludGVyLnNldChsb29rdXBSZW5kZXJidWZm
ZXIodHlwZSwgY29sb3JidWZmZXIpKTsKIH0KIAogdm9pZCBGcmFtZWJ1ZmZlcjo6c2V0RGVwdGhi
dWZmZXIoR0xlbnVtIHR5cGUsIEdMdWludCBkZXB0aGJ1ZmZlcikKIHsKLSAgICBtRGVwdGhidWZm
ZXJUeXBlID0gdHlwZTsKKyAgICBtRGVwdGhidWZmZXJUeXBlID0gKGRlcHRoYnVmZmVyICE9IDAp
ID8gdHlwZSA6IEdMX05PTkU7CiAgICAgbURlcHRoYnVmZmVyUG9pbnRlci5zZXQobG9va3VwUmVu
ZGVyYnVmZmVyKHR5cGUsIGRlcHRoYnVmZmVyKSk7CiB9CiAKIHZvaWQgRnJhbWVidWZmZXI6OnNl
dFN0ZW5jaWxidWZmZXIoR0xlbnVtIHR5cGUsIEdMdWludCBzdGVuY2lsYnVmZmVyKQogewotICAg
IG1TdGVuY2lsYnVmZmVyVHlwZSA9IHR5cGU7CisgICAgbVN0ZW5jaWxidWZmZXJUeXBlID0gKHN0
ZW5jaWxidWZmZXIgIT0gMCkgPyB0eXBlIDogR0xfTk9ORTsKICAgICBtU3RlbmNpbGJ1ZmZlclBv
aW50ZXIuc2V0KGxvb2t1cFJlbmRlcmJ1ZmZlcih0eXBlLCBzdGVuY2lsYnVmZmVyKSk7CiB9CiAK
QEAgLTE4MSw0NiArMTgxLDE5IEBAIHVuc2lnbmVkIGludCBGcmFtZWJ1ZmZlcjo6Z2V0U3RlbmNp
bGJ1ZmZlclNlcmlhbCgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLUNvbG9yYnVmZmVyICpGcmFtZWJ1
ZmZlcjo6Z2V0Q29sb3JidWZmZXIoKQorUmVuZGVyYnVmZmVyICpGcmFtZWJ1ZmZlcjo6Z2V0Q29s
b3JidWZmZXIoKQogewotICAgIFJlbmRlcmJ1ZmZlciAqcmIgPSBtQ29sb3JidWZmZXJQb2ludGVy
LmdldCgpOwotCi0gICAgaWYgKHJiICE9IE5VTEwgJiYgcmItPmlzQ29sb3JidWZmZXIoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb2xvcmJ1ZmZlcio+KHJiLT5nZXRTdG9y
YWdlKCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAg
ICB9CisgICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclBvaW50ZXIuZ2V0KCk7CiB9CiAKLURlcHRoU3Rl
bmNpbGJ1ZmZlciAqRnJhbWVidWZmZXI6OmdldERlcHRoYnVmZmVyKCkKK1JlbmRlcmJ1ZmZlciAq
RnJhbWVidWZmZXI6OmdldERlcHRoYnVmZmVyKCkKIHsKLSAgICBSZW5kZXJidWZmZXIgKnJiID0g
bURlcHRoYnVmZmVyUG9pbnRlci5nZXQoKTsKLQotICAgIGlmIChyYiAhPSBOVUxMICYmIHJiLT5p
c0RlcHRoYnVmZmVyKCkpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVwdGhT
dGVuY2lsYnVmZmVyKj4ocmItPmdldFN0b3JhZ2UoKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7
Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICByZXR1cm4gbURlcHRoYnVmZmVyUG9p
bnRlci5nZXQoKTsKIH0KIAotRGVwdGhTdGVuY2lsYnVmZmVyICpGcmFtZWJ1ZmZlcjo6Z2V0U3Rl
bmNpbGJ1ZmZlcigpCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVy
KCkKIHsKLSAgICBSZW5kZXJidWZmZXIgKnJiID0gbVN0ZW5jaWxidWZmZXJQb2ludGVyLmdldCgp
OwotCi0gICAgaWYgKHJiICE9IE5VTEwgJiYgcmItPmlzU3RlbmNpbGJ1ZmZlcigpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERlcHRoU3RlbmNpbGJ1ZmZlcio+KHJiLT5nZXRT
dG9yYWdlKCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gTlVMTDsK
LSAgICB9CisgICAgcmV0dXJuIG1TdGVuY2lsYnVmZmVyUG9pbnRlci5nZXQoKTsKIH0KIAogR0xl
bnVtIEZyYW1lYnVmZmVyOjpnZXRDb2xvcmJ1ZmZlclR5cGUoKQpAQCAtMjU3LDcgKzIzMCw3IEBA
IGJvb2wgRnJhbWVidWZmZXI6Omhhc1N0ZW5jaWwoKQogewogICAgIGlmIChtU3RlbmNpbGJ1ZmZl
clR5cGUgIT0gR0xfTk9ORSkKICAgICB7Ci0gICAgICAgIERlcHRoU3RlbmNpbGJ1ZmZlciAqc3Rl
bmNpbGJ1ZmZlck9iamVjdCA9IGdldFN0ZW5jaWxidWZmZXIoKTsKKyAgICAgICAgUmVuZGVyYnVm
ZmVyICpzdGVuY2lsYnVmZmVyT2JqZWN0ID0gZ2V0U3RlbmNpbGJ1ZmZlcigpOwogCiAgICAgICAg
IGlmIChzdGVuY2lsYnVmZmVyT2JqZWN0KQogICAgICAgICB7CkBAIC0yNzYsNyArMjQ5LDcgQEAg
R0xlbnVtIEZyYW1lYnVmZmVyOjpjb21wbGV0ZW5lc3MoKQogCiAgICAgaWYgKG1Db2xvcmJ1ZmZl
clR5cGUgIT0gR0xfTk9ORSkKICAgICB7Ci0gICAgICAgIENvbG9yYnVmZmVyICpjb2xvcmJ1ZmZl
ciA9IGdldENvbG9yYnVmZmVyKCk7CisgICAgICAgIFJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIg
PSBnZXRDb2xvcmJ1ZmZlcigpOwogCiAgICAgICAgIGlmICghY29sb3JidWZmZXIpCiAgICAgICAg
IHsKQEAgLTMwMiw4ICsyNzUsOCBAQCBHTGVudW0gRnJhbWVidWZmZXI6OmNvbXBsZXRlbmVzcygp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoKGNvbG9yYnVmZmVyLT5nZXRUeXBlKCkgPT0g
R0xfRkxPQVQgJiYgIWdldENvbnRleHQoKS0+c3VwcG9ydHNGbG9hdFJlbmRlcmFibGVUZXh0dXJl
cygpKSB8fCAKLSAgICAgICAgICAgICAgICAoY29sb3JidWZmZXItPmdldFR5cGUoKSA9PSBHTF9I
QUxGX0ZMT0FUX09FUyAmJiAhZ2V0Q29udGV4dCgpLT5zdXBwb3J0c0hhbGZGbG9hdFJlbmRlcmFi
bGVUZXh0dXJlcygpKSkKKyAgICAgICAgICAgIGlmICgoZHgyZXM6OklzRmxvYXQzMkZvcm1hdChj
b2xvcmJ1ZmZlci0+Z2V0RDNERm9ybWF0KCkpICYmICFnZXRDb250ZXh0KCktPnN1cHBvcnRzRmxv
YXQzMlJlbmRlcmFibGVUZXh0dXJlcygpKSB8fCAKKyAgICAgICAgICAgICAgICAoZHgyZXM6Oklz
RmxvYXQxNkZvcm1hdChjb2xvcmJ1ZmZlci0+Z2V0RDNERm9ybWF0KCkpICYmICFnZXRDb250ZXh0
KCktPnN1cHBvcnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlcygpKSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CiAgICAg
ICAgICAgICB9CkBAIC0zMjQsOCArMjk3LDggQEAgR0xlbnVtIEZyYW1lYnVmZmVyOjpjb21wbGV0
ZW5lc3MoKQogICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5H
X0FUVEFDSE1FTlQ7CiAgICAgfQogCi0gICAgRGVwdGhTdGVuY2lsYnVmZmVyICpkZXB0aGJ1ZmZl
ciA9IE5VTEw7Ci0gICAgRGVwdGhTdGVuY2lsYnVmZmVyICpzdGVuY2lsYnVmZmVyID0gTlVMTDsK
KyAgICBSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyID0gTlVMTDsKKyAgICBSZW5kZXJidWZmZXIg
KnN0ZW5jaWxidWZmZXIgPSBOVUxMOwogCiAgICAgaWYgKG1EZXB0aGJ1ZmZlclR5cGUgIT0gR0xf
Tk9ORSkKICAgICB7CkBAIC00MTgsMTcgKzM5MSwxNyBAQCBHTGVudW0gRnJhbWVidWZmZXI6OmNv
bXBsZXRlbmVzcygpCiAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFOwogfQogCi1E
ZWZhdWx0RnJhbWVidWZmZXI6OkRlZmF1bHRGcmFtZWJ1ZmZlcihDb2xvcmJ1ZmZlciAqY29sb3Is
IERlcHRoU3RlbmNpbGJ1ZmZlciAqZGVwdGhTdGVuY2lsKQorRGVmYXVsdEZyYW1lYnVmZmVyOjpE
ZWZhdWx0RnJhbWVidWZmZXIoQ29sb3JidWZmZXIgKmNvbG9yYnVmZmVyLCBEZXB0aFN0ZW5jaWxi
dWZmZXIgKmRlcHRoU3RlbmNpbCkKIHsKLSAgICBtQ29sb3JidWZmZXJUeXBlID0gR0xfUkVOREVS
QlVGRkVSOwotICAgIG1EZXB0aGJ1ZmZlclR5cGUgPSAoZGVwdGhTdGVuY2lsLT5nZXREZXB0aFNp
emUoKSAhPSAwKSA/IEdMX1JFTkRFUkJVRkZFUiA6IEdMX05PTkU7Ci0gICAgbVN0ZW5jaWxidWZm
ZXJUeXBlID0gKGRlcHRoU3RlbmNpbC0+Z2V0U3RlbmNpbFNpemUoKSAhPSAwKSA/IEdMX1JFTkRF
UkJVRkZFUiA6IEdMX05PTkU7Ci0KLSAgICBtQ29sb3JidWZmZXJQb2ludGVyLnNldChuZXcgUmVu
ZGVyYnVmZmVyKDAsIGNvbG9yKSk7CisgICAgbUNvbG9yYnVmZmVyUG9pbnRlci5zZXQobmV3IFJl
bmRlcmJ1ZmZlcigwLCBjb2xvcmJ1ZmZlcikpOwogCiAgICAgUmVuZGVyYnVmZmVyICpkZXB0aFN0
ZW5jaWxSZW5kZXJidWZmZXIgPSBuZXcgUmVuZGVyYnVmZmVyKDAsIGRlcHRoU3RlbmNpbCk7CiAg
ICAgbURlcHRoYnVmZmVyUG9pbnRlci5zZXQoZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyKTsKICAg
ICBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuc2V0KGRlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcik7CisK
KyAgICBtQ29sb3JidWZmZXJUeXBlID0gR0xfUkVOREVSQlVGRkVSOworICAgIG1EZXB0aGJ1ZmZl
clR5cGUgPSAoZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyLT5nZXREZXB0aFNpemUoKSAhPSAwKSA/
IEdMX1JFTkRFUkJVRkZFUiA6IEdMX05PTkU7CisgICAgbVN0ZW5jaWxidWZmZXJUeXBlID0gKGRl
cHRoU3RlbmNpbFJlbmRlcmJ1ZmZlci0+Z2V0U3RlbmNpbFNpemUoKSAhPSAwKSA/IEdMX1JFTkRF
UkJVRkZFUiA6IEdMX05PTkU7CiB9CiAKIGludCBGcmFtZWJ1ZmZlcjo6Z2V0U2FtcGxlcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZyYW1lYnVm
ZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVy
LmgKaW5kZXggY2Y1MTY1OGRkNDc3ZDFmN2Q3OTQ2YzFjNzcwODk3YmI5MGIxM2NiZS4uODc0Y2Y5
NGNiNTAyMTA0OTg0ZGQxNmFlNTI1OTMzMzllNTNhYTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuaApAQCAtNDYsOSArNDYs
OSBAQCBjbGFzcyBGcmFtZWJ1ZmZlcgogICAgIHVuc2lnbmVkIGludCBnZXREZXB0aGJ1ZmZlclNl
cmlhbCgpOwogICAgIHVuc2lnbmVkIGludCBnZXRTdGVuY2lsYnVmZmVyU2VyaWFsKCk7CiAKLSAg
ICBDb2xvcmJ1ZmZlciAqZ2V0Q29sb3JidWZmZXIoKTsKLSAgICBEZXB0aFN0ZW5jaWxidWZmZXIg
KmdldERlcHRoYnVmZmVyKCk7Ci0gICAgRGVwdGhTdGVuY2lsYnVmZmVyICpnZXRTdGVuY2lsYnVm
ZmVyKCk7CisgICAgUmVuZGVyYnVmZmVyICpnZXRDb2xvcmJ1ZmZlcigpOworICAgIFJlbmRlcmJ1
ZmZlciAqZ2V0RGVwdGhidWZmZXIoKTsKKyAgICBSZW5kZXJidWZmZXIgKmdldFN0ZW5jaWxidWZm
ZXIoKTsKIAogICAgIEdMZW51bSBnZXRDb2xvcmJ1ZmZlclR5cGUoKTsKICAgICBHTGVudW0gZ2V0
RGVwdGhidWZmZXJUeXBlKCk7CkBAIC04Miw3ICs4Miw3IEBAIGNsYXNzIEZyYW1lYnVmZmVyCiBj
bGFzcyBEZWZhdWx0RnJhbWVidWZmZXIgOiBwdWJsaWMgRnJhbWVidWZmZXIKIHsKICAgcHVibGlj
OgotICAgIERlZmF1bHRGcmFtZWJ1ZmZlcihDb2xvcmJ1ZmZlciAqY29sb3IsIERlcHRoU3RlbmNp
bGJ1ZmZlciAqZGVwdGhTdGVuY2lsKTsKKyAgICBEZWZhdWx0RnJhbWVidWZmZXIoQ29sb3JidWZm
ZXIgKmNvbG9yYnVmZmVyLCBEZXB0aFN0ZW5jaWxidWZmZXIgKmRlcHRoU3RlbmNpbCk7CiAKICAg
ICB2aXJ0dWFsIEdMZW51bSBjb21wbGV0ZW5lc3MoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9JbmRleERhdGFNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSW5kZXhEYXRhTWFuYWdlci5jcHAKaW5k
ZXggNWI5MzliOGE5M2ZiY2RmYjQ3NTU5ODMzYWQyODRiYjY4YWRmYmQ2NS4uZGVlNDkwNjljOGEx
NjcxYWIwMGQ5OTRhOTMxMTdlMzFmZWMxYzNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9JbmRleERhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0luZGV4RGF0YU1hbmFnZXIuY3BwCkBAIC0y
Miw2ICsyMiw3IEBAIG5hbWVzcGFjZQogCiBuYW1lc3BhY2UgZ2wKIHsKK3Vuc2lnbmVkIGludCBJ
bmRleEJ1ZmZlcjo6bUN1cnJlbnRTZXJpYWwgPSAxOwogCiBJbmRleERhdGFNYW5hZ2VyOjpJbmRl
eERhdGFNYW5hZ2VyKENvbnRleHQgKmNvbnRleHQsIElEaXJlY3QzRERldmljZTkgKmRldmljZSkg
OiBtRGV2aWNlKGRldmljZSkKIHsKQEAgLTIwMCw2ICsyMDEsNyBAQCBHTGVudW0gSW5kZXhEYXRh
TWFuYWdlcjo6cHJlcGFyZUluZGV4RGF0YShHTGVudW0gdHlwZSwgR0xzaXplaSBjb3VudCwgQnVm
ZmVyICpidQogICAgIH0KIAogICAgIHRyYW5zbGF0ZWQtPmluZGV4QnVmZmVyID0gaW5kZXhCdWZm
ZXItPmdldEJ1ZmZlcigpOworICAgIHRyYW5zbGF0ZWQtPnNlcmlhbCA9IGluZGV4QnVmZmVyLT5n
ZXRTZXJpYWwoKTsKICAgICB0cmFuc2xhdGVkLT5zdGFydEluZGV4ID0gc3RyZWFtT2Zmc2V0IC8g
aW5kZXhTaXplKGZvcm1hdCk7CiAKICAgICBpZiAoYnVmZmVyKQpAQCAtMjMyLDYgKzIzNCw3IEBA
IEluZGV4QnVmZmVyOjpJbmRleEJ1ZmZlcihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIFVJTlQg
c2l6ZSwgRDNERk9STUFUIGZvcm1hdCkKICAgICB7CiAgICAgICAgIEQzRFBPT0wgcG9vbCA9IGdl
dERpc3BsYXkoKS0+Z2V0QnVmZmVyUG9vbChEM0RVU0FHRV9EWU5BTUlDIHwgRDNEVVNBR0VfV1JJ
VEVPTkxZKTsKICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUluZGV4QnVm
ZmVyKHNpemUsIEQzRFVTQUdFX0RZTkFNSUMgfCBEM0RVU0FHRV9XUklURU9OTFksIGZvcm1hdCwg
cG9vbCwgJm1JbmRleEJ1ZmZlciwgTlVMTCk7CisgICAgICAgIG1TZXJpYWwgPSBpc3N1ZVNlcmlh
bCgpOwogCiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewpAQCAtMjUzLDYg
KzI1NiwxNiBAQCBJRGlyZWN0M0RJbmRleEJ1ZmZlcjkgKkluZGV4QnVmZmVyOjpnZXRCdWZmZXIo
KSBjb25zdAogICAgIHJldHVybiBtSW5kZXhCdWZmZXI7CiB9CiAKK3Vuc2lnbmVkIGludCBJbmRl
eEJ1ZmZlcjo6Z2V0U2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNlcmlhbDsKK30KKwor
dW5zaWduZWQgaW50IEluZGV4QnVmZmVyOjppc3N1ZVNlcmlhbCgpCit7CisgICAgcmV0dXJuIG1D
dXJyZW50U2VyaWFsKys7Cit9CisKIHZvaWQgSW5kZXhCdWZmZXI6OnVubWFwKCkKIHsKICAgICBp
ZiAobUluZGV4QnVmZmVyKQpAQCAtMzA1LDYgKzMxOCw3IEBAIHZvaWQgU3RyZWFtaW5nSW5kZXhC
dWZmZXI6OnJlc2VydmVTcGFjZShVSU5UIHJlcXVpcmVkU3BhY2UsIEdMZW51bSB0eXBlKQogCiAg
ICAgICAgIEQzRFBPT0wgcG9vbCA9IGdldERpc3BsYXkoKS0+Z2V0QnVmZmVyUG9vbChEM0RVU0FH
RV9EWU5BTUlDIHwgRDNEVVNBR0VfV1JJVEVPTkxZKTsKICAgICAgICAgSFJFU1VMVCByZXN1bHQg
PSBtRGV2aWNlLT5DcmVhdGVJbmRleEJ1ZmZlcihtQnVmZmVyU2l6ZSwgRDNEVVNBR0VfRFlOQU1J
QyB8IEQzRFVTQUdFX1dSSVRFT05MWSwgdHlwZSA9PSBHTF9VTlNJR05FRF9JTlQgPyBEM0RGTVRf
SU5ERVgzMiA6IEQzREZNVF9JTkRFWDE2LCBwb29sLCAmbUluZGV4QnVmZmVyLCBOVUxMKTsKKyAg
ICAgICAgbVNlcmlhbCA9IGlzc3VlU2VyaWFsKCk7CiAgICAgCiAgICAgICAgIGlmIChGQUlMRUQo
cmVzdWx0KSkKICAgICAgICAgewpAQCAtMzU4LDYgKzM3Miw3IEBAIHZvaWQgU3RhdGljSW5kZXhC
dWZmZXI6OnJlc2VydmVTcGFjZShVSU5UIHJlcXVpcmVkU3BhY2UsIEdMZW51bSB0eXBlKQogICAg
IHsKICAgICAgICAgRDNEUE9PTCBwb29sID0gZ2V0RGlzcGxheSgpLT5nZXRCdWZmZXJQb29sKEQz
RFVTQUdFX1dSSVRFT05MWSk7CiAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3Jl
YXRlSW5kZXhCdWZmZXIocmVxdWlyZWRTcGFjZSwgRDNEVVNBR0VfV1JJVEVPTkxZLCB0eXBlID09
IEdMX1VOU0lHTkVEX0lOVCA/IEQzREZNVF9JTkRFWDMyIDogRDNERk1UX0lOREVYMTYsIHBvb2ws
ICZtSW5kZXhCdWZmZXIsIE5VTEwpOworICAgICAgICBtU2VyaWFsID0gaXNzdWVTZXJpYWwoKTsK
ICAgICAKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7CkBAIC0zODEsMjQg
KzM5NiwyNSBAQCBib29sIFN0YXRpY0luZGV4QnVmZmVyOjpsb29rdXBUeXBlKEdMZW51bSB0eXBl
KQogCiBVSU5UIFN0YXRpY0luZGV4QnVmZmVyOjpsb29rdXBSYW5nZShpbnRwdHJfdCBvZmZzZXQs
IEdMc2l6ZWkgY291bnQsIFVJTlQgKm1pbkluZGV4LCBVSU5UICptYXhJbmRleCkKIHsKLSAgICBm
b3IgKHVuc2lnbmVkIGludCByYW5nZSA9IDA7IHJhbmdlIDwgbUNhY2hlLnNpemUoKTsgcmFuZ2Ur
KykKLSAgICB7Ci0gICAgICAgIGlmIChtQ2FjaGVbcmFuZ2VdLm9mZnNldCA9PSBvZmZzZXQgJiYg
bUNhY2hlW3JhbmdlXS5jb3VudCA9PSBjb3VudCkKLSAgICAgICAgewotICAgICAgICAgICAgKm1p
bkluZGV4ID0gbUNhY2hlW3JhbmdlXS5taW5JbmRleDsKLSAgICAgICAgICAgICptYXhJbmRleCA9
IG1DYWNoZVtyYW5nZV0ubWF4SW5kZXg7CisgICAgSW5kZXhSYW5nZSByYW5nZSA9IHtvZmZzZXQs
IGNvdW50fTsKIAotICAgICAgICAgICAgcmV0dXJuIG1DYWNoZVtyYW5nZV0uc3RyZWFtT2Zmc2V0
OwotICAgICAgICB9CisgICAgc3RkOjptYXA8SW5kZXhSYW5nZSwgSW5kZXhSZXN1bHQ+OjppdGVy
YXRvciByZXMgPSBtQ2FjaGUuZmluZChyYW5nZSk7CisgICAgCisgICAgaWYgKHJlcyA9PSBtQ2Fj
aGUuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmV0dXJu
IC0xOworICAgICptaW5JbmRleCA9IHJlcy0+c2Vjb25kLm1pbkluZGV4OworICAgICptYXhJbmRl
eCA9IHJlcy0+c2Vjb25kLm1heEluZGV4OworICAgIHJldHVybiByZXMtPnNlY29uZC5zdHJlYW1P
ZmZzZXQ7CiB9CiAKIHZvaWQgU3RhdGljSW5kZXhCdWZmZXI6OmFkZFJhbmdlKGludHB0cl90IG9m
ZnNldCwgR0xzaXplaSBjb3VudCwgVUlOVCBtaW5JbmRleCwgVUlOVCBtYXhJbmRleCwgVUlOVCBz
dHJlYW1PZmZzZXQpCiB7Ci0gICAgSW5kZXhSYW5nZSBpbmRleFJhbmdlID0ge29mZnNldCwgY291
bnQsIG1pbkluZGV4LCBtYXhJbmRleCwgc3RyZWFtT2Zmc2V0fTsKLSAgICBtQ2FjaGUucHVzaF9i
YWNrKGluZGV4UmFuZ2UpOworICAgIEluZGV4UmFuZ2UgaW5kZXhSYW5nZSA9IHtvZmZzZXQsIGNv
dW50fTsKKyAgICBJbmRleFJlc3VsdCBpbmRleFJlc3VsdCA9IHttaW5JbmRleCwgbWF4SW5kZXgs
IHN0cmVhbU9mZnNldH07CisgICAgbUNhY2hlW2luZGV4UmFuZ2VdID0gaW5kZXhSZXN1bHQ7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
SW5kZXhEYXRhTWFuYWdlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9JbmRleERhdGFNYW5hZ2VyLmgKaW5kZXggODE0ZjQxMDQwOWE1MDNjNWM2NzU0YzMzMmU5M2Rh
ZTNmZGQ4ZTlmMS4uMDRkYjRiZTYyNTkzMjMzZGYwNDg1MjY1MzY1M2YyYTBkNDE3OWUwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9JbmRleERhdGFN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9JbmRl
eERhdGFNYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAgc3RydWN0IFRyYW5zbGF0ZWRJbmRleERh
dGEKICAgICBVSU5UIHN0YXJ0SW5kZXg7CiAKICAgICBJRGlyZWN0M0RJbmRleEJ1ZmZlcjkgKmlu
ZGV4QnVmZmVyOworICAgIHVuc2lnbmVkIGludCBzZXJpYWw7CiB9OwogCiBjbGFzcyBJbmRleEJ1
ZmZlcgpAQCAtNDIsNiArNDMsNyBAQCBjbGFzcyBJbmRleEJ1ZmZlcgogICAgIHZpcnR1YWwgdm9p
ZCByZXNlcnZlU3BhY2UoVUlOVCByZXF1aXJlZFNwYWNlLCBHTGVudW0gdHlwZSkgPSAwOwogCiAg
ICAgSURpcmVjdDNESW5kZXhCdWZmZXI5ICpnZXRCdWZmZXIoKSBjb25zdDsKKyAgICB1bnNpZ25l
ZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CiAKICAgcHJvdGVjdGVkOgogICAgIElEaXJlY3QzRERl
dmljZTkgKmNvbnN0IG1EZXZpY2U7CkBAIC00OSw2ICs1MSwxMCBAQCBjbGFzcyBJbmRleEJ1ZmZl
cgogICAgIElEaXJlY3QzREluZGV4QnVmZmVyOSAqbUluZGV4QnVmZmVyOwogICAgIFVJTlQgbUJ1
ZmZlclNpemU7CiAKKyAgICB1bnNpZ25lZCBpbnQgbVNlcmlhbDsKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaW50IGlzc3VlU2VyaWFsKCk7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBtQ3VycmVudFNl
cmlhbDsKKwogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihJbmRleEJ1
ZmZlcik7CiB9OwpAQCAtODcsMTIgKzkzLDI4IEBAIGNsYXNzIFN0YXRpY0luZGV4QnVmZmVyIDog
cHVibGljIEluZGV4QnVmZmVyCiAgICAgICAgIGludHB0cl90IG9mZnNldDsKICAgICAgICAgR0xz
aXplaSBjb3VudDsKIAorICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBJbmRleFJhbmdlJiBy
aHMpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgIT0gcmhzLm9mZnNl
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0IDwgcmhzLm9m
ZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb3VudCAhPSByaHMuY291bnQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50IDwgcmhzLmNvdW50
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIHN0cnVjdCBJbmRleFJlc3VsdAorICAgIHsKICAgICAgICAgVUlOVCBtaW5J
bmRleDsKICAgICAgICAgVUlOVCBtYXhJbmRleDsKICAgICAgICAgVUlOVCBzdHJlYW1PZmZzZXQ7
CiAgICAgfTsKIAotICAgIHN0ZDo6dmVjdG9yPEluZGV4UmFuZ2U+IG1DYWNoZTsKKyAgICBzdGQ6
Om1hcDxJbmRleFJhbmdlLCBJbmRleFJlc3VsdD4gbUNhY2hlOwogfTsKIAogY2xhc3MgSW5kZXhE
YXRhTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9Qcm9ncmFtLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
UHJvZ3JhbS5jcHAKaW5kZXggMGEyNWJjMmFmNTI3MGRjNDllNjEyYmMwZTM4OTYxZWM5Y2NkYmFj
Zi4uOTg2NTkzZjlmOGQzNWY1MTY4YzFmNTk1NDliZWIxYzgzMGU2NzY2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW0uY3BwCkBAIC0yNCw2
ICsyNCw3IEBACiBuYW1lc3BhY2UgZ2wKIHsKIHVuc2lnbmVkIGludCBQcm9ncmFtOjptQ3VycmVu
dFNlcmlhbCA9IDE7Citjb25zdCBjaGFyICpmYWtlcGF0aCA9ICJDOlxcZmFrZXBhdGgiOwogCiBz
dGQ6OnN0cmluZyBzdHIoaW50IGkpCiB7CkBAIC0zMiwxMyArMzMsMTMgQEAgc3RkOjpzdHJpbmcg
c3RyKGludCBpKQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVVuaWZvcm06OlVuaWZvcm0oR0xl
bnVtIHR5cGUsIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXpl
KSA6IHR5cGUodHlwZSksIG5hbWUobmFtZSksIGFycmF5U2l6ZShhcnJheVNpemUpCitVbmlmb3Jt
OjpVbmlmb3JtKEdMZW51bSB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyAmX25hbWUsIHVuc2lnbmVk
IGludCBhcnJheVNpemUpCisgICAgOiB0eXBlKHR5cGUpLCBfbmFtZShfbmFtZSksIG5hbWUoUHJv
Z3JhbTo6dW5kZWNvcmF0ZVVuaWZvcm0oX25hbWUpKSwgYXJyYXlTaXplKGFycmF5U2l6ZSkKIHsK
LSAgICBpbnQgYnl0ZXMgPSBVbmlmb3JtVHlwZVNpemUodHlwZSkgKiBhcnJheVNpemU7CisgICAg
aW50IGJ5dGVzID0gVW5pZm9ybUludGVybmFsU2l6ZSh0eXBlKSAqIGFycmF5U2l6ZTsKICAgICBk
YXRhID0gbmV3IHVuc2lnbmVkIGNoYXJbYnl0ZXNdOwogICAgIG1lbXNldChkYXRhLCAwLCBieXRl
cyk7CiAgICAgZGlydHkgPSB0cnVlOwotICAgIGhhbmRsZXNTZXQgPSBmYWxzZTsKIH0KIAogVW5p
Zm9ybTo6flVuaWZvcm0oKQpAQCAtNDYsMTMgKzQ3LDE5IEBAIFVuaWZvcm06On5Vbmlmb3JtKCkK
ICAgICBkZWxldGVbXSBkYXRhOwogfQogCi1Vbmlmb3JtTG9jYXRpb246OlVuaWZvcm1Mb2NhdGlv
bihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGVsZW1lbnQsIHVuc2lnbmVk
IGludCBpbmRleCkgCi0gICAgOiBuYW1lKG5hbWUpLCBlbGVtZW50KGVsZW1lbnQpLCBpbmRleChp
bmRleCkKK2Jvb2wgVW5pZm9ybTo6aXNBcnJheSgpCit7CisgICAgcmV0dXJuIF9uYW1lLmNvbXBh
cmUoMCwgMywgImFyXyIpID09IDA7Cit9CisKK1VuaWZvcm1Mb2NhdGlvbjo6VW5pZm9ybUxvY2F0
aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZfbmFtZSwgdW5zaWduZWQgaW50IGVsZW1lbnQsIHVuc2ln
bmVkIGludCBpbmRleCkgCisgICAgOiBuYW1lKFByb2dyYW06OnVuZGVjb3JhdGVVbmlmb3JtKF9u
YW1lKSksIGVsZW1lbnQoZWxlbWVudCksIGluZGV4KGluZGV4KQogewogfQogCiBQcm9ncmFtOjpQ
cm9ncmFtKFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSkgOiBtUmVzb3Vy
Y2VNYW5hZ2VyKG1hbmFnZXIpLCBtSGFuZGxlKGhhbmRsZSksIG1TZXJpYWwoaXNzdWVTZXJpYWwo
KSkKIHsKKyAgICBtRGV2aWNlID0gZ2V0RGV2aWNlKCk7CiAgICAgbUZyYWdtZW50U2hhZGVyID0g
TlVMTDsKICAgICBtVmVydGV4U2hhZGVyID0gTlVMTDsKIApAQCAtMTM3LDggKzE0NCw2IEBAIGJv
b2wgUHJvZ3JhbTo6ZGV0YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKQogICAgIH0KICAgICBlbHNl
IFVOUkVBQ0hBQkxFKCk7CiAKLSAgICB1bmxpbmsoKTsKLQogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0xOTMsMTEgKzE5OCwyNiBAQCBpbnQgUHJvZ3JhbTo6Z2V0U2VtYW50aWNJbmRleChpbnQg
YXR0cmlidXRlSW5kZXgpCiAgICAgcmV0dXJuIG1TZW1hbnRpY0luZGV4W2F0dHJpYnV0ZUluZGV4
XTsKIH0KIAorLy8gUmV0dXJucyBvbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IHNhbXBsZXIgaW5k
ZXggdXNlZC4KK0dMaW50IFByb2dyYW06OmdldFVzZWRTYW1wbGVyUmFuZ2UoU2FtcGxlclR5cGUg
dHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSBTQU1QTEVSX1BJ
WEVMOgorICAgICAgICByZXR1cm4gbVVzZWRQaXhlbFNhbXBsZXJSYW5nZTsKKyAgICAgIGNhc2Ug
U0FNUExFUl9WRVJURVg6CisgICAgICAgIHJldHVybiBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZTsK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KK30KKwogLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHRleHR1cmUgaW1hZ2Ug
dW5pdCAoMC0xOSkgY29ycmVzcG9uZGluZyB0byBhIERpcmVjdDNEIDkgc2FtcGxlcgogLy8gaW5k
ZXggKDAtMTUgZm9yIHRoZSBwaXhlbCBzaGFkZXIgYW5kIDAtMyBmb3IgdGhlIHZlcnRleCBzaGFk
ZXIpLgogR0xpbnQgUHJvZ3JhbTo6Z2V0U2FtcGxlck1hcHBpbmcoU2FtcGxlclR5cGUgdHlwZSwg
dW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCkKIHsKLSAgICBHTHVpbnQgbG9naWNhbFRleHR1cmVV
bml0ID0gLTE7CisgICAgR0xpbnQgbG9naWNhbFRleHR1cmVVbml0ID0gLTE7CiAKICAgICBzd2l0
Y2ggKHR5cGUpCiAgICAgewpAQCAtMjIwLDcgKzI0MCw3IEBAIEdMaW50IFByb2dyYW06OmdldFNh
bXBsZXJNYXBwaW5nKFNhbXBsZXJUeXBlIHR5cGUsIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgp
CiAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwogICAgIH0KIAotICAgIGlmIChsb2dpY2Fs
VGV4dHVyZVVuaXQgPj0gMCAmJiBsb2dpY2FsVGV4dHVyZVVuaXQgPCBnZXRDb250ZXh0KCktPmdl
dE1heGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkpCisgICAgaWYgKGxvZ2ljYWxUZXh0
dXJlVW5pdCA+PSAwICYmIGxvZ2ljYWxUZXh0dXJlVW5pdCA8IChHTGludClnZXRDb250ZXh0KCkt
PmdldE1heGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbG9naWNhbFRleHR1cmVVbml0OwogICAgIH0KQEAgLTI0OCwyNCArMjY4LDIzIEBAIFRl
eHR1cmVUeXBlIFByb2dyYW06OmdldFNhbXBsZXJUZXh0dXJlVHlwZShTYW1wbGVyVHlwZSB0eXBl
LCB1bnNpZ25lZCBpbnQgc2FtcGxlCiAgICAgcmV0dXJuIFRFWFRVUkVfMkQ7CiB9CiAKLUdMaW50
IFByb2dyYW06OmdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBjaGFyICpuYW1lLCBib29sIGRlY29y
YXRlZCkKK0dMaW50IFByb2dyYW06OmdldFVuaWZvcm1Mb2NhdGlvbihzdGQ6OnN0cmluZyBuYW1l
KQogewotICAgIHN0ZDo6c3RyaW5nIF9uYW1lID0gZGVjb3JhdGVkID8gbmFtZSA6IGRlY29yYXRl
KG5hbWUpOwogICAgIGludCBzdWJzY3JpcHQgPSAwOwogCiAgICAgLy8gU3RyaXAgYW55IHRyYWls
aW5nIGFycmF5IG9wZXJhdG9yIGFuZCByZXRyaWV2ZSB0aGUgc3Vic2NyaXB0Ci0gICAgc2l6ZV90
IG9wZW4gPSBfbmFtZS5maW5kX2xhc3Rfb2YoJ1snKTsKLSAgICBzaXplX3QgY2xvc2UgPSBfbmFt
ZS5maW5kX2xhc3Rfb2YoJ10nKTsKLSAgICBpZiAob3BlbiAhPSBzdGQ6OnN0cmluZzo6bnBvcyAm
JiBjbG9zZSA9PSBfbmFtZS5sZW5ndGgoKSAtIDEpCisgICAgc2l6ZV90IG9wZW4gPSBuYW1lLmZp
bmRfbGFzdF9vZignWycpOworICAgIHNpemVfdCBjbG9zZSA9IG5hbWUuZmluZF9sYXN0X29mKCdd
Jyk7CisgICAgaWYgKG9wZW4gIT0gc3RkOjpzdHJpbmc6Om5wb3MgJiYgY2xvc2UgPT0gbmFtZS5s
ZW5ndGgoKSAtIDEpCiAgICAgewotICAgICAgICBzdWJzY3JpcHQgPSBhdG9pKF9uYW1lLnN1YnN0
cihvcGVuICsgMSkuY19zdHIoKSk7Ci0gICAgICAgIF9uYW1lLmVyYXNlKG9wZW4pOworICAgICAg
ICBzdWJzY3JpcHQgPSBhdG9pKG5hbWUuc3Vic3RyKG9wZW4gKyAxKS5jX3N0cigpKTsKKyAgICAg
ICAgbmFtZS5lcmFzZShvcGVuKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBpbnQgbnVtVW5pZm9y
bXMgPSBtVW5pZm9ybUluZGV4LnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBsb2NhdGlv
biA9IDA7IGxvY2F0aW9uIDwgbnVtVW5pZm9ybXM7IGxvY2F0aW9uKyspCiAgICAgewotICAgICAg
ICBpZiAobVVuaWZvcm1JbmRleFtsb2NhdGlvbl0ubmFtZSA9PSBfbmFtZSAmJgorICAgICAgICBp
ZiAobVVuaWZvcm1JbmRleFtsb2NhdGlvbl0ubmFtZSA9PSBuYW1lICYmCiAgICAgICAgICAgICBt
VW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ID09IHN1YnNjcmlwdCkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uOwpAQCAtMjk0LDggKzMxMywxNyBAQCBib29sIFBy
b2dyYW06OnNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQqIHYpCiAKICAgICAgICAgY291bnQgPSBzdGQ6Om1pbihhcnJheVNpemUgLSAoaW50
KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKIAotICAgICAgICBtZW1j
cHkodGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQg
KiBzaXplb2YoR0xmbG9hdCksCi0gICAgICAgICAgICAgICB2LCBzaXplb2YoR0xmbG9hdCkgKiBj
b3VudCk7CisgICAgICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3Jt
LT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICB0
YXJnZXRbMF0gPSB2WzBdOworICAgICAgICAgICAgdGFyZ2V0WzFdID0gMDsKKyAgICAgICAgICAg
IHRhcmdldFsyXSA9IDA7CisgICAgICAgICAgICB0YXJnZXRbM10gPSAwOworICAgICAgICAgICAg
dGFyZ2V0ICs9IDQ7CisgICAgICAgICAgICB2ICs9IDE7CisgICAgICAgIH0KICAgICB9CiAgICAg
ZWxzZSBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9CT09MKQogICAgIHsKQEAgLTM1MSw4
ICszNzksMTcgQEAgYm9vbCBQcm9ncmFtOjpzZXRVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQogCiAgICAgICAgIGNvdW50ID0gc3RkOjpt
aW4oYXJyYXlTaXplIC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3Vu
dCk7CiAKLSAgICAgICAgbWVtY3B5KHRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4
W2xvY2F0aW9uXS5lbGVtZW50ICogc2l6ZW9mKEdMZmxvYXQpICogMiwKLSAgICAgICAgICAgICAg
IHYsIDIgKiBzaXplb2YoR0xmbG9hdCkgKiBjb3VudCk7CisgICAgICAgIEdMZmxvYXQgKnRhcmdl
dCA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlv
bl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KQorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXRbMF0gPSB2WzBdOworICAgICAgICAgICAg
dGFyZ2V0WzFdID0gdlsxXTsKKyAgICAgICAgICAgIHRhcmdldFsyXSA9IDA7CisgICAgICAgICAg
ICB0YXJnZXRbM10gPSAwOworICAgICAgICAgICAgdGFyZ2V0ICs9IDQ7CisgICAgICAgICAgICB2
ICs9IDI7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAodGFyZ2V0VW5pZm9ybS0+dHlw
ZSA9PSBHTF9CT09MX1ZFQzIpCiAgICAgewpAQCAtNDA5LDggKzQ0NiwxNyBAQCBib29sIFByb2dy
YW06OnNldFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnYpCiAKICAgICAgICAgY291bnQgPSBzdGQ6Om1pbihhcnJheVNpemUgLSAoaW50KW1V
bmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKIAotICAgICAgICBtZW1jcHko
dGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiBz
aXplb2YoR0xmbG9hdCkgKiAzLAotICAgICAgICAgICAgICAgdiwgMyAqIHNpemVvZihHTGZsb2F0
KSAqIGNvdW50KTsKKyAgICAgICAgR0xmbG9hdCAqdGFyZ2V0ID0gKEdMZmxvYXQqKXRhcmdldFVu
aWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHRhcmdldFswXSA9IHZbMF07CisgICAgICAgICAgICB0YXJnZXRbMV0gPSB2WzFdOworICAg
ICAgICAgICAgdGFyZ2V0WzJdID0gdlsyXTsKKyAgICAgICAgICAgIHRhcmdldFszXSA9IDA7Cisg
ICAgICAgICAgICB0YXJnZXQgKz0gNDsKKyAgICAgICAgICAgIHYgKz0gMzsKKyAgICAgICAgfQog
ICAgIH0KICAgICBlbHNlIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0xfVkVDMykK
ICAgICB7CkBAIC01MDQsNiArNTUwLDM3IEBAIGJvb2wgUHJvZ3JhbTo6c2V0VW5pZm9ybTRmdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgaW50IHRhcmdldFdpZHRoLCBpbnQg
dGFyZ2V0SGVpZ2h0LCBpbnQgc3JjV2lkdGgsIGludCBzcmNIZWlnaHQ+Cit2b2lkIHRyYW5zcG9z
ZU1hdHJpeChUICp0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIGludCBjb3B5
V2lkdGggPSBzdGQ6Om1pbih0YXJnZXRXaWR0aCwgc3JjV2lkdGgpOworICAgIGludCBjb3B5SGVp
Z2h0ID0gc3RkOjptaW4odGFyZ2V0SGVpZ2h0LCBzcmNIZWlnaHQpOworCisgICAgZm9yIChpbnQg
eCA9IDA7IHggPCBjb3B5V2lkdGg7IHgrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IHkgPSAw
OyB5IDwgY29weUhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXRbeCAq
IHRhcmdldFdpZHRoICsgeV0gPSAoVCl2YWx1ZVt5ICogc3JjV2lkdGggKyB4XTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAvLyBjbGVhciB1bmZpbGxlZCByaWdodCBzaWRlCisgICAgZm9yIChpbnQg
eSA9IDA7IHkgPCBjb3B5SGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBmb3IgKGludCB4ID0g
c3JjV2lkdGg7IHggPCB0YXJnZXRXaWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICB0
YXJnZXRbeSAqIHRhcmdldFdpZHRoICsgeF0gPSAoVCkwOworICAgICAgICB9CisgICAgfQorICAg
IC8vIGNsZWFyIHVuZmlsbGVkIGJvdHRvbS4KKyAgICBmb3IgKGludCB5ID0gc3JjSGVpZ2h0OyB5
IDwgdGFyZ2V0SGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IHRhcmdldFdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldFt5ICogdGFy
Z2V0V2lkdGggKyB4XSA9IChUKTA7CisgICAgICAgIH0KKyAgICB9Cit9CisKIGJvb2wgUHJvZ3Jh
bTo6c2V0VW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+
PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQpAQCAtNTI2LDggKzYwMywxMyBAQCBib29sIFBy
b2dyYW06OnNldFVuaWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMZmxvYXQgKgogCiAgICAgY291bnQgPSBzdGQ6Om1pbihhcnJheVNpemUgLSAoaW50
KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKIAotICAgIG1lbWNweSh0
YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIHNp
emVvZihHTGZsb2F0KSAqIDQsCi0gICAgICAgICAgIHZhbHVlLCA0ICogc2l6ZW9mKEdMZmxvYXQp
ICogY291bnQpOworICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3Jt
LT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDg7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgdHJhbnNwb3NlTWF0cml4
PEdMZmxvYXQsNCwyLDIsMj4odGFyZ2V0LCB2YWx1ZSk7CisgICAgICAgIHRhcmdldCArPSA4Owor
ICAgICAgICB2YWx1ZSArPSA0OworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNTU0
LDEyICs2MzYsMTggQEAgYm9vbCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICoKIAogICAgIGNvdW50ID0gc3Rk
OjptaW4oYXJyYXlTaXplIC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBj
b3VudCk7CiAKLSAgICBtZW1jcHkodGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhb
bG9jYXRpb25dLmVsZW1lbnQgKiBzaXplb2YoR0xmbG9hdCkgKiA5LAotICAgICAgICAgICB2YWx1
ZSwgOSAqIHNpemVvZihHTGZsb2F0KSAqIGNvdW50KTsKKyAgICBHTGZsb2F0ICp0YXJnZXQgPSAo
R0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVs
ZW1lbnQgKiAxMjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgewor
ICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xmbG9hdCw0LDMsMywzPih0YXJnZXQsIHZhbHVlKTsK
KyAgICAgICAgdGFyZ2V0ICs9IDEyOworICAgICAgICB2YWx1ZSArPSA5OworICAgIH0KIAogICAg
IHJldHVybiB0cnVlOwogfQogCisKIGJvb2wgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDRmdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAg
ICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6
ZSgpKQpAQCAtNTgyLDggKzY3MCwxMyBAQCBib29sIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXg0
ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKgogCiAgICAg
Y291bnQgPSBzdGQ6Om1pbihhcnJheVNpemUgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25d
LmVsZW1lbnQsIGNvdW50KTsKIAotICAgIG1lbWNweSh0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVu
aWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIHNpemVvZihHTGZsb2F0KSAqIDE2LAotICAg
ICAgICAgICB2YWx1ZSwgMTYgKiBzaXplb2YoR0xmbG9hdCkgKiBjb3VudCk7CisgICAgR0xmbG9h
dCAqdGFyZ2V0ID0gKEdMZmxvYXQqKSh0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRl
eFtsb2NhdGlvbl0uZWxlbWVudCAqIHNpemVvZihHTGZsb2F0KSAqIDE2KTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgeworICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8
R0xmbG9hdCw0LDQsNCw0Pih0YXJnZXQsIHZhbHVlKTsKKyAgICAgICAgdGFyZ2V0ICs9IDE2Owor
ICAgICAgICB2YWx1ZSArPSAxNjsKKyAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgx
OCw3ICs5MTEsNyBAQCBib29sIFByb2dyYW06OnNldFVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFByb2dyYW06OmdldFVuaWZvcm1mdihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1z
KQorYm9vbCBQcm9ncmFtOjpnZXRVbmlmb3JtZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgKmJ1
ZlNpemUsIEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0
aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCiAgICAgewpAQCAtODI3LDQxICs5MjAs
NjcgQEAgYm9vbCBQcm9ncmFtOjpnZXRVbmlmb3JtZnYoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQg
KnBhcmFtcykKIAogICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZv
cm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOwogCi0gICAgdW5zaWduZWQgaW50IGNvdW50ID0gVW5p
Zm9ybUNvbXBvbmVudENvdW50KHRhcmdldFVuaWZvcm0tPnR5cGUpOwotCi0gICAgc3dpdGNoIChV
bmlmb3JtQ29tcG9uZW50VHlwZSh0YXJnZXRVbmlmb3JtLT50eXBlKSkKKyAgICAvLyBzaXplZCBx
dWVyaWVzIC0tIGVuc3VyZSB0aGUgcHJvdmlkZWQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaAorICAg
IGlmIChidWZTaXplKQogICAgIHsKLSAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgICAgaW50IHJl
cXVpcmVkQnl0ZXMgPSBVbmlmb3JtRXh0ZXJuYWxTaXplKHRhcmdldFVuaWZvcm0tPnR5cGUpOwor
ICAgICAgICBpZiAoKmJ1ZlNpemUgPCByZXF1aXJlZEJ5dGVzKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSAoR0xib29sZWFuKil0YXJnZXRVbmlmb3JtLT5k
YXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIGNvdW50OwotCi0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKGJvb2xQYXJhbXNbaV0gPT0gR0xfRkFM
U0UpID8gMC4wZiA6IDEuMGY7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKHRhcmdldFVuaWZvcm0tPnR5cGUp
CisgICAgeworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICB0cmFuc3Bvc2VNYXRy
aXg8R0xmbG9hdCwyLDIsNCwyPihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRh
ICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDgpOwogICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgIG1lbWNweShwYXJhbXMsIHRhcmdldFVuaWZv
cm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogY291bnQgKiBzaXpl
b2YoR0xmbG9hdCksCi0gICAgICAgICAgICAgICBjb3VudCAqIHNpemVvZihHTGZsb2F0KSk7Cisg
ICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAgIHRyYW5zcG9zZU1hdHJpeDxHTGZsb2F0
LDMsMyw0LDM+KHBhcmFtcywgKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9y
bUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogMTIpOwogICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgR0xfSU5UOgorICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgorICAgICAgICB0cmFuc3Bvc2VN
YXRyaXg8R0xmbG9hdCw0LDQsNCw0PihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5k
YXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDE2KTsKKyAgICAgICAgYnJl
YWs7CisgICAgICBkZWZhdWx0OgogICAgICAgICB7Ci0gICAgICAgICAgICBHTGludCAqaW50UGFy
YW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlv
bl0uZWxlbWVudCAqIGNvdW50OworICAgICAgICAgICAgdW5zaWduZWQgaW50IGNvdW50ID0gVW5p
Zm9ybUV4dGVybmFsQ29tcG9uZW50Q291bnQodGFyZ2V0VW5pZm9ybS0+dHlwZSk7CisgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgaW50ZXJuYWxDb3VudCA9IFVuaWZvcm1JbnRlcm5hbENvbXBvbmVu
dENvdW50KHRhcmdldFVuaWZvcm0tPnR5cGUpOwogCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICBzd2l0Y2ggKFVuaWZvcm1D
b21wb25lbnRUeXBlKHRhcmdldFVuaWZvcm0tPnR5cGUpKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHBhcmFtc1tpXSA9IChmbG9hdClpbnRQYXJhbXNbaV07CisgICAgICAgICAgICAg
IGNhc2UgR0xfQk9PTDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiAqYm9vbFBhcmFtcyA9IChHTGJvb2xlYW4qKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBt
VW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogaW50ZXJuYWxDb3VudDsKKworICAgICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9
IChib29sUGFyYW1zW2ldID09IEdMX0ZBTFNFKSA/IDAuMGYgOiAxLjBmOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgICAgIG1lbWNweShwYXJhbXMs
IHRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICog
aW50ZXJuYWxDb3VudCAqIHNpemVvZihHTGZsb2F0KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
Y291bnQgKiBzaXplb2YoR0xmbG9hdCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICppbnRQYXJhbXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5p
Zm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogaW50ZXJuYWxDb3VudDsKKworICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IChm
bG9hdClpbnRQYXJhbXNbaV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFByb2dyYW06OmdldFVuaWZvcm1pdihHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFt
cykKK2Jvb2wgUHJvZ3JhbTo6Z2V0VW5pZm9ybWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpICpi
dWZTaXplLCBHTGludCAqcGFyYW1zKQogewogICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRp
b24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKICAgICB7CkBAIC04NzAsMzUgKzk4OSw2
NyBAQCBib29sIFByb2dyYW06OmdldFVuaWZvcm1pdihHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBh
cmFtcykKIAogICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1J
bmRleFtsb2NhdGlvbl0uaW5kZXhdOwogCi0gICAgdW5zaWduZWQgaW50IGNvdW50ID0gVW5pZm9y
bUNvbXBvbmVudENvdW50KHRhcmdldFVuaWZvcm0tPnR5cGUpOwotCi0gICAgc3dpdGNoIChVbmlm
b3JtQ29tcG9uZW50VHlwZSh0YXJnZXRVbmlmb3JtLT50eXBlKSkKKyAgICAvLyBzaXplZCBxdWVy
aWVzIC0tIGVuc3VyZSB0aGUgcHJvdmlkZWQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaAorICAgIGlm
IChidWZTaXplKQogICAgIHsKLSAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgICAgaW50IHJlcXVp
cmVkQnl0ZXMgPSBVbmlmb3JtRXh0ZXJuYWxTaXplKHRhcmdldFVuaWZvcm0tPnR5cGUpOworICAg
ICAgICBpZiAoKmJ1ZlNpemUgPCByZXF1aXJlZEJ5dGVzKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSB0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1J
bmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIGNvdW50OworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfQogCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcGFyYW1z
W2ldID0gKEdMaW50KWJvb2xQYXJhbXNbaV07Ci0gICAgICAgICAgICB9CisgICAgc3dpdGNoICh0
YXJnZXRVbmlmb3JtLT50eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoKKyAg
ICAgICAgeworICAgICAgICAgICAgdHJhbnNwb3NlTWF0cml4PEdMaW50LDIsMiw0LDI+KHBhcmFt
cywgKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9u
XS5lbGVtZW50ICogOCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X0ZMT0FUX01BVDM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHRyYW5zcG9zZU1hdHJpeDxHTGlu
dCwzLDMsNCwzPihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZv
cm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDEyKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDoKKyAgICAgICAgeworICAgICAgICAgICAgdHJh
bnNwb3NlTWF0cml4PEdMaW50LDQsNCw0LDQ+KHBhcmFtcywgKEdMZmxvYXQqKXRhcmdldFVuaWZv
cm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogMTYpOwogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgIGRlZmF1bHQ6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEdMZmxvYXQgKmZsb2F0UGFyYW1zID0gKEdMZmxvYXQq
KXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICog
Y291bnQ7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQgPSBVbmlmb3JtRXh0ZXJuYWxD
b21wb25lbnRDb3VudCh0YXJnZXRVbmlmb3JtLT50eXBlKTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGludCBpbnRlcm5hbENvdW50ID0gVW5pZm9ybUludGVybmFsQ29tcG9uZW50Q291bnQodGFyZ2V0
VW5pZm9ybS0+dHlwZSk7CiAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHN3aXRjaCAoVW5pZm9ybUNvbXBvbmVudFR5cGUo
dGFyZ2V0VW5pZm9ybS0+dHlwZSkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcGFy
YW1zW2ldID0gKEdMaW50KWZsb2F0UGFyYW1zW2ldOworICAgICAgICAgICAgICBjYXNlIEdMX0JP
T0w6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gKmJv
b2xQYXJhbXMgPSB0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0u
ZWxlbWVudCAqIGludGVybmFsQ291bnQ7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSAoR0xpbnQpYm9vbFBhcmFtc1tpXTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKmZsb2F0UGFyYW1zID0gKEdMZmxvYXQqKXRh
cmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogaW50
ZXJuYWxDb3VudDsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtc1tpXSA9IChHTGludClmbG9hdFBhcmFtc1tpXTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAgICAgbWVtY3B5KHBhcmFtcywg
dGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiBp
bnRlcm5hbENvdW50ICogc2l6ZW9mKEdMaW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgY291
bnQgKiBzaXplb2YoR0xpbnQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfSU5UOgotICAgICAgICBtZW1jcHkocGFyYW1zLCB0
YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIGNv
dW50ICogc2l6ZW9mKEdMaW50KSwKLSAgICAgICAgICAgICAgIGNvdW50ICogc2l6ZW9mKEdMaW50
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTkxNiwxNSArMTA2Nyw4IEBAIHZvaWQgUHJvZ3JhbTo6
ZGlydHlBbGxVbmlmb3JtcygpCiAvLyBBcHBsaWVzIGFsbCB0aGUgdW5pZm9ybXMgc2V0IGZvciB0
aGlzIHByb2dyYW0gb2JqZWN0IHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQogdm9pZCBQcm9ncmFt
OjphcHBseVVuaWZvcm1zKCkKIHsKLSAgICB1bnNpZ25lZCBpbnQgbnVtVW5pZm9ybXMgPSBtVW5p
Zm9ybUluZGV4LnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBsb2NhdGlvbiA9IDA7IGxv
Y2F0aW9uIDwgbnVtVW5pZm9ybXM7IGxvY2F0aW9uKyspCi0gICAgewotICAgICAgICBpZiAobVVu
aWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0g
PSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOworICAgIGZvciAoc3Rk
Ojp2ZWN0b3I8VW5pZm9ybSo+OjppdGVyYXRvciB1YiA9IG1Vbmlmb3Jtcy5iZWdpbigpLCB1ZSA9
IG1Vbmlmb3Jtcy5lbmQoKTsgdWIgIT0gdWU7ICsrdWIpIHsKKyAgICAgICAgVW5pZm9ybSAqdGFy
Z2V0VW5pZm9ybSA9ICp1YjsKIAogICAgICAgICBpZiAodGFyZ2V0VW5pZm9ybS0+ZGlydHkpCiAg
ICAgICAgIHsKQEAgLTkzNSwyMyArMTA3OSwyMyBAQCB2b2lkIFByb2dyYW06OmFwcGx5VW5pZm9y
bXMoKQogCiAgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldFVuaWZvcm0tPnR5cGUpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfQk9PTDogICAgICAgYXBwbHlVbmlmb3JtMWJ2
KGxvY2F0aW9uLCBhcnJheVNpemUsIGIpOyAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9CT09MX1ZFQzI6ICBhcHBseVVuaWZvcm0yYnYobG9jYXRpb24sIGFycmF5U2l6ZSwgYik7
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0JPT0xfVkVDMzogIGFwcGx5VW5p
Zm9ybTNidihsb2NhdGlvbiwgYXJyYXlTaXplLCBiKTsgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2UgR0xfQk9PTF9WRUM0OiAgYXBwbHlVbmlmb3JtNGJ2KGxvY2F0aW9uLCBhcnJheVNp
emUsIGIpOyAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICBh
cHBseVVuaWZvcm0xZnYobG9jYXRpb24sIGFycmF5U2l6ZSwgZik7ICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6IGFwcGx5VW5pZm9ybTJmdihsb2NhdGlvbiwg
YXJyYXlTaXplLCBmKTsgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRf
VkVDMzogYXBwbHlVbmlmb3JtM2Z2KGxvY2F0aW9uLCBhcnJheVNpemUsIGYpOyAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OiBhcHBseVVuaWZvcm00ZnYobG9j
YXRpb24sIGFycmF5U2l6ZSwgZik7ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdM
X0ZMT0FUX01BVDI6IGFwcGx5VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgYXJyYXlTaXplLCBm
KTsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogYXBwbHlVbmlmb3Jt
TWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheVNpemUsIGYpOyBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9GTE9BVF9NQVQ0OiBhcHBseVVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGFycmF5
U2l6ZSwgZik7IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0JPT0w6ICAgICAgIGFwcGx5
VW5pZm9ybW5idih0YXJnZXRVbmlmb3JtLCBhcnJheVNpemUsIDEsIGIpOyAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6ICBhcHBseVVuaWZvcm1uYnYodGFyZ2V0VW5p
Zm9ybSwgYXJyYXlTaXplLCAyLCBiKTsgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
Qk9PTF9WRUMzOiAgYXBwbHlVbmlmb3JtbmJ2KHRhcmdldFVuaWZvcm0sIGFycmF5U2l6ZSwgMywg
Yik7ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0JPT0xfVkVDNDogIGFwcGx5VW5p
Zm9ybW5idih0YXJnZXRVbmlmb3JtLCBhcnJheVNpemUsIDQsIGIpOyAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMy
OgorICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICAgICAgICAgIGNhc2Ug
R0xfRkxPQVRfVkVDNDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAg
ICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRf
TUFUNDogYXBwbHlVbmlmb3JtbmZ2KHRhcmdldFVuaWZvcm0sIGYpOyAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkQ6CiAgICAgICAgICAgICAg
IGNhc2UgR0xfU0FNUExFUl9DVUJFOgotICAgICAgICAgICAgICBjYXNlIEdMX0lOVDogICAgICAg
IGFwcGx5VW5pZm9ybTFpdihsb2NhdGlvbiwgYXJyYXlTaXplLCBpKTsgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfSU5UX1ZFQzI6ICAgYXBwbHlVbmlmb3JtMml2KGxvY2F0aW9u
LCBhcnJheVNpemUsIGkpOyAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9JTlRf
VkVDMzogICBhcHBseVVuaWZvcm0zaXYobG9jYXRpb24sIGFycmF5U2l6ZSwgaSk7ICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0lOVF9WRUM0OiAgIGFwcGx5VW5pZm9ybTRpdihs
b2NhdGlvbiwgYXJyYXlTaXplLCBpKTsgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfSU5UOiAgICAgICAgYXBwbHlVbmlmb3JtMWl2KHRhcmdldFVuaWZvcm0sIGFycmF5U2l6ZSwg
aSk7ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0lOVF9WRUMyOiAgIGFwcGx5
VW5pZm9ybTJpdih0YXJnZXRVbmlmb3JtLCBhcnJheVNpemUsIGkpOyAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9JTlRfVkVDMzogICBhcHBseVVuaWZvcm0zaXYodGFyZ2V0VW5p
Zm9ybSwgYXJyYXlTaXplLCBpKTsgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
SU5UX1ZFQzQ6ICAgYXBwbHlVbmlmb3JtNGl2KHRhcmdldFVuaWZvcm0sIGFycmF5U2l6ZSwgaSk7
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CkBAIC05OTMsNyArMTEzNyw3IEBAIElEM0QxMEJs
b2IgKlByb2dyYW06OmNvbXBpbGVUb0JpbmFyeShjb25zdCBjaGFyICpobHNsLCBjb25zdCBjaGFy
ICpwcm9maWxlLCBJRDNECiAKICAgICBJRDNEMTBCbG9iICpiaW5hcnkgPSBOVUxMOwogICAgIElE
M0QxMEJsb2IgKmVycm9yTWVzc2FnZSA9IE5VTEw7Ci0gICAgcmVzdWx0ID0gRDNEQ29tcGlsZSho
bHNsLCBzdHJsZW4oaGxzbCksIE5VTEwsIE5VTEwsIE5VTEwsICJtYWluIiwgcHJvZmlsZSwgZmxh
Z3MsIDAsICZiaW5hcnksICZlcnJvck1lc3NhZ2UpOworICAgIHJlc3VsdCA9IEQzRENvbXBpbGUo
aGxzbCwgc3RybGVuKGhsc2wpLCBmYWtlcGF0aCwgTlVMTCwgTlVMTCwgIm1haW4iLCBwcm9maWxl
LCBmbGFncywgMCwgJmJpbmFyeSwgJmVycm9yTWVzc2FnZSk7CiAKICAgICBpZiAoZXJyb3JNZXNz
YWdlKQogICAgIHsKQEAgLTEwMDcsNyArMTE1MSw2IEBAIElEM0QxMEJsb2IgKlByb2dyYW06OmNv
bXBpbGVUb0JpbmFyeShjb25zdCBjaGFyICpobHNsLCBjb25zdCBjaGFyICpwcm9maWxlLCBJRDNE
CiAgICAgICAgIGVycm9yTWVzc2FnZSA9IE5VTEw7CiAgICAgfQogCi0KICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCiAgICAgewogICAgICAgICBpZiAocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVP
TUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQpAQCAtMTI3Nyw3ICsxNDIwLDcgQEAg
Ym9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3MoKQogICAgICAgICAgIGRlZmF1bHQ6ICBVTlJFQUNI
QUJMRSgpOwogICAgICAgICB9CiAKLSAgICAgICAgbVZlcnRleEhMU0wgKz0gZGVjb3JhdGUoYXR0
cmlidXRlLT5uYW1lKSArICIgOiBURVhDT09SRCIgKyBzdHIoc2VtYW50aWNJbmRleCkgKyAiO1xu
IjsKKyAgICAgICAgbVZlcnRleEhMU0wgKz0gZGVjb3JhdGVBdHRyaWJ1dGUoYXR0cmlidXRlLT5u
YW1lKSArICIgOiBURVhDT09SRCIgKyBzdHIoc2VtYW50aWNJbmRleCkgKyAiO1xuIjsKIAogICAg
ICAgICBzZW1hbnRpY0luZGV4ICs9IFZhcmlhYmxlUm93Q291bnQoYXR0cmlidXRlLT50eXBlKTsK
ICAgICB9CkBAIC0xMzEyLDE0ICsxNDU1LDE0IEBAIGJvb2wgUHJvZ3JhbTo6bGlua1Zhcnlpbmdz
KCkKIAogICAgIGZvciAoQXR0cmlidXRlQXJyYXk6Oml0ZXJhdG9yIGF0dHJpYnV0ZSA9IG1WZXJ0
ZXhTaGFkZXItPm1BdHRyaWJ1dGVzLmJlZ2luKCk7IGF0dHJpYnV0ZSAhPSBtVmVydGV4U2hhZGVy
LT5tQXR0cmlidXRlcy5lbmQoKTsgYXR0cmlidXRlKyspCiAgICAgewotICAgICAgICBtVmVydGV4
SExTTCArPSAiICAgICIgKyBkZWNvcmF0ZShhdHRyaWJ1dGUtPm5hbWUpICsgIiA9ICI7CisgICAg
ICAgIG1WZXJ0ZXhITFNMICs9ICIgICAgIiArIGRlY29yYXRlQXR0cmlidXRlKGF0dHJpYnV0ZS0+
bmFtZSkgKyAiID0gIjsKIAogICAgICAgICBpZiAoVmFyaWFibGVSb3dDb3VudChhdHRyaWJ1dGUt
PnR5cGUpID4gMSkgICAvLyBNYXRyaXgKICAgICAgICAgewogICAgICAgICAgICAgbVZlcnRleEhM
U0wgKz0gInRyYW5zcG9zZSI7CiAgICAgICAgIH0KIAotICAgICAgICBtVmVydGV4SExTTCArPSAi
KGlucHV0LiIgKyBkZWNvcmF0ZShhdHRyaWJ1dGUtPm5hbWUpICsgIik7XG4iOworICAgICAgICBt
VmVydGV4SExTTCArPSAiKGlucHV0LiIgKyBkZWNvcmF0ZUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5h
bWUpICsgIik7XG4iOwogICAgIH0KIAogICAgIG1WZXJ0ZXhITFNMICs9ICJcbiIKQEAgLTE0NTcs
MTMgKzE2MDAsMjAgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3MoKQogICAgIGlmIChtRnJh
Z21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQogICAgIHsKICAgICAgICAgbVBpeGVsSExTTCAr
PSAiICAgIGZsb2F0IHJodyA9IDEuMCAvIGlucHV0LmdsX0ZyYWdDb29yZC53O1xuIjsKLSAgICAg
ICAgaWYgKHNtMykgeworICAgICAgICAKKyAgICAgICAgaWYgKHNtMykKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gZHhfQ29vcmQueSBjb250YWlucyB0aGUgcmVuZGVyIHRhcmdldCBoZWlnaHQu
IFNlZSBDb250ZXh0OjphcHBseVJlbmRlclRhcmdldCgpCiAgICAgICAgICAgICBtUGl4ZWxITFNM
ICs9ICIgICAgZ2xfRnJhZ0Nvb3JkLnggPSBpbnB1dC5keF9WUG9zLnggKyAwLjU7XG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xfRnJhZ0Nvb3JkLnkgPSAyLjAgKiBkeF9WaWV3
cG9ydC55IC0gaW5wdXQuZHhfVlBvcy55IC0gMC41O1xuIjsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIG1QaXhlbEhMU0wgKz0gIiAgICBnbF9GcmFnQ29vcmQueCA9IChpbnB1dC5nbF9G
cmFnQ29vcmQueCAqIHJodykgKiBkeF9WaWV3cG9ydC54ICsgZHhfVmlld3BvcnQuejtcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29vcmQueSA9IC0oaW5wdXQuZ2xf
RnJhZ0Nvb3JkLnkgKiByaHcpICogZHhfVmlld3BvcnQueSArIGR4X1ZpZXdwb3J0Lnc7XG4iOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb29yZC55ID0gZHhfQ29vcmQu
eSAtIGlucHV0LmR4X1ZQb3MueSAtIDAuNTtcbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICAvLyBkeF9Db29yZCBjb250YWlucyB0aGUgdmlld3BvcnQg
d2lkdGgvMiwgaGVpZ2h0LzIsIGNlbnRlci54IGFuZCBjZW50ZXIueS4gU2VlIENvbnRleHQ6OmFw
cGx5UmVuZGVyVGFyZ2V0KCkKKyAgICAgICAgICAgIG1QaXhlbEhMU0wgKz0gIiAgICBnbF9GcmFn
Q29vcmQueCA9IChpbnB1dC5nbF9GcmFnQ29vcmQueCAqIHJodykgKiBkeF9Db29yZC54ICsgZHhf
Q29vcmQuejtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29vcmQu
eSA9IC0oaW5wdXQuZ2xfRnJhZ0Nvb3JkLnkgKiByaHcpICogZHhfQ29vcmQueSArIGR4X0Nvb3Jk
Lnc7XG4iOwogICAgICAgICB9CisgICAgICAgIAogICAgICAgICBtUGl4ZWxITFNMICs9ICIgICAg
Z2xfRnJhZ0Nvb3JkLnogPSAoaW5wdXQuZ2xfRnJhZ0Nvb3JkLnogKiByaHcpICogZHhfRGVwdGgu
eCArIGR4X0RlcHRoLnk7XG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29v
cmQudyA9IHJodztcbiI7CiAgICAgfQpAQCAtMTU1Myw5ICsxNzAzLDggQEAgdm9pZCBQcm9ncmFt
OjpsaW5rKCkKIAogICAgIGlmICh2ZXJ0ZXhCaW5hcnkgJiYgcGl4ZWxCaW5hcnkpCiAgICAgewot
ICAgICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKLSAgICAgICAg
SFJFU1VMVCB2ZXJ0ZXhSZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVZlcnRleFNoYWRlcigoRFdPUkQq
KXZlcnRleEJpbmFyeS0+R2V0QnVmZmVyUG9pbnRlcigpLCAmbVZlcnRleEV4ZWN1dGFibGUpOwot
ICAgICAgICBIUkVTVUxUIHBpeGVsUmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVQaXhlbFNoYWRlcigo
RFdPUkQqKXBpeGVsQmluYXJ5LT5HZXRCdWZmZXJQb2ludGVyKCksICZtUGl4ZWxFeGVjdXRhYmxl
KTsKKyAgICAgICAgSFJFU1VMVCB2ZXJ0ZXhSZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVWZXJ0ZXhT
aGFkZXIoKERXT1JEKil2ZXJ0ZXhCaW5hcnktPkdldEJ1ZmZlclBvaW50ZXIoKSwgJm1WZXJ0ZXhF
eGVjdXRhYmxlKTsKKyAgICAgICAgSFJFU1VMVCBwaXhlbFJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0
ZVBpeGVsU2hhZGVyKChEV09SRCopcGl4ZWxCaW5hcnktPkdldEJ1ZmZlclBvaW50ZXIoKSwgJm1Q
aXhlbEV4ZWN1dGFibGUpOwogCiAgICAgICAgIGlmICh2ZXJ0ZXhSZXN1bHQgPT0gRDNERVJSX09V
VE9GVklERU9NRU1PUlkgfHwgdmVydGV4UmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgcGl4ZWxS
ZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcGl4ZWxSZXN1bHQgPT0gRV9PVVRP
Rk1FTU9SWSkKICAgICAgICAgewpAQCAtMTU4OCwxMiArMTczNywxMiBAQCB2b2lkIFByb2dyYW06
OmxpbmsoKQogCiAgICAgICAgICAgICAvLyB0aGVzZSB1bmlmb3JtcyBhcmUgc2VhcmNoZWQgYXMg
YWxyZWFkeS1kZWNvcmF0ZWQgYmVjYXVzZSBnbF8gYW5kIGR4XwogICAgICAgICAgICAgLy8gYXJl
IHJlc2VydmVkIHByZWZpeGVzLCBhbmQgZG8gbm90IHJlY2VpdmUgYWRkaXRpb25hbCBkZWNvcmF0
aW9uCi0gICAgICAgICAgICBtRHhEZXB0aFJhbmdlTG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRp
b24oImR4X0RlcHRoUmFuZ2UiLCB0cnVlKTsKLSAgICAgICAgICAgIG1EeERlcHRoTG9jYXRpb24g
PSBnZXRVbmlmb3JtTG9jYXRpb24oImR4X0RlcHRoIiwgdHJ1ZSk7Ci0gICAgICAgICAgICBtRHhW
aWV3cG9ydExvY2F0aW9uID0gZ2V0VW5pZm9ybUxvY2F0aW9uKCJkeF9WaWV3cG9ydCIsIHRydWUp
OwotICAgICAgICAgICAgbUR4SGFsZlBpeGVsU2l6ZUxvY2F0aW9uID0gZ2V0VW5pZm9ybUxvY2F0
aW9uKCJkeF9IYWxmUGl4ZWxTaXplIiwgdHJ1ZSk7Ci0gICAgICAgICAgICBtRHhGcm9udENDV0xv
Y2F0aW9uID0gZ2V0VW5pZm9ybUxvY2F0aW9uKCJkeF9Gcm9udENDVyIsIHRydWUpOwotICAgICAg
ICAgICAgbUR4UG9pbnRzT3JMaW5lc0xvY2F0aW9uID0gZ2V0VW5pZm9ybUxvY2F0aW9uKCJkeF9Q
b2ludHNPckxpbmVzIiwgdHJ1ZSk7CisgICAgICAgICAgICBtRHhEZXB0aFJhbmdlTG9jYXRpb24g
PSBnZXRVbmlmb3JtTG9jYXRpb24oImR4X0RlcHRoUmFuZ2UiKTsKKyAgICAgICAgICAgIG1EeERl
cHRoTG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oImR4X0RlcHRoIik7CisgICAgICAgICAg
ICBtRHhDb29yZExvY2F0aW9uID0gZ2V0VW5pZm9ybUxvY2F0aW9uKCJkeF9Db29yZCIpOworICAg
ICAgICAgICAgbUR4SGFsZlBpeGVsU2l6ZUxvY2F0aW9uID0gZ2V0VW5pZm9ybUxvY2F0aW9uKCJk
eF9IYWxmUGl4ZWxTaXplIik7CisgICAgICAgICAgICBtRHhGcm9udENDV0xvY2F0aW9uID0gZ2V0
VW5pZm9ybUxvY2F0aW9uKCJkeF9Gcm9udENDVyIpOworICAgICAgICAgICAgbUR4UG9pbnRzT3JM
aW5lc0xvY2F0aW9uID0gZ2V0VW5pZm9ybUxvY2F0aW9uKCJkeF9Qb2ludHNPckxpbmVzIik7CiAK
ICAgICAgICAgICAgIG1MaW5rZWQgPSB0cnVlOyAgIC8vIFN1Y2Nlc3MKICAgICAgICAgfQpAQCAt
MTcxMiwxNSArMTg2MSwyMSBAQCBib29sIFByb2dyYW06OmRlZmluZVVuaWZvcm0oY29uc3QgRDNE
WEhBTkRMRSAmY29uc3RhbnRIYW5kbGUsIGNvbnN0IEQzRFhDT05TVEFOVAogewogICAgIGlmIChj
b25zdGFudERlc2NyaXB0aW9uLlJlZ2lzdGVyU2V0ID09IEQzRFhSU19TQU1QTEVSKQogICAgIHsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gY29uc3RhbnREZXNjcmlw
dGlvbi5SZWdpc3RlckluZGV4OyBzYW1wbGVySW5kZXggPCBjb25zdGFudERlc2NyaXB0aW9uLlJl
Z2lzdGVySW5kZXggKyBjb25zdGFudERlc2NyaXB0aW9uLlJlZ2lzdGVyQ291bnQ7IHNhbXBsZXJJ
bmRleCsrKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvbnN0YW50RGVz
Y3JpcHRpb24uUmVnaXN0ZXJDb3VudDsgaSsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
bUNvbnN0YW50VGFibGVQUy0+R2V0Q29uc3RhbnRCeU5hbWUoTlVMTCwgY29uc3RhbnREZXNjcmlw
dGlvbi5OYW1lKSAhPSBOVUxMKQorICAgICAgICAgICAgRDNEWEhBTkRMRSBwc0NvbnN0YW50ID0g
bUNvbnN0YW50VGFibGVQUy0+R2V0Q29uc3RhbnRCeU5hbWUoTlVMTCwgY29uc3RhbnREZXNjcmlw
dGlvbi5OYW1lKTsKKyAgICAgICAgICAgIEQzRFhIQU5ETEUgdnNDb25zdGFudCA9IG1Db25zdGFu
dFRhYmxlVlMtPkdldENvbnN0YW50QnlOYW1lKE5VTEwsIGNvbnN0YW50RGVzY3JpcHRpb24uTmFt
ZSk7CisKKyAgICAgICAgICAgIGlmIChwc0NvbnN0YW50KQogICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXggPSBtQ29uc3RhbnRUYWJsZVBTLT5H
ZXRTYW1wbGVySW5kZXgocHNDb25zdGFudCkgKyBpOworCiAgICAgICAgICAgICAgICAgaWYgKHNh
bXBsZXJJbmRleCA8IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTKQogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgbVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5hY3RpdmUgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLnRleHR1
cmVUeXBlID0gKGNvbnN0YW50RGVzY3JpcHRpb24uVHlwZSA9PSBEM0RYUFRfU0FNUExFUkNVQkUp
ID8gVEVYVFVSRV9DVUJFIDogVEVYVFVSRV8yRDsKICAgICAgICAgICAgICAgICAgICAgbVNhbXBs
ZXJzUFNbc2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQgPSAwOworICAgICAgICAgICAg
ICAgICAgICBtVXNlZFBpeGVsU2FtcGxlclJhbmdlID0gc3RkOjptYXgoc2FtcGxlckluZGV4ICsg
MSwgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7CkBAIC0xNzI5LDEzICsxODg0LDE2IEBAIGJv
b2wgUHJvZ3JhbTo6ZGVmaW5lVW5pZm9ybShjb25zdCBEM0RYSEFORExFICZjb25zdGFudEhhbmRs
ZSwgY29uc3QgRDNEWENPTlNUQU5UCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobUNvbnN0YW50VGFibGVWUy0+R2V0Q29uc3Rh
bnRCeU5hbWUoTlVMTCwgY29uc3RhbnREZXNjcmlwdGlvbi5OYW1lKSAhPSBOVUxMKQorICAgICAg
ICAgICAgaWYgKHZzQ29uc3RhbnQpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHNhbXBsZXJJbmRleCA9IG1Db25zdGFudFRhYmxlVlMtPkdldFNhbXBsZXJJbmRl
eCh2c0NvbnN0YW50KSArIGk7CisKICAgICAgICAgICAgICAgICBpZiAoc2FtcGxlckluZGV4IDwg
Z2V0Q29udGV4dCgpLT5nZXRNYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKSkKICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRl
eF0uYWN0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgbVNhbXBsZXJzVlNbc2FtcGxl
ckluZGV4XS50ZXh0dXJlVHlwZSA9IChjb25zdGFudERlc2NyaXB0aW9uLlR5cGUgPT0gRDNEWFBU
X1NBTVBMRVJDVUJFKSA/IFRFWFRVUkVfQ1VCRSA6IFRFWFRVUkVfMkQ7CiAgICAgICAgICAgICAg
ICAgICAgIG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRleHR1cmVVbml0ID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UgPSBzdGQ6Om1heChz
YW1wbGVySW5kZXggKyAxLCBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7CkBAIC0xNzg0LDkg
KzE5NDIsOSBAQCBib29sIFByb2dyYW06OmRlZmluZVVuaWZvcm0oY29uc3QgRDNEWEhBTkRMRSAm
Y29uc3RhbnRIYW5kbGUsIGNvbnN0IEQzRFhDT05TVEFOVAogICAgIH0KIH0KIAotYm9vbCBQcm9n
cmFtOjpkZWZpbmVVbmlmb3JtKGNvbnN0IEQzRFhDT05TVEFOVF9ERVNDICZjb25zdGFudERlc2Ny
aXB0aW9uLCBzdGQ6OnN0cmluZyAmbmFtZSkKK2Jvb2wgUHJvZ3JhbTo6ZGVmaW5lVW5pZm9ybShj
b25zdCBEM0RYQ09OU1RBTlRfREVTQyAmY29uc3RhbnREZXNjcmlwdGlvbiwgc3RkOjpzdHJpbmcg
Jl9uYW1lKQogewotICAgIFVuaWZvcm0gKnVuaWZvcm0gPSBjcmVhdGVVbmlmb3JtKGNvbnN0YW50
RGVzY3JpcHRpb24sIG5hbWUpOworICAgIFVuaWZvcm0gKnVuaWZvcm0gPSBjcmVhdGVVbmlmb3Jt
KGNvbnN0YW50RGVzY3JpcHRpb24sIF9uYW1lKTsKIAogICAgIGlmKCF1bmlmb3JtKQogICAgIHsK
QEAgLTE3OTQsNyArMTk1Miw3IEBAIGJvb2wgUHJvZ3JhbTo6ZGVmaW5lVW5pZm9ybShjb25zdCBE
M0RYQ09OU1RBTlRfREVTQyAmY29uc3RhbnREZXNjcmlwdGlvbiwgc3RkOjpzCiAgICAgfQogCiAg
ICAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBkZWZpbmVkCi0gICAgR0xpbnQgbG9jYXRpb24gPSBnZXRV
bmlmb3JtTG9jYXRpb24obmFtZS5jX3N0cigpLCB0cnVlKTsKKyAgICBHTGludCBsb2NhdGlvbiA9
IGdldFVuaWZvcm1Mb2NhdGlvbih1bmlmb3JtLT5uYW1lKTsKICAgICBHTGVudW0gdHlwZSA9IHVu
aWZvcm0tPnR5cGU7CiAKICAgICBpZiAobG9jYXRpb24gPj0gMCkKQEAgLTE4MTEsMTggKzE5Njks
MjEgQEAgYm9vbCBQcm9ncmFtOjpkZWZpbmVVbmlmb3JtKGNvbnN0IEQzRFhDT05TVEFOVF9ERVND
ICZjb25zdGFudERlc2NyaXB0aW9uLCBzdGQ6OnMKICAgICAgICAgfQogICAgIH0KIAorICAgIGlu
aXRpYWxpemVDb25zdGFudEhhbmRsZXModW5pZm9ybSwgJnVuaWZvcm0tPnBzLCBtQ29uc3RhbnRU
YWJsZVBTKTsKKyAgICBpbml0aWFsaXplQ29uc3RhbnRIYW5kbGVzKHVuaWZvcm0sICZ1bmlmb3Jt
LT52cywgbUNvbnN0YW50VGFibGVWUyk7CisKICAgICBtVW5pZm9ybXMucHVzaF9iYWNrKHVuaWZv
cm0pOwogICAgIHVuc2lnbmVkIGludCB1bmlmb3JtSW5kZXggPSBtVW5pZm9ybXMuc2l6ZSgpIC0g
MTsKIAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdW5pZm9ybS0+YXJyYXlTaXpl
OyArK2kpCiAgICAgewotICAgICAgICBtVW5pZm9ybUluZGV4LnB1c2hfYmFjayhVbmlmb3JtTG9j
YXRpb24obmFtZSwgaSwgdW5pZm9ybUluZGV4KSk7CisgICAgICAgIG1Vbmlmb3JtSW5kZXgucHVz
aF9iYWNrKFVuaWZvcm1Mb2NhdGlvbihfbmFtZSwgaSwgdW5pZm9ybUluZGV4KSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVVuaWZvcm0gKlByb2dyYW06OmNyZWF0ZVVuaWZvcm0o
Y29uc3QgRDNEWENPTlNUQU5UX0RFU0MgJmNvbnN0YW50RGVzY3JpcHRpb24sIHN0ZDo6c3RyaW5n
ICZuYW1lKQorVW5pZm9ybSAqUHJvZ3JhbTo6Y3JlYXRlVW5pZm9ybShjb25zdCBEM0RYQ09OU1RB
TlRfREVTQyAmY29uc3RhbnREZXNjcmlwdGlvbiwgc3RkOjpzdHJpbmcgJl9uYW1lKQogewogICAg
IGlmIChjb25zdGFudERlc2NyaXB0aW9uLlJvd3MgPT0gMSkgICAvLyBWZWN0b3JzIGFuZCBzY2Fs
YXJzCiAgICAgewpAQCAtMTgzMSw0NCArMTk5Miw0NCBAQCBVbmlmb3JtICpQcm9ncmFtOjpjcmVh
dGVVbmlmb3JtKGNvbnN0IEQzRFhDT05TVEFOVF9ERVNDICZjb25zdGFudERlc2NyaXB0aW9uLCBz
dAogICAgICAgICAgIGNhc2UgRDNEWFBUX1NBTVBMRVIyRDoKICAgICAgICAgICAgIHN3aXRjaCAo
Y29uc3RhbnREZXNjcmlwdGlvbi5Db2x1bW5zKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICBjYXNlIDE6IHJldHVybiBuZXcgVW5pZm9ybShHTF9TQU1QTEVSXzJELCBuYW1lLCBjb25zdGFu
dERlc2NyaXB0aW9uLkVsZW1lbnRzKTsKKyAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3
IFVuaWZvcm0oR0xfU0FNUExFUl8yRCwgX25hbWUsIGNvbnN0YW50RGVzY3JpcHRpb24uRWxlbWVu
dHMpOwogICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBEM0RYUFRfU0FNUExFUkNVQkU6
CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0YW50RGVzY3JpcHRpb24uQ29sdW1ucykKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfU0FN
UExFUl9DVUJFLCBuYW1lLCBjb25zdGFudERlc2NyaXB0aW9uLkVsZW1lbnRzKTsKKyAgICAgICAg
ICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfU0FNUExFUl9DVUJFLCBfbmFtZSwg
Y29uc3RhbnREZXNjcmlwdGlvbi5FbGVtZW50cyk7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICBjYXNlIEQzRFhQVF9CT09MOgogICAgICAgICAgICAgc3dpdGNoIChjb25zdGFudERlc2NyaXB0
aW9uLkNvbHVtbnMpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgMTogcmV0dXJu
IG5ldyBVbmlmb3JtKEdMX0JPT0wsIG5hbWUsIGNvbnN0YW50RGVzY3JpcHRpb24uRWxlbWVudHMp
OwotICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgVW5pZm9ybShHTF9CT09MX1ZFQzIs
IG5hbWUsIGNvbnN0YW50RGVzY3JpcHRpb24uRWxlbWVudHMpOwotICAgICAgICAgICAgICBjYXNl
IDM6IHJldHVybiBuZXcgVW5pZm9ybShHTF9CT09MX1ZFQzMsIG5hbWUsIGNvbnN0YW50RGVzY3Jp
cHRpb24uRWxlbWVudHMpOwotICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBuZXcgVW5pZm9y
bShHTF9CT09MX1ZFQzQsIG5hbWUsIGNvbnN0YW50RGVzY3JpcHRpb24uRWxlbWVudHMpOworICAg
ICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgVW5pZm9ybShHTF9CT09MLCBfbmFtZSwgY29u
c3RhbnREZXNjcmlwdGlvbi5FbGVtZW50cyk7CisgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJu
IG5ldyBVbmlmb3JtKEdMX0JPT0xfVkVDMiwgX25hbWUsIGNvbnN0YW50RGVzY3JpcHRpb24uRWxl
bWVudHMpOworICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBuZXcgVW5pZm9ybShHTF9CT09M
X1ZFQzMsIF9uYW1lLCBjb25zdGFudERlc2NyaXB0aW9uLkVsZW1lbnRzKTsKKyAgICAgICAgICAg
ICAgY2FzZSA0OiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfQk9PTF9WRUM0LCBfbmFtZSwgY29uc3Rh
bnREZXNjcmlwdGlvbi5FbGVtZW50cyk7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNl
IEQzRFhQVF9JTlQ6CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0YW50RGVzY3JpcHRpb24uQ29s
dW1ucykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFVu
aWZvcm0oR0xfSU5ULCBuYW1lLCBjb25zdGFudERlc2NyaXB0aW9uLkVsZW1lbnRzKTsKLSAgICAg
ICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfSU5UX1ZFQzIsIG5hbWUsIGNv
bnN0YW50RGVzY3JpcHRpb24uRWxlbWVudHMpOwotICAgICAgICAgICAgICBjYXNlIDM6IHJldHVy
biBuZXcgVW5pZm9ybShHTF9JTlRfVkVDMywgbmFtZSwgY29uc3RhbnREZXNjcmlwdGlvbi5FbGVt
ZW50cyk7Ci0gICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBVbmlmb3JtKEdMX0lOVF9W
RUM0LCBuYW1lLCBjb25zdGFudERlc2NyaXB0aW9uLkVsZW1lbnRzKTsKKyAgICAgICAgICAgICAg
Y2FzZSAxOiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfSU5ULCBfbmFtZSwgY29uc3RhbnREZXNjcmlw
dGlvbi5FbGVtZW50cyk7CisgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBVbmlmb3Jt
KEdMX0lOVF9WRUMyLCBfbmFtZSwgY29uc3RhbnREZXNjcmlwdGlvbi5FbGVtZW50cyk7CisgICAg
ICAgICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBVbmlmb3JtKEdMX0lOVF9WRUMzLCBfbmFtZSwg
Y29uc3RhbnREZXNjcmlwdGlvbi5FbGVtZW50cyk7CisgICAgICAgICAgICAgIGNhc2UgNDogcmV0
dXJuIG5ldyBVbmlmb3JtKEdMX0lOVF9WRUM0LCBfbmFtZSwgY29uc3RhbnREZXNjcmlwdGlvbi5F
bGVtZW50cyk7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIEQzRFhQVF9GTE9BVDoK
ICAgICAgICAgICAgIHN3aXRjaCAoY29uc3RhbnREZXNjcmlwdGlvbi5Db2x1bW5zKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgVW5pZm9ybShHTF9GTE9B
VCwgbmFtZSwgY29uc3RhbnREZXNjcmlwdGlvbi5FbGVtZW50cyk7Ci0gICAgICAgICAgICAgIGNh
c2UgMjogcmV0dXJuIG5ldyBVbmlmb3JtKEdMX0ZMT0FUX1ZFQzIsIG5hbWUsIGNvbnN0YW50RGVz
Y3JpcHRpb24uRWxlbWVudHMpOwotICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBuZXcgVW5p
Zm9ybShHTF9GTE9BVF9WRUMzLCBuYW1lLCBjb25zdGFudERlc2NyaXB0aW9uLkVsZW1lbnRzKTsK
LSAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfRkxPQVRfVkVDNCwg
bmFtZSwgY29uc3RhbnREZXNjcmlwdGlvbi5FbGVtZW50cyk7CisgICAgICAgICAgICAgIGNhc2Ug
MTogcmV0dXJuIG5ldyBVbmlmb3JtKEdMX0ZMT0FULCBfbmFtZSwgY29uc3RhbnREZXNjcmlwdGlv
bi5FbGVtZW50cyk7CisgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBVbmlmb3JtKEdM
X0ZMT0FUX1ZFQzIsIF9uYW1lLCBjb25zdGFudERlc2NyaXB0aW9uLkVsZW1lbnRzKTsKKyAgICAg
ICAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfRkxPQVRfVkVDMywgX25hbWUs
IGNvbnN0YW50RGVzY3JpcHRpb24uRWxlbWVudHMpOworICAgICAgICAgICAgICBjYXNlIDQ6IHJl
dHVybiBuZXcgVW5pZm9ybShHTF9GTE9BVF9WRUM0LCBfbmFtZSwgY29uc3RhbnREZXNjcmlwdGlv
bi5FbGVtZW50cyk7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4ODMsOSArMjA0NCw5IEBAIFVuaWZv
cm0gKlByb2dyYW06OmNyZWF0ZVVuaWZvcm0oY29uc3QgRDNEWENPTlNUQU5UX0RFU0MgJmNvbnN0
YW50RGVzY3JpcHRpb24sIHN0CiAgICAgICAgICAgY2FzZSBEM0RYUFRfRkxPQVQ6CiAgICAgICAg
ICAgICBzd2l0Y2ggKGNvbnN0YW50RGVzY3JpcHRpb24uUm93cykKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfRkxPQVRfTUFUMiwgbmFt
ZSwgY29uc3RhbnREZXNjcmlwdGlvbi5FbGVtZW50cyk7Ci0gICAgICAgICAgICAgIGNhc2UgMzog
cmV0dXJuIG5ldyBVbmlmb3JtKEdMX0ZMT0FUX01BVDMsIG5hbWUsIGNvbnN0YW50RGVzY3JpcHRp
b24uRWxlbWVudHMpOwotICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBuZXcgVW5pZm9ybShH
TF9GTE9BVF9NQVQ0LCBuYW1lLCBjb25zdGFudERlc2NyaXB0aW9uLkVsZW1lbnRzKTsKKyAgICAg
ICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IFVuaWZvcm0oR0xfRkxPQVRfTUFUMiwgX25hbWUs
IGNvbnN0YW50RGVzY3JpcHRpb24uRWxlbWVudHMpOworICAgICAgICAgICAgICBjYXNlIDM6IHJl
dHVybiBuZXcgVW5pZm9ybShHTF9GTE9BVF9NQVQzLCBfbmFtZSwgY29uc3RhbnREZXNjcmlwdGlv
bi5FbGVtZW50cyk7CisgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBVbmlmb3JtKEdM
X0ZMT0FUX01BVDQsIF9uYW1lLCBjb25zdGFudERlc2NyaXB0aW9uLkVsZW1lbnRzKTsKICAgICAg
ICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTg5OCw0MDYgKzIwNTksMTI1IEBAIFVuaWZvcm0gKlByb2dyYW06OmNy
ZWF0ZVVuaWZvcm0oY29uc3QgRDNEWENPTlNUQU5UX0RFU0MgJmNvbnN0YW50RGVzY3JpcHRpb24s
IHN0CiB9CiAKIC8vIFRoaXMgbWV0aG9kIG5lZWRzIHRvIG1hdGNoIE91dHB1dEhMU0w6OmRlY29y
YXRlCi1zdGQ6OnN0cmluZyBQcm9ncmFtOjpkZWNvcmF0ZShjb25zdCBzdGQ6OnN0cmluZyAmc3Ry
aW5nKQorc3RkOjpzdHJpbmcgUHJvZ3JhbTo6ZGVjb3JhdGVBdHRyaWJ1dGUoY29uc3Qgc3RkOjpz
dHJpbmcgJm5hbWUpCiB7Ci0gICAgaWYgKHN0cmluZy5zdWJzdHIoMCwgMykgIT0gImdsXyIgJiYg
c3RyaW5nLnN1YnN0cigwLCAzKSAhPSAiZHhfIikKLSAgICB7Ci0gICAgICAgIHJldHVybiAiXyIg
KyBzdHJpbmc7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdHJpbmc7
Ci0gICAgfQotfQotCi1zdGQ6OnN0cmluZyBQcm9ncmFtOjp1bmRlY29yYXRlKGNvbnN0IHN0ZDo6
c3RyaW5nICZzdHJpbmcpCi17Ci0gICAgaWYgKHN0cmluZy5zdWJzdHIoMCwgMSkgPT0gIl8iKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMSk7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgfQotfQotCi1ib29sIFByb2dyYW06
OmFwcGx5VW5pZm9ybTFidihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xi
b29sZWFuICp2KQotewotICAgIEJPT0wgKnZlY3RvciA9IG5ldyBCT09MW2NvdW50XTsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgewotICAgICAgICBpZiAodltpXSA9
PSBHTF9GQUxTRSkKLSAgICAgICAgICAgIHZlY3RvcltpXSA9IDA7Ci0gICAgICAgIGVsc2UgCi0g
ICAgICAgICAgICB2ZWN0b3JbaV0gPSAxOwotICAgIH0KLQotICAgIFVuaWZvcm0gKnRhcmdldFVu
aWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOwotCi0gICAg
RDNEWEhBTkRMRSBjb25zdGFudFBTOwotICAgIEQzRFhIQU5ETEUgY29uc3RhbnRWUzsKLSAgICBn
ZXRDb25zdGFudEhhbmRsZXModGFyZ2V0VW5pZm9ybSwgJmNvbnN0YW50UFMsICZjb25zdGFudFZT
KTsKLQotICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwotCi0gICAg
aWYgKGNvbnN0YW50UFMpCisgICAgaWYgKG5hbWUuY29tcGFyZSgwLCAzLCAiZ2xfIikgIT0gMCAm
JiBuYW1lLmNvbXBhcmUoMCwgMywgImR4XyIpICE9IDApCiAgICAgewotICAgICAgICBtQ29uc3Rh
bnRUYWJsZVBTLT5TZXRCb29sQXJyYXkoZGV2aWNlLCBjb25zdGFudFBTLCB2ZWN0b3IsIGNvdW50
KTsKKyAgICAgICAgcmV0dXJuICJfIiArIG5hbWU7CiAgICAgfQotCi0gICAgaWYgKGNvbnN0YW50
VlMpCi0gICAgewotICAgICAgICBtQ29uc3RhbnRUYWJsZVZTLT5TZXRCb29sQXJyYXkoZGV2aWNl
LCBjb25zdGFudFZTLCB2ZWN0b3IsIGNvdW50KTsKLSAgICB9Ci0KLSAgICBkZWxldGUgW10gdmVj
dG9yOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIG5hbWU7CiB9CiAKLWJv
b2wgUHJvZ3JhbTo6YXBwbHlVbmlmb3JtMmJ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGJvb2xlYW4gKnYpCitzdGQ6OnN0cmluZyBQcm9ncmFtOjp1bmRlY29yYXRlVW5p
Zm9ybShjb25zdCBzdGQ6OnN0cmluZyAmX25hbWUpCiB7Ci0gICAgRDNEWFZFQ1RPUjQgKnZlY3Rv
ciA9IG5ldyBEM0RYVkVDVE9SNFtjb3VudF07Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyBpKyspCi0gICAgewotICAgICAgICB2ZWN0b3JbaV0gPSBEM0RYVkVDVE9SNCgodlswXSA9
PSBHTF9GQUxTRSA/IDAuMGYgOiAxLjBmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHZbMV0gPT0gR0xfRkFMU0UgPyAwLjBmIDogMS4wZiksIDAsIDApOwotCi0gICAgICAgIHYg
Kz0gMjsKLSAgICB9Ci0KLSAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21V
bmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKLQotICAgIEQzRFhIQU5ETEUgY29uc3RhbnRQ
UzsKLSAgICBEM0RYSEFORExFIGNvbnN0YW50VlM7Ci0gICAgZ2V0Q29uc3RhbnRIYW5kbGVzKHRh
cmdldFVuaWZvcm0sICZjb25zdGFudFBTLCAmY29uc3RhbnRWUyk7Ci0gICAgSURpcmVjdDNERGV2
aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7Ci0KLSAgICBpZiAoY29uc3RhbnRQUykKKyAgICBp
ZiAoX25hbWVbMF0gPT0gJ18nKQogICAgIHsKLSAgICAgICAgbUNvbnN0YW50VGFibGVQUy0+U2V0
VmVjdG9yQXJyYXkoZGV2aWNlLCBjb25zdGFudFBTLCB2ZWN0b3IsIGNvdW50KTsKKyAgICAgICAg
cmV0dXJuIF9uYW1lLnN1YnN0cigxKTsKICAgICB9Ci0KLSAgICBpZiAoY29uc3RhbnRWUykKKyAg
ICBlbHNlIGlmIChfbmFtZS5jb21wYXJlKDAsIDMsICJhcl8iKSA9PSAwKQogICAgIHsKLSAgICAg
ICAgbUNvbnN0YW50VGFibGVWUy0+U2V0VmVjdG9yQXJyYXkoZGV2aWNlLCBjb25zdGFudFZTLCB2
ZWN0b3IsIGNvdW50KTsKKyAgICAgICAgcmV0dXJuIF9uYW1lLnN1YnN0cigzKTsKICAgICB9Ci0K
LSAgICBkZWxldGVbXSB2ZWN0b3I7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1
cm4gX25hbWU7CiB9CiAKLWJvb2wgUHJvZ3JhbTo6YXBwbHlVbmlmb3JtM2J2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGJvb2xlYW4gKnYpCit2b2lkIFByb2dyYW06OmFw
cGx5VW5pZm9ybW5idihVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBHTHNpemVpIGNvdW50LCBpbnQg
d2lkdGgsIGNvbnN0IEdMYm9vbGVhbiAqdikKIHsKLSAgICBEM0RYVkVDVE9SNCAqdmVjdG9yID0g
bmV3IEQzRFhWRUNUT1I0W2NvdW50XTsKKyAgICBmbG9hdCAqdmVjdG9yID0gTlVMTDsKKyAgICBC
T09MICpib29sVmVjdG9yID0gTlVMTDsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7
IGkrKykKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+cHMucmVnaXN0ZXJDb3VudCAmJiB0YXJnZXRV
bmlmb3JtLT5wcy5yZWdpc3RlclNldCA9PSBEM0RYUlNfRkxPQVQ0IHx8CisgICAgICAgIHRhcmdl
dFVuaWZvcm0tPnZzLnJlZ2lzdGVyQ291bnQgJiYgdGFyZ2V0VW5pZm9ybS0+dnMucmVnaXN0ZXJT
ZXQgPT0gRDNEWFJTX0ZMT0FUNCkKICAgICB7Ci0gICAgICAgIHZlY3RvcltpXSA9IEQzRFhWRUNU
T1I0KCh2WzBdID09IEdMX0ZBTFNFID8gMC4wZiA6IDEuMGYpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAodlsxXSA9PSBHTF9GQUxTRSA/IDAuMGYgOiAxLjBmKSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh2WzJdID09IEdMX0ZBTFNFID8gMC4wZiA6IDEuMGYp
LCAwKTsKLQotICAgICAgICB2ICs9IDM7Ci0gICAgfQotCi0gICAgVW5pZm9ybSAqdGFyZ2V0VW5p
Zm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07Ci0KLSAgICBE
M0RYSEFORExFIGNvbnN0YW50UFM7Ci0gICAgRDNEWEhBTkRMRSBjb25zdGFudFZTOwotICAgIGdl
dENvbnN0YW50SGFuZGxlcyh0YXJnZXRVbmlmb3JtLCAmY29uc3RhbnRQUywgJmNvbnN0YW50VlMp
OwotICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOworICAgICAgICB2
ZWN0b3IgPSBuZXcgZmxvYXRbNCAqIGNvdW50XTsKIAotICAgIGlmIChjb25zdGFudFBTKQotICAg
IHsKLSAgICAgICAgbUNvbnN0YW50VGFibGVQUy0+U2V0VmVjdG9yQXJyYXkoZGV2aWNlLCBjb25z
dGFudFBTLCB2ZWN0b3IsIGNvdW50KTsKLSAgICB9Ci0KLSAgICBpZiAoY29uc3RhbnRWUykKLSAg
ICB7Ci0gICAgICAgIG1Db25zdGFudFRhYmxlVlMtPlNldFZlY3RvckFycmF5KGRldmljZSwgY29u
c3RhbnRWUywgdmVjdG9yLCBjb3VudCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCA0OyBq
KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGogPCB3aWR0aCkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHZlY3RvcltpICogNCArIGpdID0gKHZb
aSAqIHdpZHRoICsgal0gPT0gR0xfRkFMU0UpID8gMC4wZiA6IDEuMGY7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHZlY3RvcltpICogNCArIGpdID0gMC4wZjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKLSAgICBkZWxldGVbXSB2ZWN0b3I7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBQcm9ncmFtOjphcHBseVVuaWZvcm00YnYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMYm9vbGVhbiAqdikKLXsKLSAgICBE
M0RYVkVDVE9SNCAqdmVjdG9yID0gbmV3IEQzRFhWRUNUT1I0W2NvdW50XTsKLQotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+cHMucmVn
aXN0ZXJDb3VudCAmJiB0YXJnZXRVbmlmb3JtLT5wcy5yZWdpc3RlclNldCA9PSBEM0RYUlNfQk9P
TCB8fAorICAgICAgICB0YXJnZXRVbmlmb3JtLT52cy5yZWdpc3RlckNvdW50ICYmIHRhcmdldFVu
aWZvcm0tPnZzLnJlZ2lzdGVyU2V0ID09IEQzRFhSU19CT09MKQogICAgIHsKLSAgICAgICAgdmVj
dG9yW2ldID0gRDNEWFZFQ1RPUjQoKHZbMF0gPT0gR0xfRkFMU0UgPyAwLjBmIDogMS4wZiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2WzFdID09IEdMX0ZBTFNFID8gMC4wZiA6
IDEuMGYpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZbMl0gPT0gR0xfRkFM
U0UgPyAwLjBmIDogMS4wZiksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodlsz
XSA9PSBHTF9GQUxTRSA/IDAuMGYgOiAxLjBmKSk7Ci0KLSAgICAgICAgdiArPSAzOworICAgICAg
ICBib29sVmVjdG9yID0gbmV3IEJPT0xbY291bnQgKiB3aWR0aF07CisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgY291bnQgKiB3aWR0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBi
b29sVmVjdG9yW2ldID0gdltpXSAhPSBHTF9GQUxTRTsKKyAgICAgICAgfQogICAgIH0KIAotICAg
IFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlv
bl0uaW5kZXhdOwotCi0gICAgRDNEWEhBTkRMRSBjb25zdGFudFBTOwotICAgIEQzRFhIQU5ETEUg
Y29uc3RhbnRWUzsKLSAgICBnZXRDb25zdGFudEhhbmRsZXModGFyZ2V0VW5pZm9ybSwgJmNvbnN0
YW50UFMsICZjb25zdGFudFZTKTsKLSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXRE
ZXZpY2UoKTsKLQotICAgIGlmIChjb25zdGFudFBTKQorICAgIGlmICh0YXJnZXRVbmlmb3JtLT5w
cy5yZWdpc3RlckNvdW50KQogICAgIHsKLSAgICAgICAgbUNvbnN0YW50VGFibGVQUy0+U2V0VmVj
dG9yQXJyYXkoZGV2aWNlLCBjb25zdGFudFBTLCB2ZWN0b3IsIGNvdW50KTsKKyAgICAgICAgaWYg
KHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVyU2V0ID09IEQzRFhSU19GTE9BVDQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFBpeGVsU2hhZGVyQ29uc3RhbnRGKHRhcmdldFVu
aWZvcm0tPnBzLnJlZ2lzdGVySW5kZXgsIHZlY3RvciwgdGFyZ2V0VW5pZm9ybS0+cHMucmVnaXN0
ZXJDb3VudCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAodGFyZ2V0VW5pZm9ybS0+cHMu
cmVnaXN0ZXJTZXQgPT0gRDNEWFJTX0JPT0wpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFBpeGVsU2hhZGVyQ29uc3RhbnRCKHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVySW5k
ZXgsIGJvb2xWZWN0b3IsIHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVyQ291bnQpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKLSAgICBpZiAoY29uc3Rh
bnRWUykKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dnMucmVnaXN0ZXJDb3VudCkKICAgICB7Ci0g
ICAgICAgIG1Db25zdGFudFRhYmxlVlMtPlNldFZlY3RvckFycmF5KGRldmljZSwgY29uc3RhbnRW
UywgdmVjdG9yLCBjb3VudCk7CisgICAgICAgIGlmICh0YXJnZXRVbmlmb3JtLT52cy5yZWdpc3Rl
clNldCA9PSBEM0RYUlNfRkxPQVQ0KQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5T
ZXRWZXJ0ZXhTaGFkZXJDb25zdGFudEYodGFyZ2V0VW5pZm9ybS0+dnMucmVnaXN0ZXJJbmRleCwg
dmVjdG9yLCB0YXJnZXRVbmlmb3JtLT52cy5yZWdpc3RlckNvdW50KTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIGlmICh0YXJnZXRVbmlmb3JtLT52cy5yZWdpc3RlclNldCA9PSBEM0RYUlNfQk9P
TCkKKyAgICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0VmVydGV4U2hhZGVyQ29uc3Rh
bnRCKHRhcmdldFVuaWZvcm0tPnZzLnJlZ2lzdGVySW5kZXgsIGJvb2xWZWN0b3IsIHRhcmdldFVu
aWZvcm0tPnZzLnJlZ2lzdGVyQ291bnQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgVU5SRUFD
SEFCTEUoKTsKICAgICB9CiAKICAgICBkZWxldGUgW10gdmVjdG9yOwotCi0gICAgcmV0dXJuIHRy
dWU7CisgICAgZGVsZXRlIFtdIGJvb2xWZWN0b3I7CiB9CiAKLWJvb2wgUHJvZ3JhbTo6YXBwbHlV
bmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
KQorYm9vbCBQcm9ncmFtOjphcHBseVVuaWZvcm1uZnYoVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwg
Y29uc3QgR0xmbG9hdCAqdikKIHsKLSAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZv
cm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKLQotICAgIEQzRFhIQU5ETEUgY29u
c3RhbnRQUzsKLSAgICBEM0RYSEFORExFIGNvbnN0YW50VlM7Ci0gICAgZ2V0Q29uc3RhbnRIYW5k
bGVzKHRhcmdldFVuaWZvcm0sICZjb25zdGFudFBTLCAmY29uc3RhbnRWUyk7Ci0gICAgSURpcmVj
dDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7Ci0KLSAgICBpZiAoY29uc3RhbnRQUykK
LSAgICB7Ci0gICAgICAgIG1Db25zdGFudFRhYmxlUFMtPlNldEZsb2F0QXJyYXkoZGV2aWNlLCBj
b25zdGFudFBTLCB2LCBjb3VudCk7Ci0gICAgfQotCi0gICAgaWYgKGNvbnN0YW50VlMpCi0gICAg
ewotICAgICAgICBtQ29uc3RhbnRUYWJsZVZTLT5TZXRGbG9hdEFycmF5KGRldmljZSwgY29uc3Rh
bnRWUywgdiwgY291bnQpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFBy
b2dyYW06OmFwcGx5VW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCAqdikKLXsKLSAgICBEM0RYVkVDVE9SNCAqdmVjdG9yID0gbmV3IEQzRFhWRUNU
T1I0W2NvdW50XTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICB7
Ci0gICAgICAgIHZlY3RvcltpXSA9IEQzRFhWRUNUT1I0KHZbMF0sIHZbMV0sIDAsIDApOwotCi0g
ICAgICAgIHYgKz0gMjsKLSAgICB9Ci0KLSAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVu
aWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKLQotICAgIEQzRFhIQU5ETEUg
Y29uc3RhbnRQUzsKLSAgICBEM0RYSEFORExFIGNvbnN0YW50VlM7Ci0gICAgZ2V0Q29uc3RhbnRI
YW5kbGVzKHRhcmdldFVuaWZvcm0sICZjb25zdGFudFBTLCAmY29uc3RhbnRWUyk7Ci0gICAgSURp
cmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7Ci0KLSAgICBpZiAoY29uc3RhbnRQ
UykKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+cHMucmVnaXN0ZXJDb3VudCkKICAgICB7Ci0gICAg
ICAgIG1Db25zdGFudFRhYmxlUFMtPlNldFZlY3RvckFycmF5KGRldmljZSwgY29uc3RhbnRQUywg
dmVjdG9yLCBjb3VudCk7CisgICAgICAgIG1EZXZpY2UtPlNldFBpeGVsU2hhZGVyQ29uc3RhbnRG
KHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVySW5kZXgsIHYsIHRhcmdldFVuaWZvcm0tPnBzLnJl
Z2lzdGVyQ291bnQpOwogICAgIH0KIAotICAgIGlmIChjb25zdGFudFZTKQorICAgIGlmICh0YXJn
ZXRVbmlmb3JtLT52cy5yZWdpc3RlckNvdW50KQogICAgIHsKLSAgICAgICAgbUNvbnN0YW50VGFi
bGVWUy0+U2V0VmVjdG9yQXJyYXkoZGV2aWNlLCBjb25zdGFudFZTLCB2ZWN0b3IsIGNvdW50KTsK
KyAgICAgICAgbURldmljZS0+U2V0VmVydGV4U2hhZGVyQ29uc3RhbnRGKHRhcmdldFVuaWZvcm0t
PnZzLnJlZ2lzdGVySW5kZXgsIHYsIHRhcmdldFVuaWZvcm0tPnZzLnJlZ2lzdGVyQ291bnQpOwog
ICAgIH0KIAotICAgIGRlbGV0ZVtdIHZlY3RvcjsKLQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFByb2dyYW06OmFwcGx5VW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xmbG9hdCAqdikKK2Jvb2wgUHJvZ3JhbTo6YXBwbHlVbmlmb3JtMWl2KFVuaWZv
cm0gKnRhcmdldFVuaWZvcm0sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogewogICAg
IEQzRFhWRUNUT1I0ICp2ZWN0b3IgPSBuZXcgRDNEWFZFQ1RPUjRbY291bnRdOwogCiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgIHsKLSAgICAgICAgdmVjdG9yW2ldID0g
RDNEWFZFQ1RPUjQodlswXSwgdlsxXSwgdlsyXSwgMCk7Ci0KLSAgICAgICAgdiArPSAzOwotICAg
IH0KLQotICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRl
eFtsb2NhdGlvbl0uaW5kZXhdOwotCi0gICAgRDNEWEhBTkRMRSBjb25zdGFudFBTOwotICAgIEQz
RFhIQU5ETEUgY29uc3RhbnRWUzsKLSAgICBnZXRDb25zdGFudEhhbmRsZXModGFyZ2V0VW5pZm9y
bSwgJmNvbnN0YW50UFMsICZjb25zdGFudFZTKTsKLSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZp
Y2UgPSBnZXREZXZpY2UoKTsKLQotICAgIGlmIChjb25zdGFudFBTKQotICAgIHsKLSAgICAgICAg
bUNvbnN0YW50VGFibGVQUy0+U2V0VmVjdG9yQXJyYXkoZGV2aWNlLCBjb25zdGFudFBTLCB2ZWN0
b3IsIGNvdW50KTsKLSAgICB9Ci0KLSAgICBpZiAoY29uc3RhbnRWUykKLSAgICB7Ci0gICAgICAg
IG1Db25zdGFudFRhYmxlVlMtPlNldFZlY3RvckFycmF5KGRldmljZSwgY29uc3RhbnRWUywgdmVj
dG9yLCBjb3VudCk7Ci0gICAgfQotCi0gICAgZGVsZXRlW10gdmVjdG9yOwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgUHJvZ3JhbTo6YXBwbHlVbmlmb3JtNGZ2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQotewotICAgIFVuaWZvcm0gKnRhcmdl
dFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOwotCi0g
ICAgRDNEWEhBTkRMRSBjb25zdGFudFBTOwotICAgIEQzRFhIQU5ETEUgY29uc3RhbnRWUzsKLSAg
ICBnZXRDb25zdGFudEhhbmRsZXModGFyZ2V0VW5pZm9ybSwgJmNvbnN0YW50UFMsICZjb25zdGFu
dFZTKTsKLSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKLQotICAg
IGlmIChjb25zdGFudFBTKQotICAgIHsKLSAgICAgICAgbUNvbnN0YW50VGFibGVQUy0+U2V0VmVj
dG9yQXJyYXkoZGV2aWNlLCBjb25zdGFudFBTLCAoRDNEWFZFQ1RPUjQqKXYsIGNvdW50KTsKLSAg
ICB9Ci0KLSAgICBpZiAoY29uc3RhbnRWUykKLSAgICB7Ci0gICAgICAgIG1Db25zdGFudFRhYmxl
VlMtPlNldFZlY3RvckFycmF5KGRldmljZSwgY29uc3RhbnRWUywgKEQzRFhWRUNUT1I0Kil2LCBj
b3VudCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUHJvZ3JhbTo6YXBw
bHlVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKLXsKLSAgICBEM0RYTUFUUklYICptYXRyaXggPSBuZXcgRDNEWE1BVFJJ
WFtjb3VudF07Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgewot
ICAgICAgICBtYXRyaXhbaV0gPSBEM0RYTUFUUklYKHZhbHVlWzBdLCB2YWx1ZVsyXSwgMCwgMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVsxXSwgdmFsdWVbM10sIDAsIDAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgIDAsICAgICAgICAxLCAw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAwLCAgICAgICAgMCwg
MSk7Ci0KLSAgICAgICAgdmFsdWUgKz0gNDsKLSAgICB9Ci0KLSAgICBVbmlmb3JtICp0YXJnZXRV
bmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKLQotICAg
IEQzRFhIQU5ETEUgY29uc3RhbnRQUzsKLSAgICBEM0RYSEFORExFIGNvbnN0YW50VlM7Ci0gICAg
Z2V0Q29uc3RhbnRIYW5kbGVzKHRhcmdldFVuaWZvcm0sICZjb25zdGFudFBTLCAmY29uc3RhbnRW
Uyk7Ci0gICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7Ci0KLSAgICBp
ZiAoY29uc3RhbnRQUykKLSAgICB7Ci0gICAgICAgIG1Db25zdGFudFRhYmxlUFMtPlNldE1hdHJp
eFRyYW5zcG9zZUFycmF5KGRldmljZSwgY29uc3RhbnRQUywgbWF0cml4LCBjb3VudCk7Ci0gICAg
fQotCi0gICAgaWYgKGNvbnN0YW50VlMpCi0gICAgewotICAgICAgICBtQ29uc3RhbnRUYWJsZVZT
LT5TZXRNYXRyaXhUcmFuc3Bvc2VBcnJheShkZXZpY2UsIGNvbnN0YW50VlMsIG1hdHJpeCwgY291
bnQpOwotICAgIH0KLQotICAgIGRlbGV0ZVtdIG1hdHJpeDsKLQotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIFByb2dyYW06OmFwcGx5VW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCi17Ci0gICAgRDNEWE1BVFJJWCAq
bWF0cml4ID0gbmV3IEQzRFhNQVRSSVhbY291bnRdOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgbWF0cml4W2ldID0gRDNEWE1BVFJJWCh2YWx1
ZVswXSwgdmFsdWVbM10sIHZhbHVlWzZdLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlWzFdLCB2YWx1ZVs0XSwgdmFsdWVbN10sIDAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWVbMl0sIHZhbHVlWzVdLCB2YWx1ZVs4XSwgMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAgMCwgICAgICAgIDAsICAgICAgICAxKTsKLQot
ICAgICAgICB2YWx1ZSArPSA5OwotICAgIH0KLQotICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0g
PSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOwotCi0gICAgRDNEWEhB
TkRMRSBjb25zdGFudFBTOwotICAgIEQzRFhIQU5ETEUgY29uc3RhbnRWUzsKLSAgICBnZXRDb25z
dGFudEhhbmRsZXModGFyZ2V0VW5pZm9ybSwgJmNvbnN0YW50UFMsICZjb25zdGFudFZTKTsKLSAg
ICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKLQotICAgIGlmIChjb25z
dGFudFBTKQotICAgIHsKLSAgICAgICAgbUNvbnN0YW50VGFibGVQUy0+U2V0TWF0cml4VHJhbnNw
b3NlQXJyYXkoZGV2aWNlLCBjb25zdGFudFBTLCBtYXRyaXgsIGNvdW50KTsKLSAgICB9Ci0KLSAg
ICBpZiAoY29uc3RhbnRWUykKLSAgICB7Ci0gICAgICAgIG1Db25zdGFudFRhYmxlVlMtPlNldE1h
dHJpeFRyYW5zcG9zZUFycmF5KGRldmljZSwgY29uc3RhbnRWUywgbWF0cml4LCBjb3VudCk7Ci0g
ICAgfQotCi0gICAgZGVsZXRlW10gbWF0cml4OwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgUHJvZ3JhbTo6YXBwbHlVbmlmb3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKLXsKLSAgICBEM0RYTUFUUklYICptYXRyaXgg
PSBuZXcgRDNEWE1BVFJJWFtjb3VudF07Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50
OyBpKyspCi0gICAgewotICAgICAgICBtYXRyaXhbaV0gPSBEM0RYTUFUUklYKHZhbHVlWzBdLCB2
YWx1ZVs0XSwgdmFsdWVbOF0sICB2YWx1ZVsxMl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWVbMV0sIHZhbHVlWzVdLCB2YWx1ZVs5XSwgIHZhbHVlWzEzXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVsyXSwgdmFsdWVbNl0sIHZhbHVlWzEwXSwgdmFs
dWVbMTRdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlWzNdLCB2YWx1ZVs3
XSwgdmFsdWVbMTFdLCB2YWx1ZVsxNV0pOwotCi0gICAgICAgIHZhbHVlICs9IDE2OworICAgICAg
ICB2ZWN0b3JbaV0gPSBEM0RYVkVDVE9SNCgoZmxvYXQpdltpXSwgMCwgMCwgMCk7CiAgICAgfQog
Ci0gICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xv
Y2F0aW9uXS5pbmRleF07Ci0KLSAgICBEM0RYSEFORExFIGNvbnN0YW50UFM7Ci0gICAgRDNEWEhB
TkRMRSBjb25zdGFudFZTOwotICAgIGdldENvbnN0YW50SGFuZGxlcyh0YXJnZXRVbmlmb3JtLCAm
Y29uc3RhbnRQUywgJmNvbnN0YW50VlMpOwotICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9
IGdldERldmljZSgpOwotCi0gICAgaWYgKGNvbnN0YW50UFMpCi0gICAgewotICAgICAgICBtQ29u
c3RhbnRUYWJsZVBTLT5TZXRNYXRyaXhUcmFuc3Bvc2VBcnJheShkZXZpY2UsIGNvbnN0YW50UFMs
IG1hdHJpeCwgY291bnQpOwotICAgIH0KLQotICAgIGlmIChjb25zdGFudFZTKQotICAgIHsKLSAg
ICAgICAgbUNvbnN0YW50VGFibGVWUy0+U2V0TWF0cml4VHJhbnNwb3NlQXJyYXkoZGV2aWNlLCBj
b25zdGFudFZTLCBtYXRyaXgsIGNvdW50KTsKLSAgICB9Ci0KLSAgICBkZWxldGVbXSBtYXRyaXg7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBQcm9ncmFtOjphcHBseVVuaWZvcm0xaXYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQotewotICAgIFVu
aWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0u
aW5kZXhdOwotCi0gICAgRDNEWEhBTkRMRSBjb25zdGFudFBTOwotICAgIEQzRFhIQU5ETEUgY29u
c3RhbnRWUzsKLSAgICBnZXRDb25zdGFudEhhbmRsZXModGFyZ2V0VW5pZm9ybSwgJmNvbnN0YW50
UFMsICZjb25zdGFudFZTKTsKLSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZp
Y2UoKTsKLQotICAgIGlmIChjb25zdGFudFBTKQorICAgIGlmICh0YXJnZXRVbmlmb3JtLT5wcy5y
ZWdpc3RlckNvdW50KQogICAgIHsKLSAgICAgICAgRDNEWENPTlNUQU5UX0RFU0MgY29uc3RhbnRE
ZXNjcmlwdGlvbjsKLSAgICAgICAgVUlOVCBkZXNjcmlwdGlvbkNvdW50ID0gMTsKLSAgICAgICAg
SFJFU1VMVCByZXN1bHQgPSBtQ29uc3RhbnRUYWJsZVBTLT5HZXRDb25zdGFudERlc2MoY29uc3Rh
bnRQUywgJmNvbnN0YW50RGVzY3JpcHRpb24sICZkZXNjcmlwdGlvbkNvdW50KTsKLSAgICAgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLQotICAgICAgICBpZiAoY29uc3RhbnREZXNjcmlw
dGlvbi5SZWdpc3RlclNldCA9PSBEM0RYUlNfU0FNUExFUikKKyAgICAgICAgaWYgKHRhcmdldFVu
aWZvcm0tPnBzLnJlZ2lzdGVyU2V0ID09IEQzRFhSU19TQU1QTEVSKQogICAgICAgICB7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgZmlyc3RJbmRleCA9IG1Db25zdGFudFRhYmxlUFMtPkdldFNh
bXBsZXJJbmRleChjb25zdGFudFBTKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBmaXJzdElu
ZGV4ID0gdGFyZ2V0VW5pZm9ybS0+cHMucmVnaXN0ZXJJbmRleDsKIAogICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICAgICAgewpAQCAtMjMxMiwyMCAr
MjE5MiwxNiBAQCBib29sIFByb2dyYW06OmFwcGx5VW5pZm9ybTFpdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiAgICAgICAgIH0KICAgICAgICAgZWxzZQog
ICAgICAgICB7Ci0gICAgICAgICAgICBtQ29uc3RhbnRUYWJsZVBTLT5TZXRJbnRBcnJheShkZXZp
Y2UsIGNvbnN0YW50UFMsIHYsIGNvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRVbmlm
b3JtLT5wcy5yZWdpc3RlclNldCA9PSBEM0RYUlNfRkxPQVQ0KTsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFBpeGVsU2hhZGVyQ29uc3RhbnRGKHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVySW5k
ZXgsIChjb25zdCBmbG9hdCopdmVjdG9yLCB0YXJnZXRVbmlmb3JtLT5wcy5yZWdpc3RlckNvdW50
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChjb25zdGFudFZTKQorICAgIGlmICh0YXJn
ZXRVbmlmb3JtLT52cy5yZWdpc3RlckNvdW50KQogICAgIHsKLSAgICAgICAgRDNEWENPTlNUQU5U
X0RFU0MgY29uc3RhbnREZXNjcmlwdGlvbjsKLSAgICAgICAgVUlOVCBkZXNjcmlwdGlvbkNvdW50
ID0gMTsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtQ29uc3RhbnRUYWJsZVZTLT5HZXRDb25z
dGFudERlc2MoY29uc3RhbnRWUywgJmNvbnN0YW50RGVzY3JpcHRpb24sICZkZXNjcmlwdGlvbkNv
dW50KTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLQotICAgICAgICBpZiAo
Y29uc3RhbnREZXNjcmlwdGlvbi5SZWdpc3RlclNldCA9PSBEM0RYUlNfU0FNUExFUikKKyAgICAg
ICAgaWYgKHRhcmdldFVuaWZvcm0tPnZzLnJlZ2lzdGVyU2V0ID09IEQzRFhSU19TQU1QTEVSKQog
ICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmlyc3RJbmRleCA9IG1Db25zdGFu
dFRhYmxlVlMtPkdldFNhbXBsZXJJbmRleChjb25zdGFudFZTKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGludCBmaXJzdEluZGV4ID0gdGFyZ2V0VW5pZm9ybS0+dnMucmVnaXN0ZXJJbmRleDsKIAog
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICAgICAg
ewpAQCAtMjM0MCwxNCArMjIxNiwxNyBAQCBib29sIFByb2dyYW06OmFwcGx5VW5pZm9ybTFpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiAgICAgICAgIH0K
ICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBtQ29uc3RhbnRUYWJsZVZTLT5T
ZXRJbnRBcnJheShkZXZpY2UsIGNvbnN0YW50VlMsIHYsIGNvdW50KTsKKyAgICAgICAgICAgIEFT
U0VSVCh0YXJnZXRVbmlmb3JtLT52cy5yZWdpc3RlclNldCA9PSBEM0RYUlNfRkxPQVQ0KTsKKyAg
ICAgICAgICAgIG1EZXZpY2UtPlNldFZlcnRleFNoYWRlckNvbnN0YW50Rih0YXJnZXRVbmlmb3Jt
LT52cy5yZWdpc3RlckluZGV4LCAoY29uc3QgZmxvYXQgKil2ZWN0b3IsIHRhcmdldFVuaWZvcm0t
PnZzLnJlZ2lzdGVyQ291bnQpOwogICAgICAgICB9CiAgICAgfQogCisgICAgZGVsZXRlIFtdIHZl
Y3RvcjsKKwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFByb2dyYW06OmFwcGx5VW5pZm9y
bTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCitib29s
IFByb2dyYW06OmFwcGx5VW5pZm9ybTJpdihVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGludCAqdikKIHsKICAgICBEM0RYVkVDVE9SNCAqdmVjdG9yID0gbmV3
IEQzRFhWRUNUT1I0W2NvdW50XTsKIApAQCAtMjM1OCwyOSArMjIzNywxNCBAQCBib29sIFByb2dy
YW06OmFwcGx5VW5pZm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnYpCiAgICAgICAgIHYgKz0gMjsKICAgICB9CiAKLSAgICBVbmlmb3JtICp0YXJnZXRV
bmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKLQotICAg
IEQzRFhIQU5ETEUgY29uc3RhbnRQUzsKLSAgICBEM0RYSEFORExFIGNvbnN0YW50VlM7Ci0gICAg
Z2V0Q29uc3RhbnRIYW5kbGVzKHRhcmdldFVuaWZvcm0sICZjb25zdGFudFBTLCAmY29uc3RhbnRW
Uyk7Ci0gICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7Ci0KLSAgICBp
ZiAoY29uc3RhbnRQUykKLSAgICB7Ci0gICAgICAgIG1Db25zdGFudFRhYmxlUFMtPlNldFZlY3Rv
ckFycmF5KGRldmljZSwgY29uc3RhbnRQUywgdmVjdG9yLCBjb3VudCk7Ci0gICAgfQotCi0gICAg
aWYgKGNvbnN0YW50VlMpCi0gICAgewotICAgICAgICBtQ29uc3RhbnRUYWJsZVZTLT5TZXRWZWN0
b3JBcnJheShkZXZpY2UsIGNvbnN0YW50VlMsIHZlY3RvciwgY291bnQpOwotICAgIH0KKyAgICBh
cHBseVVuaWZvcm1uaXYodGFyZ2V0VW5pZm9ybSwgY291bnQsIHZlY3Rvcik7CiAKICAgICBkZWxl
dGVbXSB2ZWN0b3I7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQcm9ncmFtOjphcHBs
eVVuaWZvcm0zaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2
KQorYm9vbCBQcm9ncmFtOjphcHBseVVuaWZvcm0zaXYoVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgRDNEWFZFQ1RPUjQgKnZlY3Rv
ciA9IG5ldyBEM0RYVkVDVE9SNFtjb3VudF07CiAKQEAgLTIzOTEsMjkgKzIyNTUsMTQgQEAgYm9v
bCBQcm9ncmFtOjphcHBseVVuaWZvcm0zaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMaW50ICp2KQogICAgICAgICB2ICs9IDM7CiAgICAgfQogCi0gICAgVW5pZm9ybSAq
dGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07
Ci0KLSAgICBEM0RYSEFORExFIGNvbnN0YW50UFM7Ci0gICAgRDNEWEhBTkRMRSBjb25zdGFudFZT
OwotICAgIGdldENvbnN0YW50SGFuZGxlcyh0YXJnZXRVbmlmb3JtLCAmY29uc3RhbnRQUywgJmNv
bnN0YW50VlMpOwotICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwot
Ci0gICAgaWYgKGNvbnN0YW50UFMpCi0gICAgewotICAgICAgICBtQ29uc3RhbnRUYWJsZVBTLT5T
ZXRWZWN0b3JBcnJheShkZXZpY2UsIGNvbnN0YW50UFMsIHZlY3RvciwgY291bnQpOwotICAgIH0K
LQotICAgIGlmIChjb25zdGFudFZTKQotICAgIHsKLSAgICAgICAgbUNvbnN0YW50VGFibGVWUy0+
U2V0VmVjdG9yQXJyYXkoZGV2aWNlLCBjb25zdGFudFZTLCB2ZWN0b3IsIGNvdW50KTsKLSAgICB9
CisgICAgYXBwbHlVbmlmb3Jtbml2KHRhcmdldFVuaWZvcm0sIGNvdW50LCB2ZWN0b3IpOwogCiAg
ICAgZGVsZXRlW10gdmVjdG9yOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJvZ3Jh
bTo6YXBwbHlVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGludCAqdikKK2Jvb2wgUHJvZ3JhbTo6YXBwbHlVbmlmb3JtNGl2KFVuaWZvcm0gKnRhcmdldFVu
aWZvcm0sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogewogICAgIEQzRFhWRUNUT1I0
ICp2ZWN0b3IgPSBuZXcgRDNEWFZFQ1RPUjRbY291bnRdOwogCkBAIC0yNDI0LDUzICsyMjczLDQ1
IEBAIGJvb2wgUHJvZ3JhbTo6YXBwbHlVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGludCAqdikKICAgICAgICAgdiArPSA0OwogICAgIH0KIAotICAgIFVu
aWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0u
aW5kZXhdOworICAgIGFwcGx5VW5pZm9ybW5pdih0YXJnZXRVbmlmb3JtLCBjb3VudCwgdmVjdG9y
KTsKIAotICAgIEQzRFhIQU5ETEUgY29uc3RhbnRQUzsKLSAgICBEM0RYSEFORExFIGNvbnN0YW50
VlM7Ci0gICAgZ2V0Q29uc3RhbnRIYW5kbGVzKHRhcmdldFVuaWZvcm0sICZjb25zdGFudFBTLCAm
Y29uc3RhbnRWUyk7Ci0gICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7
CisgICAgZGVsZXRlIFtdIHZlY3RvcjsKKworICAgIHJldHVybiB0cnVlOworfQogCi0gICAgaWYg
KGNvbnN0YW50UFMpCit2b2lkIFByb2dyYW06OmFwcGx5VW5pZm9ybW5pdihVbmlmb3JtICp0YXJn
ZXRVbmlmb3JtLCBHTHNpemVpIGNvdW50LCBjb25zdCBEM0RYVkVDVE9SNCAqdmVjdG9yKQorewor
ICAgIGlmICh0YXJnZXRVbmlmb3JtLT5wcy5yZWdpc3RlckNvdW50KQogICAgIHsKLSAgICAgICAg
bUNvbnN0YW50VGFibGVQUy0+U2V0VmVjdG9yQXJyYXkoZGV2aWNlLCBjb25zdGFudFBTLCB2ZWN0
b3IsIGNvdW50KTsKKyAgICAgICAgQVNTRVJUKHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVyU2V0
ID09IEQzRFhSU19GTE9BVDQpOworICAgICAgICBtRGV2aWNlLT5TZXRQaXhlbFNoYWRlckNvbnN0
YW50Rih0YXJnZXRVbmlmb3JtLT5wcy5yZWdpc3RlckluZGV4LCAoY29uc3QgZmxvYXQgKil2ZWN0
b3IsIHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVyQ291bnQpOwogICAgIH0KIAotICAgIGlmIChj
b25zdGFudFZTKQorICAgIGlmICh0YXJnZXRVbmlmb3JtLT52cy5yZWdpc3RlckNvdW50KQogICAg
IHsKLSAgICAgICAgbUNvbnN0YW50VGFibGVWUy0+U2V0VmVjdG9yQXJyYXkoZGV2aWNlLCBjb25z
dGFudFZTLCB2ZWN0b3IsIGNvdW50KTsKKyAgICAgICAgQVNTRVJUKHRhcmdldFVuaWZvcm0tPnZz
LnJlZ2lzdGVyU2V0ID09IEQzRFhSU19GTE9BVDQpOworICAgICAgICBtRGV2aWNlLT5TZXRWZXJ0
ZXhTaGFkZXJDb25zdGFudEYodGFyZ2V0VW5pZm9ybS0+dnMucmVnaXN0ZXJJbmRleCwgKGNvbnN0
IGZsb2F0ICopdmVjdG9yLCB0YXJnZXRVbmlmb3JtLT52cy5yZWdpc3RlckNvdW50KTsKICAgICB9
Ci0KLSAgICBkZWxldGUgW10gdmVjdG9yOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKLQogLy8g
YXBwZW5kIGEgc2FudGl6ZWQgbWVzc2FnZSB0byB0aGUgcHJvZ3JhbSBpbmZvIGxvZy4KLS8vIFRo
ZSBEM0QgY29tcGlsZXIgaW5jbHVkZXMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLS8v
IGluIHNvbWUgb2YgdGhlIHdhcm5pbmcgb3IgZXJyb3IgbWVzc2FnZXMsIHNvIGxldHMgcmVtb3Zl
Ci0vLyBhbnkgb2NjdXJyYW5jZXMgb2YgdGhvc2UgdGhhdCB3ZSBmaW5kIGluIHRoZSBsb2cuCisv
LyBUaGUgRDNEIGNvbXBpbGVyIGluY2x1ZGVzIGEgZmFrZSBmaWxlIHBhdGggaW4gc29tZSBvZiB0
aGUgd2FybmluZyBvciBlcnJvciAKKy8vIG1lc3NhZ2VzLCBzbyBsZXRzIHJlbW92ZSBhbGwgb2Nj
dXJyZW5jZXMgb2YgdGhpcyBmYWtlIGZpbGUgcGF0aCBmcm9tIHRoZSBsb2cuCiB2b2lkIFByb2dy
YW06OmFwcGVuZFRvSW5mb0xvZ1Nhbml0aXplZChjb25zdCBjaGFyICptZXNzYWdlKQogewogICAg
IHN0ZDo6c3RyaW5nIG1zZyhtZXNzYWdlKTsKLSAgICBDSEFSIHBhdGhbTUFYX1BBVEhdID0gIiI7
Ci0gICAgc2l6ZV90IGxlbjsKIAotICAgIGxlbiA9IEdldEN1cnJlbnREaXJlY3RvcnlBKE1BWF9Q
QVRILCBwYXRoKTsKLSAgICBpZiAobGVuID4gMCAmJiBsZW4gPCBNQVhfUEFUSCkKKyAgICBzaXpl
X3QgZm91bmQ7CisgICAgZG8KICAgICB7Ci0gICAgICAgIHNpemVfdCBmb3VuZDsKLSAgICAgICAg
ZG8gewotICAgICAgICAgICAgZm91bmQgPSBtc2cuZmluZChwYXRoKTsKLSAgICAgICAgICAgIGlm
IChmb3VuZCAhPSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAvLyB0aGUgKzEgaGVyZSBpcyBpbnRlbnRpb25hbCBzbyB0aGF0IHdlIHJlbW92ZQotICAg
ICAgICAgICAgICAgIC8vIHRoZSB0cmFpbGluZyAnXCcgdGhhdCBvY2N1cnMgYWZ0ZXIgdGhlIHBh
dGgKLSAgICAgICAgICAgICAgICBtc2cuZXJhc2UoZm91bmQsIGxlbisxKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSB3aGlsZSAoZm91bmQgIT0gc3RkOjpzdHJpbmc6Om5wb3MpOworICAgICAg
ICBmb3VuZCA9IG1zZy5maW5kKGZha2VwYXRoKTsKKyAgICAgICAgaWYgKGZvdW5kICE9IHN0ZDo6
c3RyaW5nOjpucG9zKQorICAgICAgICB7CisgICAgICAgICAgICBtc2cuZXJhc2UoZm91bmQsIHN0
cmxlbihmYWtlcGF0aCkpOworICAgICAgICB9CiAgICAgfQorICAgIHdoaWxlIChmb3VuZCAhPSBz
dGQ6OnN0cmluZzo6bnBvcyk7CiAKICAgICBhcHBlbmRUb0luZm9Mb2coIiVzXG4iLCBtc2cuY19z
dHIoKSk7CiB9CkBAIC0yNTE3LDcgKzIzNTgsNyBAQCB2b2lkIFByb2dyYW06OnJlc2V0SW5mb0xv
ZygpCiAgICAgfQogfQogCi0vLyBSZXR1cm5zIHRoZSBwcm9ncmFtIG9iamVjdCB0byBhbiB1bmxp
bmtlZCBzdGF0ZSwgYWZ0ZXIgZGV0YWNoaW5nIGEgc2hhZGVyLCBiZWZvcmUgcmUtbGlua2luZywg
b3IgYXQgZGVzdHJ1Y3Rpb24KKy8vIFJldHVybnMgdGhlIHByb2dyYW0gb2JqZWN0IHRvIGFuIHVu
bGlua2VkIHN0YXRlLCBiZWZvcmUgcmUtbGlua2luZywgb3IgYXQgZGVzdHJ1Y3Rpb24KIHZvaWQg
UHJvZ3JhbTo6dW5saW5rKGJvb2wgZGVzdHJveSkKIHsKICAgICBpZiAoZGVzdHJveSkgICAvLyBP
YmplY3QgYmVpbmcgZGVzdHJ1Y3RlZApAQCAtMjU3NSw2ICsyNDE2LDkgQEAgdm9pZCBQcm9ncmFt
Ojp1bmxpbmsoYm9vbCBkZXN0cm95KQogICAgICAgICBtU2FtcGxlcnNWU1tpbmRleF0uYWN0aXZl
ID0gZmFsc2U7CiAgICAgfQogCisgICAgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UgPSAwOworICAg
IG1Vc2VkUGl4ZWxTYW1wbGVyUmFuZ2UgPSAwOworCiAgICAgd2hpbGUgKCFtVW5pZm9ybXMuZW1w
dHkoKSkKICAgICB7CiAgICAgICAgIGRlbGV0ZSBtVW5pZm9ybXMuYmFjaygpOwpAQCAtMjU4Myw3
ICsyNDI3LDcgQEAgdm9pZCBQcm9ncmFtOjp1bmxpbmsoYm9vbCBkZXN0cm95KQogCiAgICAgbUR4
RGVwdGhSYW5nZUxvY2F0aW9uID0gLTE7CiAgICAgbUR4RGVwdGhMb2NhdGlvbiA9IC0xOwotICAg
IG1EeFZpZXdwb3J0TG9jYXRpb24gPSAtMTsKKyAgICBtRHhDb29yZExvY2F0aW9uID0gLTE7CiAg
ICAgbUR4SGFsZlBpeGVsU2l6ZUxvY2F0aW9uID0gLTE7CiAgICAgbUR4RnJvbnRDQ1dMb2NhdGlv
biA9IC0xOwogICAgIG1EeFBvaW50c09yTGluZXNMb2NhdGlvbiA9IC0xOwpAQCAtMjc4MCw3ICsy
NjI0LDcgQEAgdm9pZCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtKEdMdWludCBpbmRleCwgR0xz
aXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEcKICAgICB1bnNpZ25lZCBpbnQgdW5pZm9y
bTsKICAgICBmb3IgKHVuaWZvcm0gPSAwOyB1bmlmb3JtIDwgbVVuaWZvcm1zLnNpemUoKTsgdW5p
Zm9ybSsrKQogICAgIHsKLSAgICAgICAgaWYgKG1Vbmlmb3Jtc1t1bmlmb3JtXS0+bmFtZS5zdWJz
dHIoMCwgMykgPT0gImR4XyIpCisgICAgICAgIGlmIChtVW5pZm9ybXNbdW5pZm9ybV0tPm5hbWUu
Y29tcGFyZSgwLCAzLCAiZHhfIikgPT0gMCkKICAgICAgICAgewogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KQEAgLTI3OTcsOSArMjY0MSw5IEBAIHZvaWQgUHJvZ3JhbTo6Z2V0QWN0
aXZlVW5pZm9ybShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHCiAKICAgICBpZiAoYnVmc2l6ZSA+IDApCiAgICAgewotICAgICAgICBzdGQ6OnN0cmluZyBz
dHJpbmcgPSB1bmRlY29yYXRlKG1Vbmlmb3Jtc1t1bmlmb3JtXS0+bmFtZSk7CisgICAgICAgIHN0
ZDo6c3RyaW5nIHN0cmluZyA9IG1Vbmlmb3Jtc1t1bmlmb3JtXS0+bmFtZTsKIAotICAgICAgICBp
ZiAobVVuaWZvcm1zW3VuaWZvcm1dLT5hcnJheVNpemUgIT0gMSkKKyAgICAgICAgaWYgKG1Vbmlm
b3Jtc1t1bmlmb3JtXS0+aXNBcnJheSgpKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJpbmcg
Kz0gIlswXSI7CiAgICAgICAgIH0KQEAgLTI4MjUsNyArMjY2OSw3IEBAIEdMaW50IFByb2dyYW06
OmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpCiAgICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1zID0g
bVVuaWZvcm1zLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCB1bmlmb3JtSW5kZXggPSAw
OyB1bmlmb3JtSW5kZXggPCBudW1Vbmlmb3JtczsgdW5pZm9ybUluZGV4KyspCiAgICAgewotICAg
ICAgICBpZiAobVVuaWZvcm1zW3VuaWZvcm1JbmRleF0tPm5hbWUuc3Vic3RyKDAsIDMpICE9ICJk
eF8iKQorICAgICAgICBpZiAobVVuaWZvcm1zW3VuaWZvcm1JbmRleF0tPm5hbWUuY29tcGFyZSgw
LCAzLCAiZHhfIikgIT0gMCkKICAgICAgICAgewogICAgICAgICAgICAgY291bnQrKzsKICAgICAg
ICAgfQpAQCAtMjg0MSwxMCArMjY4NSwxMCBAQCBHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlm
b3JtTWF4TGVuZ3RoKCkKICAgICB1bnNpZ25lZCBpbnQgbnVtVW5pZm9ybXMgPSBtVW5pZm9ybXMu
c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZvcm1JbmRleCA9IDA7IHVuaWZvcm1J
bmRleCA8IG51bVVuaWZvcm1zOyB1bmlmb3JtSW5kZXgrKykKICAgICB7Ci0gICAgICAgIGlmICgh
bVVuaWZvcm1zW3VuaWZvcm1JbmRleF0tPm5hbWUuZW1wdHkoKSAmJiBtVW5pZm9ybXNbdW5pZm9y
bUluZGV4XS0+bmFtZS5zdWJzdHIoMCwgMykgIT0gImR4XyIpCisgICAgICAgIGlmICghbVVuaWZv
cm1zW3VuaWZvcm1JbmRleF0tPm5hbWUuZW1wdHkoKSAmJiBtVW5pZm9ybXNbdW5pZm9ybUluZGV4
XS0+bmFtZS5jb21wYXJlKDAsIDMsICJkeF8iKSAhPSAwKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpbnQgbGVuZ3RoID0gKGludCkodW5kZWNvcmF0ZShtVW5pZm9ybXNbdW5pZm9ybUluZGV4XS0+
bmFtZSkubGVuZ3RoKCkgKyAxKTsKLSAgICAgICAgICAgIGlmIChtVW5pZm9ybXNbdW5pZm9ybUlu
ZGV4XS0+YXJyYXlTaXplICE9IDEpCisgICAgICAgICAgICBpbnQgbGVuZ3RoID0gKGludCkobVVu
aWZvcm1zW3VuaWZvcm1JbmRleF0tPm5hbWUubGVuZ3RoKCkgKyAxKTsKKyAgICAgICAgICAgIGlm
IChtVW5pZm9ybXNbdW5pZm9ybUluZGV4XS0+aXNBcnJheSgpKQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIGxlbmd0aCArPSAzOyAgLy8gQ291bnRpbmcgaW4gIlswXSIuCiAgICAgICAg
ICAgICB9CkBAIC0yOTAyLDcgKzI3NDYsNyBAQCBib29sIFByb2dyYW06OnZhbGlkYXRlU2FtcGxl
cnMoYm9vbCBsb2dFcnJvcnMpCiAgICAgICAgIHRleHR1cmVVbml0VHlwZVtpXSA9IFRFWFRVUkVf
VU5LTk9XTjsKICAgICB9CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE1BWF9U
RVhUVVJFX0lNQUdFX1VOSVRTOyArK2kpCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBtVXNlZFBpeGVsU2FtcGxlclJhbmdlOyArK2kpCiAgICAgewogICAgICAgICBpZiAobVNhbXBs
ZXJzUFNbaV0uYWN0aXZlKQogICAgICAgICB7CkBAIC0yOTM3LDcgKzI3ODEsNyBAQCBib29sIFBy
b2dyYW06OnZhbGlkYXRlU2FtcGxlcnMoYm9vbCBsb2dFcnJvcnMpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfVEVYVFVSRV9J
TUFHRV9VTklUU19WVEY7ICsraSkKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1V
c2VkVmVydGV4U2FtcGxlclJhbmdlOyArK2kpCiAgICAgewogICAgICAgICBpZiAobVNhbXBsZXJz
VlNbaV0uYWN0aXZlKQogICAgICAgICB7CkBAIC0yOTc1LDE3ICsyODE5LDIzIEBAIGJvb2wgUHJv
Z3JhbTo6dmFsaWRhdGVTYW1wbGVycyhib29sIGxvZ0Vycm9ycykKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBQcm9ncmFtOjpnZXRDb25zdGFudEhhbmRsZXMoVW5pZm9ybSAqdGFyZ2V0VW5p
Zm9ybSwgRDNEWEhBTkRMRSAqY29uc3RhbnRQUywgRDNEWEhBTkRMRSAqY29uc3RhbnRWUykKK3Zv
aWQgUHJvZ3JhbTo6aW5pdGlhbGl6ZUNvbnN0YW50SGFuZGxlcyhVbmlmb3JtICp0YXJnZXRVbmlm
b3JtLCBVbmlmb3JtOjpSZWdpc3RlckluZm8gKnJpLCBJRDNEWENvbnN0YW50VGFibGUgKmNvbnN0
YW50VGFibGUpCiB7Ci0gICAgaWYgKCF0YXJnZXRVbmlmb3JtLT5oYW5kbGVzU2V0KQorICAgIEQz
RFhIQU5ETEUgaGFuZGxlID0gY29uc3RhbnRUYWJsZS0+R2V0Q29uc3RhbnRCeU5hbWUoMCwgdGFy
Z2V0VW5pZm9ybS0+X25hbWUuY19zdHIoKSk7CisgICAgaWYgKGhhbmRsZSkKKyAgICB7CisgICAg
ICAgIFVJTlQgZGVzY3JpcHRpb25Db3VudCA9IDE7CisgICAgICAgIEQzRFhDT05TVEFOVF9ERVND
IGNvbnN0YW50RGVzY3JpcHRpb247CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gY29uc3RhbnRU
YWJsZS0+R2V0Q29uc3RhbnREZXNjKGhhbmRsZSwgJmNvbnN0YW50RGVzY3JpcHRpb24sICZkZXNj
cmlwdGlvbkNvdW50KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAg
ICAgcmktPnJlZ2lzdGVySW5kZXggPSBjb25zdGFudERlc2NyaXB0aW9uLlJlZ2lzdGVySW5kZXg7
CisgICAgICAgIHJpLT5yZWdpc3RlckNvdW50ID0gY29uc3RhbnREZXNjcmlwdGlvbi5SZWdpc3Rl
ckNvdW50OworICAgICAgICByaS0+cmVnaXN0ZXJTZXQgPSBjb25zdGFudERlc2NyaXB0aW9uLlJl
Z2lzdGVyU2V0OworICAgIH0KKyAgICBlbHNlCiAgICAgewotICAgICAgICB0YXJnZXRVbmlmb3Jt
LT5wc0hhbmRsZSA9IG1Db25zdGFudFRhYmxlUFMtPkdldENvbnN0YW50QnlOYW1lKDAsIHRhcmdl
dFVuaWZvcm0tPm5hbWUuY19zdHIoKSk7Ci0gICAgICAgIHRhcmdldFVuaWZvcm0tPnZzSGFuZGxl
ID0gbUNvbnN0YW50VGFibGVWUy0+R2V0Q29uc3RhbnRCeU5hbWUoMCwgdGFyZ2V0VW5pZm9ybS0+
bmFtZS5jX3N0cigpKTsKLSAgICAgICAgdGFyZ2V0VW5pZm9ybS0+aGFuZGxlc1NldCA9IHRydWU7
CisgICAgICAgIHJpLT5yZWdpc3RlckNvdW50ID0gMDsKICAgICB9Ci0KLSAgICAqY29uc3RhbnRQ
UyA9IHRhcmdldFVuaWZvcm0tPnBzSGFuZGxlOwotICAgICpjb25zdGFudFZTID0gdGFyZ2V0VW5p
Zm9ybS0+dnNIYW5kbGU7CiB9CiAKIEdMaW50IFByb2dyYW06OmdldER4RGVwdGhSYW5nZUxvY2F0
aW9uKCkgY29uc3QKQEAgLTI5OTgsOSArMjg0OCw5IEBAIEdMaW50IFByb2dyYW06OmdldER4RGVw
dGhMb2NhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1EeERlcHRoTG9jYXRpb247CiB9CiAKLUdM
aW50IFByb2dyYW06OmdldER4Vmlld3BvcnRMb2NhdGlvbigpIGNvbnN0CitHTGludCBQcm9ncmFt
OjpnZXREeENvb3JkTG9jYXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBtRHhWaWV3cG9ydExv
Y2F0aW9uOworICAgIHJldHVybiBtRHhDb29yZExvY2F0aW9uOwogfQogCiBHTGludCBQcm9ncmFt
OjpnZXREeEhhbGZQaXhlbFNpemVMb2NhdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW0uaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5oCmluZGV4IDgwODU1MjJlYjE3ZjNhYjQx
OGMwOGEzMjVhNTM5OGIzZmExNWZmNTcuLjc3ZmZkMjRjNDkxMTg0NTAwNDU0Y2E2YTkwNjc4ZmZh
N2M5YWI0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
UHJvZ3JhbS5oCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEw
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KIC8vCkBAIC0yOCwyNiArMjgsMzUgQEAgY2xhc3MgVmVydGV4U2hhZGVyOwogLy8gSGVscGVy
IHN0cnVjdCByZXByZXNlbnRpbmcgYSBzaW5nbGUgc2hhZGVyIHVuaWZvcm0KIHN0cnVjdCBVbmlm
b3JtCiB7Ci0gICAgVW5pZm9ybShHTGVudW0gdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUs
IHVuc2lnbmVkIGludCBhcnJheVNpemUpOworICAgIFVuaWZvcm0oR0xlbnVtIHR5cGUsIGNvbnN0
IHN0ZDo6c3RyaW5nICZfbmFtZSwgdW5zaWduZWQgaW50IGFycmF5U2l6ZSk7CiAKICAgICB+VW5p
Zm9ybSgpOwogCisgICAgYm9vbCBpc0FycmF5KCk7CisKICAgICBjb25zdCBHTGVudW0gdHlwZTsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIF9uYW1l
OyAgIC8vIERlY29yYXRlZCBuYW1lCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZTsgICAgLy8g
VW5kZWNvcmF0ZWQgbmFtZQogICAgIGNvbnN0IHVuc2lnbmVkIGludCBhcnJheVNpemU7CiAKICAg
ICB1bnNpZ25lZCBjaGFyICpkYXRhOwogICAgIGJvb2wgZGlydHk7CiAKLSAgICBEM0RYSEFORExF
IHZzSGFuZGxlOwotICAgIEQzRFhIQU5ETEUgcHNIYW5kbGU7Ci0gICAgYm9vbCBoYW5kbGVzU2V0
OworICAgIHN0cnVjdCBSZWdpc3RlckluZm8KKyAgICB7CisgICAgICAgIGludCByZWdpc3RlclNl
dDsKKyAgICAgICAgaW50IHJlZ2lzdGVySW5kZXg7CisgICAgICAgIGludCByZWdpc3RlckNvdW50
OworICAgIH07CisKKyAgICBSZWdpc3RlckluZm8gcHM7CisgICAgUmVnaXN0ZXJJbmZvIHZzOwog
fTsKIAogLy8gU3RydWN0IHVzZWQgZm9yIGNvcnJlbGF0aW5nIHVuaWZvcm1zL2VsZW1lbnRzIG9m
IHVuaWZvcm0gYXJyYXlzIHRvIGhhbmRsZXMKIHN0cnVjdCBVbmlmb3JtTG9jYXRpb24KIHsKLSAg
ICBVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCBl
bGVtZW50LCB1bnNpZ25lZCBpbnQgaW5kZXgpOworICAgIFVuaWZvcm1Mb2NhdGlvbihjb25zdCBz
dGQ6OnN0cmluZyAmX25hbWUsIHVuc2lnbmVkIGludCBlbGVtZW50LCB1bnNpZ25lZCBpbnQgaW5k
ZXgpOwogCiAgICAgc3RkOjpzdHJpbmcgbmFtZTsKICAgICB1bnNpZ25lZCBpbnQgZWxlbWVudDsK
QEAgLTc0LDggKzgzLDkgQEAgY2xhc3MgUHJvZ3JhbQogCiAgICAgR0xpbnQgZ2V0U2FtcGxlck1h
cHBpbmcoU2FtcGxlclR5cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCk7CiAgICAg
VGV4dHVyZVR5cGUgZ2V0U2FtcGxlclRleHR1cmVUeXBlKFNhbXBsZXJUeXBlIHR5cGUsIHVuc2ln
bmVkIGludCBzYW1wbGVySW5kZXgpOworICAgIEdMaW50IGdldFVzZWRTYW1wbGVyUmFuZ2UoU2Ft
cGxlclR5cGUgdHlwZSk7CiAKLSAgICBHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oY29uc3QgY2hh
ciAqbmFtZSwgYm9vbCBkZWNvcmF0ZWQpOworICAgIEdMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihz
dGQ6OnN0cmluZyBuYW1lKTsKICAgICBib29sIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwogICAgIGJvb2wgc2V0VW5pZm9ybTJm
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CiAgICAg
Ym9vbCBzZXRVbmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGZsb2F0ICp2KTsKQEAgLTg4LDEyICs5OCwxMiBAQCBjbGFzcyBQcm9ncmFtCiAgICAgYm9vbCBz
ZXRVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dik7CiAgICAgYm9vbCBzZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGludCAqdik7CiAKLSAgICBib29sIGdldFVuaWZvcm1mdihHTGludCBsb2NhdGlv
biwgR0xmbG9hdCAqcGFyYW1zKTsKLSAgICBib29sIGdldFVuaWZvcm1pdihHTGludCBsb2NhdGlv
biwgR0xpbnQgKnBhcmFtcyk7CisgICAgYm9vbCBnZXRVbmlmb3JtZnYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgKmJ1ZlNpemUsIEdMZmxvYXQgKnBhcmFtcyk7CisgICAgYm9vbCBnZXRVbmlmb3Jt
aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgKmJ1ZlNpemUsIEdMaW50ICpwYXJhbXMpOwogCiAg
ICAgR0xpbnQgZ2V0RHhEZXB0aFJhbmdlTG9jYXRpb24oKSBjb25zdDsKICAgICBHTGludCBnZXRE
eERlcHRoTG9jYXRpb24oKSBjb25zdDsKLSAgICBHTGludCBnZXREeFZpZXdwb3J0TG9jYXRpb24o
KSBjb25zdDsKKyAgICBHTGludCBnZXREeENvb3JkTG9jYXRpb24oKSBjb25zdDsKICAgICBHTGlu
dCBnZXREeEhhbGZQaXhlbFNpemVMb2NhdGlvbigpIGNvbnN0OwogICAgIEdMaW50IGdldER4RnJv
bnRDQ1dMb2NhdGlvbigpIGNvbnN0OwogICAgIEdMaW50IGdldER4UG9pbnRzT3JMaW5lc0xvY2F0
aW9uKCkgY29uc3Q7CkBAIC0xMjcsNiArMTM3LDkgQEAgY2xhc3MgUHJvZ3JhbQogCiAgICAgdW5z
aWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OwogCisgICAgc3RhdGljIHN0ZDo6c3RyaW5nIGRl
Y29yYXRlQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKTsgICAgLy8gUHJlcGVuZCBh
biB1bmRlcnNjb3JlCisgICAgc3RhdGljIHN0ZDo6c3RyaW5nIHVuZGVjb3JhdGVVbmlmb3JtKGNv
bnN0IHN0ZDo6c3RyaW5nICZfbmFtZSk7ICAgLy8gUmVtb3ZlIGxlYWRpbmcgdW5kZXJzY29yZQor
CiAgIHByaXZhdGU6CiAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFByb2dyYW0pOwogCkBA
IC0xNDMsMzMgKzE1NiwyMyBAQCBjbGFzcyBQcm9ncmFtCiAgICAgYm9vbCBkZWZpbmVVbmlmb3Jt
KGNvbnN0IEQzRFhIQU5ETEUgJmNvbnN0YW50SGFuZGxlLCBjb25zdCBEM0RYQ09OU1RBTlRfREVT
QyAmY29uc3RhbnREZXNjcmlwdGlvbiwgc3RkOjpzdHJpbmcgbmFtZSA9ICIiKTsKICAgICBib29s
IGRlZmluZVVuaWZvcm0oY29uc3QgRDNEWENPTlNUQU5UX0RFU0MgJmNvbnN0YW50RGVzY3JpcHRp
b24sIHN0ZDo6c3RyaW5nICZuYW1lKTsKICAgICBVbmlmb3JtICpjcmVhdGVVbmlmb3JtKGNvbnN0
IEQzRFhDT05TVEFOVF9ERVNDICZjb25zdGFudERlc2NyaXB0aW9uLCBzdGQ6OnN0cmluZyAmbmFt
ZSk7Ci0gICAgYm9vbCBhcHBseVVuaWZvcm0xYnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMYm9vbGVhbiAqdik7Ci0gICAgYm9vbCBhcHBseVVuaWZvcm0yYnYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMYm9vbGVhbiAqdik7Ci0gICAgYm9vbCBh
cHBseVVuaWZvcm0zYnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMYm9v
bGVhbiAqdik7Ci0gICAgYm9vbCBhcHBseVVuaWZvcm00YnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMYm9vbGVhbiAqdik7Ci0gICAgYm9vbCBhcHBseVVuaWZvcm0xZnYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwotICAgIGJv
b2wgYXBwbHlVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGZsb2F0ICp2KTsKLSAgICBib29sIGFwcGx5VW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7Ci0gICAgYm9vbCBhcHBseVVuaWZvcm00ZnYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwotICAgIGJv
b2wgYXBwbHlVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgYm9vbCBhcHBseVVuaWZvcm1NYXRyaXgzZnYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLSAgICBi
b29sIGFwcGx5VW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpOwotICAgIGJvb2wgYXBwbHlVbmlmb3JtMWl2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7Ci0gICAgYm9vbCBhcHBseVVu
aWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsK
LSAgICBib29sIGFwcGx5VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xpbnQgKnYpOwotICAgIGJvb2wgYXBwbHlVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7Ci0KLSAgICB2b2lkIGdldENvbnN0YW50
SGFuZGxlcyhVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBEM0RYSEFORExFICpjb25zdGFudFBTLCBE
M0RYSEFORExFICpjb25zdGFudFZTKTsKKyAgICBib29sIGFwcGx5VW5pZm9ybW5mdihVbmlmb3Jt
ICp0YXJnZXRVbmlmb3JtLCBjb25zdCBHTGZsb2F0ICp2KTsKKyAgICBib29sIGFwcGx5VW5pZm9y
bTFpdihVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dik7CisgICAgYm9vbCBhcHBseVVuaWZvcm0yaXYoVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworICAgIGJvb2wgYXBwbHlVbmlmb3JtM2l2KFVu
aWZvcm0gKnRhcmdldFVuaWZvcm0sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKKyAg
ICBib29sIGFwcGx5VW5pZm9ybTRpdihVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCAqdik7CisgICAgdm9pZCBhcHBseVVuaWZvcm1uaXYoVW5pZm9ybSAq
dGFyZ2V0VW5pZm9ybSwgR0xzaXplaSBjb3VudCwgY29uc3QgRDNEWFZFQ1RPUjQgKnZlY3Rvcik7
CisgICAgdm9pZCBhcHBseVVuaWZvcm1uYnYoVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgR0xzaXpl
aSBjb3VudCwgaW50IHdpZHRoLCBjb25zdCBHTGJvb2xlYW4gKnYpOworCisgICAgdm9pZCBpbml0
aWFsaXplQ29uc3RhbnRIYW5kbGVzKFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIFVuaWZvcm06OlJl
Z2lzdGVySW5mbyAqcnMsIElEM0RYQ29uc3RhbnRUYWJsZSAqY29uc3RhbnRUYWJsZSk7CiAKICAg
ICB2b2lkIGFwcGVuZFRvSW5mb0xvZ1Nhbml0aXplZChjb25zdCBjaGFyICptZXNzYWdlKTsKICAg
ICB2b2lkIGFwcGVuZFRvSW5mb0xvZyhjb25zdCBjaGFyICppbmZvLCAuLi4pOwogICAgIHZvaWQg
cmVzZXRJbmZvTG9nKCk7CiAKLSAgICBzdGF0aWMgc3RkOjpzdHJpbmcgZGVjb3JhdGUoY29uc3Qg
c3RkOjpzdHJpbmcgJnN0cmluZyk7ICAgICAvLyBQcmVwZW5kIGFuIHVuZGVyc2NvcmUKLSAgICBz
dGF0aWMgc3RkOjpzdHJpbmcgdW5kZWNvcmF0ZShjb25zdCBzdGQ6OnN0cmluZyAmc3RyaW5nKTsg
ICAvLyBSZW1vdmUgbGVhZGluZyB1bmRlcnNjb3JlCi0KICAgICBzdGF0aWMgdW5zaWduZWQgaW50
IGlzc3VlU2VyaWFsKCk7CiAKKyAgICBJRGlyZWN0M0REZXZpY2U5ICptRGV2aWNlOwogICAgIEZy
YWdtZW50U2hhZGVyICptRnJhZ21lbnRTaGFkZXI7CiAgICAgVmVydGV4U2hhZGVyICptVmVydGV4
U2hhZGVyOwogCkBAIC0xOTQsNiArMTk3LDggQEAgY2xhc3MgUHJvZ3JhbQogCiAgICAgU2FtcGxl
ciBtU2FtcGxlcnNQU1tNQVhfVEVYVFVSRV9JTUFHRV9VTklUU107CiAgICAgU2FtcGxlciBtU2Ft
cGxlcnNWU1tNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGXTsKKyAgICBHTHVpbnQg
bVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2U7CisgICAgR0x1aW50IG1Vc2VkUGl4ZWxTYW1wbGVyUmFu
Z2U7CiAKICAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFVuaWZvcm0qPiBVbmlmb3JtQXJyYXk7CiAg
ICAgVW5pZm9ybUFycmF5IG1Vbmlmb3JtczsKQEAgLTIwMiw3ICsyMDcsNyBAQCBjbGFzcyBQcm9n
cmFtCiAKICAgICBHTGludCBtRHhEZXB0aFJhbmdlTG9jYXRpb247CiAgICAgR0xpbnQgbUR4RGVw
dGhMb2NhdGlvbjsKLSAgICBHTGludCBtRHhWaWV3cG9ydExvY2F0aW9uOworICAgIEdMaW50IG1E
eENvb3JkTG9jYXRpb247CiAgICAgR0xpbnQgbUR4SGFsZlBpeGVsU2l6ZUxvY2F0aW9uOwogICAg
IEdMaW50IG1EeEZyb250Q0NXTG9jYXRpb247CiAgICAgR0xpbnQgbUR4UG9pbnRzT3JMaW5lc0xv
Y2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9SZW5kZXJidWZmZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9SZW5kZXJidWZmZXIuY3BwCmluZGV4IGFjZThkN2I5MDQzZDZiNWJjNzg1MThmMTBkZDY1YjRh
NWQxMjI4YzcuLjY4NTFhMzc1YTRjYjJhOGU5YTMxYTEyZjNmMzNiOGE5OWMxZjg3ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1
ZmZlci5jcHAKQEAgLTE4LDEwMyArMTgsMTc1IEBAIG5hbWVzcGFjZSBnbAogewogdW5zaWduZWQg
aW50IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6Om1DdXJyZW50U2VyaWFsID0gMTsKIAotUmVuZGVyYnVm
ZmVyOjpSZW5kZXJidWZmZXIoR0x1aW50IGlkLCBSZW5kZXJidWZmZXJTdG9yYWdlICpzdG9yYWdl
KSA6IFJlZkNvdW50T2JqZWN0KGlkKQorUmVuZGVyYnVmZmVySW50ZXJmYWNlOjpSZW5kZXJidWZm
ZXJJbnRlcmZhY2UoKQogewotICAgIEFTU0VSVChzdG9yYWdlICE9IE5VTEwpOwotICAgIG1TdG9y
YWdlID0gc3RvcmFnZTsKIH0KIAotUmVuZGVyYnVmZmVyOjp+UmVuZGVyYnVmZmVyKCkKK0dMdWlu
dCBSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldFJlZFNpemUoKSBjb25zdAoreworICAgIHJldHVy
biBkeDJlczo6R2V0UmVkU2l6ZShnZXREM0RGb3JtYXQoKSk7Cit9CisKK0dMdWludCBSZW5kZXJi
dWZmZXJJbnRlcmZhY2U6OmdldEdyZWVuU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGR4MmVz
OjpHZXRHcmVlblNpemUoZ2V0RDNERm9ybWF0KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVy
SW50ZXJmYWNlOjpnZXRCbHVlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGR4MmVzOjpHZXRC
bHVlU2l6ZShnZXREM0RGb3JtYXQoKSk7Cit9CisKK0dMdWludCBSZW5kZXJidWZmZXJJbnRlcmZh
Y2U6OmdldEFscGhhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGR4MmVzOjpHZXRBbHBoYVNp
emUoZ2V0RDNERm9ybWF0KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVySW50ZXJmYWNlOjpn
ZXREZXB0aFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBkeDJlczo6R2V0RGVwdGhTaXplKGdl
dEQzREZvcm1hdCgpKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0U3Rl
bmNpbFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBkeDJlczo6R2V0U3RlbmNpbFNpemUoZ2V0
RDNERm9ybWF0KCkpOworfQorCitSZW5kZXJidWZmZXJUZXh0dXJlOjpSZW5kZXJidWZmZXJUZXh0
dXJlKFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSB0YXJnZXQpIDogbVRleHR1cmUodGV4dHVyZSks
IG1UYXJnZXQodGFyZ2V0KQoreworfQorCitSZW5kZXJidWZmZXJUZXh0dXJlOjp+UmVuZGVyYnVm
ZmVyVGV4dHVyZSgpCit7Cit9CisKK0lEaXJlY3QzRFN1cmZhY2U5ICpSZW5kZXJidWZmZXJUZXh0
dXJlOjpnZXRSZW5kZXJUYXJnZXQoKQogewotICAgIGRlbGV0ZSBtU3RvcmFnZTsKKyAgICByZXR1
cm4gbVRleHR1cmUtPmdldFJlbmRlclRhcmdldChtVGFyZ2V0KTsKK30KKworSURpcmVjdDNEU3Vy
ZmFjZTkgKlJlbmRlcmJ1ZmZlclRleHR1cmU6OmdldERlcHRoU3RlbmNpbCgpCit7CisgICAgcmV0
dXJuIE5VTEw7CiB9CiAKLWJvb2wgUmVuZGVyYnVmZmVyOjppc0NvbG9yYnVmZmVyKCkgY29uc3QK
K0dMc2l6ZWkgUmVuZGVyYnVmZmVyVGV4dHVyZTo6Z2V0V2lkdGgoKSBjb25zdAogewotICAgIHJl
dHVybiBtU3RvcmFnZS0+aXNDb2xvcmJ1ZmZlcigpOworICAgIHJldHVybiBtVGV4dHVyZS0+Z2V0
V2lkdGgoMCk7Cit9CisgCitHTHNpemVpIFJlbmRlcmJ1ZmZlclRleHR1cmU6OmdldEhlaWdodCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlLT5nZXRIZWlnaHQoMCk7Cit9CisgCitHTGVu
dW0gUmVuZGVyYnVmZmVyVGV4dHVyZTo6Z2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdAoreworICAg
IHJldHVybiBtVGV4dHVyZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKIH0KIAotYm9vbCBSZW5kZXJi
dWZmZXI6OmlzRGVwdGhidWZmZXIoKSBjb25zdAorRDNERk9STUFUIFJlbmRlcmJ1ZmZlclRleHR1
cmU6OmdldEQzREZvcm1hdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1TdG9yYWdlLT5pc0RlcHRo
YnVmZmVyKCk7CisgICAgcmV0dXJuIG1UZXh0dXJlLT5nZXREM0RGb3JtYXQoKTsKIH0KIAotYm9v
bCBSZW5kZXJidWZmZXI6OmlzU3RlbmNpbGJ1ZmZlcigpIGNvbnN0CitHTHNpemVpIFJlbmRlcmJ1
ZmZlclRleHR1cmU6OmdldFNhbXBsZXMoKSBjb25zdAogewotICAgIHJldHVybiBtU3RvcmFnZS0+
aXNTdGVuY2lsYnVmZmVyKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5k
ZXJidWZmZXJUZXh0dXJlOjpnZXRTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVy
ZS0+Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKG1UYXJnZXQpOworfQorCitSZW5kZXJidWZmZXI6OlJl
bmRlcmJ1ZmZlcihHTHVpbnQgaWQsIFJlbmRlcmJ1ZmZlckludGVyZmFjZSAqaW5zdGFuY2UpIDog
UmVmQ291bnRPYmplY3QoaWQpCit7CisgICAgQVNTRVJUKGluc3RhbmNlICE9IE5VTEwpOworICAg
IG1JbnN0YW5jZSA9IGluc3RhbmNlOworfQorCitSZW5kZXJidWZmZXI6On5SZW5kZXJidWZmZXIo
KQoreworICAgIGRlbGV0ZSBtSW5zdGFuY2U7CiB9CiAKIElEaXJlY3QzRFN1cmZhY2U5ICpSZW5k
ZXJidWZmZXI6OmdldFJlbmRlclRhcmdldCgpCiB7Ci0gICAgcmV0dXJuIG1TdG9yYWdlLT5nZXRS
ZW5kZXJUYXJnZXQoKTsKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRSZW5kZXJUYXJnZXQoKTsK
IH0KIAogSURpcmVjdDNEU3VyZmFjZTkgKlJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTdGVuY2lsKCkK
IHsKLSAgICByZXR1cm4gbVN0b3JhZ2UtPmdldERlcHRoU3RlbmNpbCgpOworICAgIHJldHVybiBt
SW5zdGFuY2UtPmdldERlcHRoU3RlbmNpbCgpOwogfQogCiBHTHNpemVpIFJlbmRlcmJ1ZmZlcjo6
Z2V0V2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiBtU3RvcmFnZS0+Z2V0V2lkdGgoKTsKKyAg
ICByZXR1cm4gbUluc3RhbmNlLT5nZXRXaWR0aCgpOwogfQogCiBHTHNpemVpIFJlbmRlcmJ1ZmZl
cjo6Z2V0SGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVN0b3JhZ2UtPmdldEhlaWdodCgp
OworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldEhlaWdodCgpOwogfQogCiBHTGVudW0gUmVuZGVy
YnVmZmVyOjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1TdG9yYWdl
LT5nZXRJbnRlcm5hbEZvcm1hdCgpOworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldEludGVybmFs
Rm9ybWF0KCk7Cit9CisKK0QzREZPUk1BVCBSZW5kZXJidWZmZXI6OmdldEQzREZvcm1hdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0RDNERm9ybWF0KCk7CiB9CiAKIEdMdWlu
dCBSZW5kZXJidWZmZXI6OmdldFJlZFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtU3RvcmFn
ZS0+Z2V0UmVkU2l6ZSgpOworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldFJlZFNpemUoKTsKIH0K
IAogR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0R3JlZW5TaXplKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbVN0b3JhZ2UtPmdldEdyZWVuU2l6ZSgpOworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldEdy
ZWVuU2l6ZSgpOwogfQogCiBHTHVpbnQgUmVuZGVyYnVmZmVyOjpnZXRCbHVlU2l6ZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1TdG9yYWdlLT5nZXRCbHVlU2l6ZSgpOworICAgIHJldHVybiBtSW5z
dGFuY2UtPmdldEJsdWVTaXplKCk7CiB9CiAKIEdMdWludCBSZW5kZXJidWZmZXI6OmdldEFscGhh
U2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1TdG9yYWdlLT5nZXRBbHBoYVNpemUoKTsKKyAg
ICByZXR1cm4gbUluc3RhbmNlLT5nZXRBbHBoYVNpemUoKTsKIH0KIAogR0x1aW50IFJlbmRlcmJ1
ZmZlcjo6Z2V0RGVwdGhTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVN0b3JhZ2UtPmdldERl
cHRoU2l6ZSgpOworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldERlcHRoU2l6ZSgpOwogfQogCiBH
THVpbnQgUmVuZGVyYnVmZmVyOjpnZXRTdGVuY2lsU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1TdG9yYWdlLT5nZXRTdGVuY2lsU2l6ZSgpOworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldFN0
ZW5jaWxTaXplKCk7CiB9CiAKIEdMc2l6ZWkgUmVuZGVyYnVmZmVyOjpnZXRTYW1wbGVzKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbVN0b3JhZ2UtPmdldFNhbXBsZXMoKTsKKyAgICByZXR1cm4gbUlu
c3RhbmNlLT5nZXRTYW1wbGVzKCk7CiB9CiAKIHVuc2lnbmVkIGludCBSZW5kZXJidWZmZXI6Omdl
dFNlcmlhbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1TdG9yYWdlLT5nZXRTZXJpYWwoKTsKKyAg
ICByZXR1cm4gbUluc3RhbmNlLT5nZXRTZXJpYWwoKTsKIH0KIAogdm9pZCBSZW5kZXJidWZmZXI6
OnNldFN0b3JhZ2UoUmVuZGVyYnVmZmVyU3RvcmFnZSAqbmV3U3RvcmFnZSkKIHsKICAgICBBU1NF
UlQobmV3U3RvcmFnZSAhPSBOVUxMKTsKIAotICAgIGRlbGV0ZSBtU3RvcmFnZTsKLSAgICBtU3Rv
cmFnZSA9IG5ld1N0b3JhZ2U7CisgICAgZGVsZXRlIG1JbnN0YW5jZTsKKyAgICBtSW5zdGFuY2Ug
PSBuZXdTdG9yYWdlOwogfQogCiBSZW5kZXJidWZmZXJTdG9yYWdlOjpSZW5kZXJidWZmZXJTdG9y
YWdlKCkgOiBtU2VyaWFsKGlzc3VlU2VyaWFsKCkpCkBAIC0xMzAsMjEgKzIwMiw2IEBAIFJlbmRl
cmJ1ZmZlclN0b3JhZ2U6On5SZW5kZXJidWZmZXJTdG9yYWdlKCkKIHsKIH0KIAotYm9vbCBSZW5k
ZXJidWZmZXJTdG9yYWdlOjppc0NvbG9yYnVmZmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLWJvb2wgUmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNEZXB0aGJ1ZmZlcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6Omlz
U3RlbmNpbGJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBJRGlyZWN0
M0RTdXJmYWNlOSAqUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0UmVuZGVyVGFyZ2V0KCkKIHsKICAg
ICByZXR1cm4gTlVMTDsKQEAgLTE3MCwzNCArMjI3LDkgQEAgR0xlbnVtIFJlbmRlcmJ1ZmZlclN0
b3JhZ2U6OmdldEludGVybmFsRm9ybWF0KCkgY29uc3QKICAgICByZXR1cm4gbUludGVybmFsRm9y
bWF0OwogfQogCi1HTHVpbnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0UmVkU2l6ZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGR4MmVzOjpHZXRSZWRTaXplKGdldEQzREZvcm1hdCgpKTsKLX0KLQot
R0x1aW50IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEdyZWVuU2l6ZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGR4MmVzOjpHZXRHcmVlblNpemUoZ2V0RDNERm9ybWF0KCkpOwotfQotCi1HTHVpbnQg
UmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0Qmx1ZVNpemUoKSBjb25zdAotewotICAgIHJldHVybiBk
eDJlczo6R2V0Qmx1ZVNpemUoZ2V0RDNERm9ybWF0KCkpOwotfQotCi1HTHVpbnQgUmVuZGVyYnVm
ZmVyU3RvcmFnZTo6Z2V0QWxwaGFTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZHgyZXM6Okdl
dEFscGhhU2l6ZShnZXREM0RGb3JtYXQoKSk7Ci19Ci0KLUdMdWludCBSZW5kZXJidWZmZXJTdG9y
YWdlOjpnZXREZXB0aFNpemUoKSBjb25zdAotewotICAgIHJldHVybiBkeDJlczo6R2V0RGVwdGhT
aXplKGdldEQzREZvcm1hdCgpKTsKLX0KLQotR0x1aW50IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6Omdl
dFN0ZW5jaWxTaXplKCkgY29uc3QKK0QzREZPUk1BVCBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRE
M0RGb3JtYXQoKSBjb25zdAogewotICAgIHJldHVybiBkeDJlczo6R2V0U3RlbmNpbFNpemUoZ2V0
RDNERm9ybWF0KCkpOworICAgIHJldHVybiBtRDNERm9ybWF0OwogfQogCiBHTHNpemVpIFJlbmRl
cmJ1ZmZlclN0b3JhZ2U6OmdldFNhbXBsZXMoKSBjb25zdApAQCAtMjA1LDExICsyMzcsNiBAQCBH
THNpemVpIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFNhbXBsZXMoKSBjb25zdAogICAgIHJldHVy
biBtU2FtcGxlczsKIH0KIAotRDNERk9STUFUIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEQzREZv
cm1hdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1EM0RGb3JtYXQ7Ci19Ci0KIHVuc2lnbmVkIGlu
dCBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRTZXJpYWwoKSBjb25zdAogewogICAgIHJldHVybiBt
U2VyaWFsOwpAQCAtMjIwLDcgKzI0NywxNCBAQCB1bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVyU3Rv
cmFnZTo6aXNzdWVTZXJpYWwoKQogICAgIHJldHVybiBtQ3VycmVudFNlcmlhbCsrOwogfQogCi1D
b2xvcmJ1ZmZlcjo6Q29sb3JidWZmZXIoSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdldCkg
OiBtUmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCksIG1UZXh0dXJlKE5VTEwpCit1bnNpZ25lZCBp
bnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVDdWJlU2VyaWFscygpCit7CisgICAgdW5zaWdu
ZWQgaW50IGZpcnN0U2VyaWFsID0gbUN1cnJlbnRTZXJpYWw7CisgICAgbUN1cnJlbnRTZXJpYWwg
Kz0gNjsKKyAgICByZXR1cm4gZmlyc3RTZXJpYWw7Cit9CisKK0NvbG9yYnVmZmVyOjpDb2xvcmJ1
ZmZlcihJRGlyZWN0M0RTdXJmYWNlOSAqcmVuZGVyVGFyZ2V0KSA6IG1SZW5kZXJUYXJnZXQocmVu
ZGVyVGFyZ2V0KQogewogICAgIGlmIChyZW5kZXJUYXJnZXQpCiAgICAgewpAQCAtMjM3LDIxICsy
NzEsNyBAQCBDb2xvcmJ1ZmZlcjo6Q29sb3JidWZmZXIoSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRl
clRhcmdldCkgOiBtUmVuZGVyVGFyZ2V0KHJlbmRlcgogICAgIH0KIH0KIAotQ29sb3JidWZmZXI6
OkNvbG9yYnVmZmVyKFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSB0YXJnZXQpIDogbVJlbmRlclRh
cmdldChOVUxMKSwgbVRleHR1cmUodGV4dHVyZSksIG1UYXJnZXQodGFyZ2V0KQotewotICAgIGlm
ICh0ZXh0dXJlKQotICAgIHsKLSAgICAgICAgbVdpZHRoID0gdGV4dHVyZS0+Z2V0V2lkdGgoKTsK
LSAgICAgICAgbUhlaWdodCA9IHRleHR1cmUtPmdldEhlaWdodCgpOwotICAgICAgICBtSW50ZXJu
YWxGb3JtYXQgPSB0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1hdCgpOwotICAgICAgICBtRDNERm9y
bWF0ID0gdGV4dHVyZS0+Z2V0RDNERm9ybWF0KCk7Ci0gICAgICAgIG1TYW1wbGVzID0gMDsKLQot
ICAgICAgICBtUmVuZGVyVGFyZ2V0ID0gdGV4dHVyZS0+Z2V0UmVuZGVyVGFyZ2V0KHRhcmdldCk7
Ci0gICAgfQotfQotCi1Db2xvcmJ1ZmZlcjo6Q29sb3JidWZmZXIoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMpIDogbVJlbmRlclRhcmdldChOVUxM
KSwgbVRleHR1cmUoTlVMTCkKK0NvbG9yYnVmZmVyOjpDb2xvcmJ1ZmZlcihpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcykgOiBtUmVuZGVyVGFyZ2V0
KE5VTEwpCiB7CiAgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7CiAK
QEAgLTI5NSw3MSArMzE1LDExIEBAIENvbG9yYnVmZmVyOjp+Q29sb3JidWZmZXIoKQogICAgIH0K
IH0KIAotR0xzaXplaSBDb2xvcmJ1ZmZlcjo6Z2V0V2lkdGgoKSBjb25zdAotewotICAgIGlmICht
VGV4dHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtVGV4dHVyZS0+Z2V0V2lkdGgoKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gbVdpZHRoOwotfQotCi1HTHNpemVpIENvbG9yYnVmZmVyOjpnZXRI
ZWlnaHQoKSBjb25zdAotewotICAgIGlmIChtVGV4dHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtVGV4dHVyZS0+Z2V0SGVpZ2h0KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1IZWlnaHQ7Ci19
Ci0KLUdMZW51bSBDb2xvcmJ1ZmZlcjo6Z2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdAotewotICAg
IGlmIChtVGV4dHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtVGV4dHVyZS0+Z2V0SW50ZXJu
YWxGb3JtYXQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbUludGVybmFsRm9ybWF0OwotfQotCi1H
TGVudW0gQ29sb3JidWZmZXI6OmdldFR5cGUoKSBjb25zdAotewotICAgIGlmIChtVGV4dHVyZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtVGV4dHVyZS0+Z2V0VHlwZSgpOwotICAgIH0KLQotICAg
IHJldHVybiBHTF9VTlNJR05FRF9CWVRFOwotfQotCi1EM0RGT1JNQVQgQ29sb3JidWZmZXI6Omdl
dEQzREZvcm1hdCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1UZXh0dXJlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1UZXh0dXJlLT5nZXREM0RGb3JtYXQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbUQz
REZvcm1hdDsKLX0KLQotYm9vbCBDb2xvcmJ1ZmZlcjo6aXNDb2xvcmJ1ZmZlcigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIElEaXJlY3QzRFN1cmZhY2U5ICpDb2xvcmJ1ZmZlcjo6
Z2V0UmVuZGVyVGFyZ2V0KCkKIHsKLSAgICBpZiAobVRleHR1cmUpCisgICAgaWYgKG1SZW5kZXJU
YXJnZXQpCiAgICAgewotICAgICAgICBpZiAobVJlbmRlclRhcmdldCkKLSAgICAgICAgewotICAg
ICAgICAgICAgbVJlbmRlclRhcmdldC0+UmVsZWFzZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
bVJlbmRlclRhcmdldCA9IG1UZXh0dXJlLT5nZXRSZW5kZXJUYXJnZXQobVRhcmdldCk7CisgICAg
ICAgIG1SZW5kZXJUYXJnZXQtPkFkZFJlZigpOwogICAgIH0KIAogICAgIHJldHVybiBtUmVuZGVy
VGFyZ2V0OwpAQCAtNDI3LDE2ICszODcsNiBAQCBEZXB0aFN0ZW5jaWxidWZmZXI6On5EZXB0aFN0
ZW5jaWxidWZmZXIoKQogICAgIH0KIH0KIAotYm9vbCBEZXB0aFN0ZW5jaWxidWZmZXI6OmlzRGVw
dGhidWZmZXIoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERlcHRoU3Rl
bmNpbGJ1ZmZlcjo6aXNTdGVuY2lsYnVmZmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQogSURpcmVjdDNEU3VyZmFjZTkgKkRlcHRoU3RlbmNpbGJ1ZmZlcjo6Z2V0RGVwdGhTdGVu
Y2lsKCkKIHsKICAgICByZXR1cm4gbURlcHRoU3RlbmNpbDsKQEAgLTQ1NCw3ICs0MDQsNyBAQCBE
ZXB0aGJ1ZmZlcjo6RGVwdGhidWZmZXIoSURpcmVjdDNEU3VyZmFjZTkgKmRlcHRoU3RlbmNpbCkg
OiBEZXB0aFN0ZW5jaWxidWZmZXIoZAogCiBEZXB0aGJ1ZmZlcjo6RGVwdGhidWZmZXIoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpIDogRGVwdGhTdGVuY2lsYnVmZmVyKHdp
ZHRoLCBoZWlnaHQsIHNhbXBsZXMpCiB7Ci0gICAgaWYgKGdldERlcHRoU3RlbmNpbCgpKQorICAg
IGlmIChtRGVwdGhTdGVuY2lsKQogICAgIHsKICAgICAgICAgbUludGVybmFsRm9ybWF0ID0gR0xf
REVQVEhfQ09NUE9ORU5UMTY7ICAgLy8gSWYgdGhlIHJlbmRlcmJ1ZmZlciBwYXJhbWV0ZXJzIGFy
ZSBxdWVyaWVkLCB0aGUgY2FsbGluZyBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGV4cGVjdCBvbmUgb2YgdGhlIHZhbGlk
IHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4gCkBAIC00NjYsMTYgKzQxNiw2IEBAIERl
cHRoYnVmZmVyOjp+RGVwdGhidWZmZXIoKQogewogfQogCi1ib29sIERlcHRoYnVmZmVyOjppc0Rl
cHRoYnVmZmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBEZXB0aGJ1
ZmZlcjo6aXNTdGVuY2lsYnVmZmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
IFN0ZW5jaWxidWZmZXI6OlN0ZW5jaWxidWZmZXIoSURpcmVjdDNEU3VyZmFjZTkgKmRlcHRoU3Rl
bmNpbCkgOiBEZXB0aFN0ZW5jaWxidWZmZXIoZGVwdGhTdGVuY2lsKQogewogICAgIGlmIChkZXB0
aFN0ZW5jaWwpCkBAIC00ODgsNyArNDI4LDcgQEAgU3RlbmNpbGJ1ZmZlcjo6U3RlbmNpbGJ1ZmZl
cihJRGlyZWN0M0RTdXJmYWNlOSAqZGVwdGhTdGVuY2lsKSA6IERlcHRoU3RlbmNpbGJ1ZmYKIAog
U3RlbmNpbGJ1ZmZlcjo6U3RlbmNpbGJ1ZmZlcihpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMc2l6
ZWkgc2FtcGxlcykgOiBEZXB0aFN0ZW5jaWxidWZmZXIod2lkdGgsIGhlaWdodCwgc2FtcGxlcykK
IHsKLSAgICBpZiAoZ2V0RGVwdGhTdGVuY2lsKCkpCisgICAgaWYgKG1EZXB0aFN0ZW5jaWwpCiAg
ICAgewogICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBHTF9TVEVOQ0lMX0lOREVYODsgICAvLyBJ
ZiB0aGUgcmVuZGVyYnVmZmVyIHBhcmFtZXRlcnMgYXJlIHF1ZXJpZWQsIHRoZSBjYWxsaW5nIGZ1
bmN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHdpbGwgZXhwZWN0IG9uZSBvZiB0aGUgdmFsaWQgcmVuZGVyYnVmZmVyIGZvcm1hdHMgZm9yIHVz
ZSBpbiAKQEAgLTUwMCwxMyArNDQwLDQgQEAgU3RlbmNpbGJ1ZmZlcjo6flN0ZW5jaWxidWZmZXIo
KQogewogfQogCi1ib29sIFN0ZW5jaWxidWZmZXI6OmlzRGVwdGhidWZmZXIoKSBjb25zdAotewot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBTdGVuY2lsYnVmZmVyOjppc1N0ZW5jaWxidWZm
ZXIoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgKaW5kZXggNWNmODI5
YzcwYWI1N2Y4NzEyZDVjMmI0YTJjNWFhM2MwZTg2YjI3NC4uZTg1NDc3NWQ5Mjk1MTUyODllNWI2
OGRiMzIxMmRkY2M5MDhjZmU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oCkBAIC0yMiwzOCArMjIsODYgQEAKIG5hbWVz
cGFjZSBnbAogewogY2xhc3MgVGV4dHVyZTsKK2NsYXNzIENvbG9yYnVmZmVyOworY2xhc3MgRGVw
dGhTdGVuY2lsYnVmZmVyOworCitjbGFzcyBSZW5kZXJidWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVi
bGljOgorICAgIFJlbmRlcmJ1ZmZlckludGVyZmFjZSgpOworCisgICAgdmlydHVhbCB+UmVuZGVy
YnVmZmVySW50ZXJmYWNlKCkge307CisKKyAgICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5ICpn
ZXRSZW5kZXJUYXJnZXQoKSA9IDA7CisgICAgdmlydHVhbCBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0
RGVwdGhTdGVuY2lsKCkgPSAwOworCisgICAgdmlydHVhbCBHTHNpemVpIGdldFdpZHRoKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBEM0RGT1JNQVQgZ2V0RDNERm9ybWF0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgR0xzaXpl
aSBnZXRTYW1wbGVzKCkgY29uc3QgPSAwOworCisgICAgR0x1aW50IGdldFJlZFNpemUoKSBjb25z
dDsKKyAgICBHTHVpbnQgZ2V0R3JlZW5TaXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldEJsdWVT
aXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldEFscGhhU2l6ZSgpIGNvbnN0OworICAgIEdMdWlu
dCBnZXREZXB0aFNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0U3RlbmNpbFNpemUoKSBjb25z
dDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0ID0gMDsKKwor
ICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJidWZmZXJJbnRl
cmZhY2UpOworfTsKKworY2xhc3MgUmVuZGVyYnVmZmVyVGV4dHVyZSA6IHB1YmxpYyBSZW5kZXJi
dWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFJlbmRlcmJ1ZmZlclRleHR1cmUoVGV4
dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHRhcmdldCk7CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJidWZm
ZXJUZXh0dXJlKCk7CisKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0UmVuZGVyVGFyZ2V0KCk7
CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKmdldERlcHRoU3RlbmNpbCgpOworCisgICAgdmlydHVh
bCBHTHNpemVpIGdldFdpZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdo
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7
CisgICAgdmlydHVhbCBEM0RGT1JNQVQgZ2V0RDNERm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50
IGdldFNlcmlhbCgpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOKFJlbmRlcmJ1ZmZlclRleHR1cmUpOworCisgICAgVGV4dHVyZSAqbVRleHR1cmU7Cisg
ICAgR0xlbnVtIG1UYXJnZXQ7Cit9OwogCiAvLyBBIGNsYXNzIGRlcml2ZWQgZnJvbSBSZW5kZXJi
dWZmZXJTdG9yYWdlIGlzIGNyZWF0ZWQgd2hlbmV2ZXIgZ2xSZW5kZXJidWZmZXJTdG9yYWdlCiAv
LyBpcyBjYWxsZWQuIFRoZSBzcGVjaWZpYyBjb25jcmV0ZSB0eXBlIGRlcGVuZHMgb24gd2hldGhl
ciB0aGUgaW50ZXJuYWwgZm9ybWF0IGlzCiAvLyBjb2xvdXIgZGVwdGgsIHN0ZW5jaWwgb3IgcGFj
a2VkIGRlcHRoL3N0ZW5jaWwuCi1jbGFzcyBSZW5kZXJidWZmZXJTdG9yYWdlCitjbGFzcyBSZW5k
ZXJidWZmZXJTdG9yYWdlIDogcHVibGljIFJlbmRlcmJ1ZmZlckludGVyZmFjZQogewogICBwdWJs
aWM6CiAgICAgUmVuZGVyYnVmZmVyU3RvcmFnZSgpOwogCiAgICAgdmlydHVhbCB+UmVuZGVyYnVm
ZmVyU3RvcmFnZSgpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0NvbG9yYnVmZmVyKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBib29sIGlzRGVwdGhidWZmZXIoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNTdGVuY2lsYnVmZmVyKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIElEaXJlY3QzRFN1
cmZhY2U5ICpnZXRSZW5kZXJUYXJnZXQoKTsKICAgICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5
ICpnZXREZXB0aFN0ZW5jaWwoKTsKIAogICAgIHZpcnR1YWwgR0xzaXplaSBnZXRXaWR0aCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdDsKICAgICB2aXJ0dWFs
IEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0OwotICAgIEdMdWludCBnZXRSZWRTaXpl
KCkgY29uc3Q7Ci0gICAgR0x1aW50IGdldEdyZWVuU2l6ZSgpIGNvbnN0OwotICAgIEdMdWludCBn
ZXRCbHVlU2l6ZSgpIGNvbnN0OwotICAgIEdMdWludCBnZXRBbHBoYVNpemUoKSBjb25zdDsKLSAg
ICBHTHVpbnQgZ2V0RGVwdGhTaXplKCkgY29uc3Q7Ci0gICAgR0x1aW50IGdldFN0ZW5jaWxTaXpl
KCkgY29uc3Q7CisgICAgdmlydHVhbCBEM0RGT1JNQVQgZ2V0RDNERm9ybWF0KCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgRDNE
Rk9STUFUIGdldEQzREZvcm1hdCgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdl
dFNlcmlhbCgpIGNvbnN0OwogCi0gICAgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0Owor
ICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVTZXJpYWwoKTsKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaW50IGlzc3VlQ3ViZVNlcmlhbHMoKTsKIAogICBwcm90ZWN0ZWQ6CiAgICAgR0xzaXplaSBt
V2lkdGg7CkBAIC02NSwyNiArMTEzLDIwIEBAIGNsYXNzIFJlbmRlcmJ1ZmZlclN0b3JhZ2UKICAg
cHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyYnVmZmVyU3RvcmFn
ZSk7CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IGlzc3VlU2VyaWFsKCk7Ci0KICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgbVNlcmlhbDsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbUN1cnJl
bnRTZXJpYWw7CiB9OwogCiAvLyBSZW5kZXJidWZmZXIgaW1wbGVtZW50cyB0aGUgR0wgcmVuZGVy
YnVmZmVyIG9iamVjdC4KLS8vIEl0J3Mgb25seSBhIHByb3h5IGZvciBhIFJlbmRlcmJ1ZmZlclN0
b3JhZ2UgaW5zdGFuY2U7IHRoZSBpbnRlcm5hbCBvYmplY3QKKy8vIEl0J3Mgb25seSBhIHByb3h5
IGZvciBhIFJlbmRlcmJ1ZmZlckludGVyZmFjZSBpbnN0YW5jZTsgdGhlIGludGVybmFsIG9iamVj
dAogLy8gY2FuIGNoYW5nZSB3aGVuZXZlciBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UgaXMgY2FsbGVk
LgogY2xhc3MgUmVuZGVyYnVmZmVyIDogcHVibGljIFJlZkNvdW50T2JqZWN0CiB7CiAgIHB1Ymxp
YzoKLSAgICBSZW5kZXJidWZmZXIoR0x1aW50IGlkLCBSZW5kZXJidWZmZXJTdG9yYWdlICpzdG9y
YWdlKTsKLQotICAgIH5SZW5kZXJidWZmZXIoKTsKKyAgICBSZW5kZXJidWZmZXIoR0x1aW50IGlk
LCBSZW5kZXJidWZmZXJJbnRlcmZhY2UgKnN0b3JhZ2UpOwogCi0gICAgYm9vbCBpc0NvbG9yYnVm
ZmVyKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0RlcHRoYnVmZmVyKCkgY29uc3Q7Ci0gICAgYm9vbCBp
c1N0ZW5jaWxidWZmZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIH5SZW5kZXJidWZmZXIoKTsKIAog
ICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRSZW5kZXJUYXJnZXQoKTsKICAgICBJRGlyZWN0M0RT
dXJmYWNlOSAqZ2V0RGVwdGhTdGVuY2lsKCk7CkBAIC0xMDQsNDAgKzE0NiwyNyBAQCBjbGFzcyBS
ZW5kZXJidWZmZXIgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QKICAgICB1bnNpZ25lZCBpbnQgZ2V0
U2VyaWFsKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFN0b3JhZ2UoUmVuZGVyYnVmZmVyU3RvcmFn
ZSAqbmV3U3RvcmFnZSk7Ci0gICAgUmVuZGVyYnVmZmVyU3RvcmFnZSAqZ2V0U3RvcmFnZSgpIHsg
cmV0dXJuIG1TdG9yYWdlOyB9CiAKICAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZX0FORF9B
U1NJR04oUmVuZGVyYnVmZmVyKTsKIAotICAgIFJlbmRlcmJ1ZmZlclN0b3JhZ2UgKm1TdG9yYWdl
OworICAgIFJlbmRlcmJ1ZmZlckludGVyZmFjZSAqbUluc3RhbmNlOwogfTsKIAogY2xhc3MgQ29s
b3JidWZmZXIgOiBwdWJsaWMgUmVuZGVyYnVmZmVyU3RvcmFnZQogewogICBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgQ29sb3JidWZmZXIoSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdldCk7Ci0g
ICAgQ29sb3JidWZmZXIoVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHRhcmdldCk7CiAgICAgQ29s
b3JidWZmZXIoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
c2l6ZWkgc2FtcGxlcyk7CiAKICAgICB2aXJ0dWFsIH5Db2xvcmJ1ZmZlcigpOwogCi0gICAgdmly
dHVhbCBib29sIGlzQ29sb3JidWZmZXIoKSBjb25zdDsKLQogICAgIHZpcnR1YWwgSURpcmVjdDNE
U3VyZmFjZTkgKmdldFJlbmRlclRhcmdldCgpOwogCi0gICAgdmlydHVhbCBHTHNpemVpIGdldFdp
ZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBH
TGVudW0gZ2V0VHlwZSgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBEM0RGT1JNQVQgZ2V0RDNERm9y
bWF0KCkgY29uc3Q7Ci0KICAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04o
Q29sb3JidWZmZXIpOwogCiAgICAgSURpcmVjdDNEU3VyZmFjZTkgKm1SZW5kZXJUYXJnZXQ7Ci0g
ICAgVGV4dHVyZSAqbVRleHR1cmU7Ci0gICAgR0xlbnVtIG1UYXJnZXQ7CiB9OwogCiBjbGFzcyBE
ZXB0aFN0ZW5jaWxidWZmZXIgOiBwdWJsaWMgUmVuZGVyYnVmZmVyU3RvcmFnZQpAQCAtMTQ4LDE0
ICsxNzcsMTMgQEAgY2xhc3MgRGVwdGhTdGVuY2lsYnVmZmVyIDogcHVibGljIFJlbmRlcmJ1ZmZl
clN0b3JhZ2UKIAogICAgIH5EZXB0aFN0ZW5jaWxidWZmZXIoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc0RlcHRoYnVmZmVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU3RlbmNpbGJ1ZmZl
cigpIGNvbnN0OwotCiAgICAgdmlydHVhbCBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0RGVwdGhTdGVu
Y2lsKCk7CiAKKyAgcHJvdGVjdGVkOgorICAgIElEaXJlY3QzRFN1cmZhY2U5ICptRGVwdGhTdGVu
Y2lsOworCiAgIHByaXZhdGU6CiAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKERlcHRoU3Rl
bmNpbGJ1ZmZlcik7Ci0gICAgSURpcmVjdDNEU3VyZmFjZTkgKm1EZXB0aFN0ZW5jaWw7CiB9Owog
CiBjbGFzcyBEZXB0aGJ1ZmZlciA6IHB1YmxpYyBEZXB0aFN0ZW5jaWxidWZmZXIKQEAgLTE2Niw5
ICsxOTQsNiBAQCBjbGFzcyBEZXB0aGJ1ZmZlciA6IHB1YmxpYyBEZXB0aFN0ZW5jaWxidWZmZXIK
IAogICAgIHZpcnR1YWwgfkRlcHRoYnVmZmVyKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXB0
aGJ1ZmZlcigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1N0ZW5jaWxidWZmZXIoKSBjb25z
dDsKLQogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihEZXB0aGJ1ZmZl
cik7CiB9OwpAQCAtMTgxLDkgKzIwNiw2IEBAIGNsYXNzIFN0ZW5jaWxidWZmZXIgOiBwdWJsaWMg
RGVwdGhTdGVuY2lsYnVmZmVyCiAKICAgICB2aXJ0dWFsIH5TdGVuY2lsYnVmZmVyKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNEZXB0aGJ1ZmZlcigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c1N0ZW5jaWxidWZmZXIoKSBjb25zdDsKLQogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihTdGVuY2lsYnVmZmVyKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1NoYWRlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL1NoYWRlci5jcHAKaW5kZXggZjY2YjJjNTJhYjdhNGY1OTE1NmE2
YzI4ZGI0MGZlZjRmZDVlMGYzMy4uNThlZWQwNzg0MDY1NDNjZWIxMjFkYzcyODIxMzI1M2JlNWFl
MGIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9T
aGFkZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hh
ZGVyLmNwcApAQCAtMTU3LDIyICsxNTcsMzQgQEAgaW50IFNoYWRlcjo6Z2V0U291cmNlTGVuZ3Ro
KCkgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgU2hhZGVyOjpnZXRTb3VyY2UoR0xzaXplaSBidWZT
aXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKnNvdXJjZSkKK2ludCBTaGFkZXI6OmdldFRyYW5z
bGF0ZWRTb3VyY2VMZW5ndGgoKSBjb25zdAoreworICAgIGlmICghbUhsc2wpCisgICAgeworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICByZXR1cm4gc3Ry
bGVuKG1IbHNsKSArIDE7CisgICAgfQorfQorCit2b2lkIFNoYWRlcjo6Z2V0U291cmNlSW1wbChj
aGFyICpzb3VyY2UsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZm
ZXIpCiB7CiAgICAgaW50IGluZGV4ID0gMDsKIAotICAgIGlmIChtU291cmNlKQorICAgIGlmIChz
b3VyY2UpCiAgICAgewotICAgICAgICB3aGlsZSAoaW5kZXggPCBidWZTaXplIC0gMSAmJiBpbmRl
eCA8IChpbnQpc3RybGVuKG1Tb3VyY2UpKQorICAgICAgICB3aGlsZSAoaW5kZXggPCBidWZTaXpl
IC0gMSAmJiBpbmRleCA8IChpbnQpc3RybGVuKHNvdXJjZSkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHNvdXJjZVtpbmRleF0gPSBtU291cmNlW2luZGV4XTsKKyAgICAgICAgICAgIGJ1ZmZlcltp
bmRleF0gPSBzb3VyY2VbaW5kZXhdOwogICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChidWZTaXplKQogICAgIHsKLSAgICAgICAgc291cmNlW2luZGV4XSA9
ICdcMCc7CisgICAgICAgIGJ1ZmZlcltpbmRleF0gPSAnXDAnOwogICAgIH0KIAogICAgIGlmIChs
ZW5ndGgpCkBAIC0xODEsNiArMTkzLDE2IEBAIHZvaWQgU2hhZGVyOjpnZXRTb3VyY2UoR0xzaXpl
aSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKnNvdXJjZSkKICAgICB9CiB9CiAKK3Zv
aWQgU2hhZGVyOjpnZXRTb3VyY2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNo
YXIgKmJ1ZmZlcikKK3sKKyAgICBnZXRTb3VyY2VJbXBsKG1Tb3VyY2UsIGJ1ZlNpemUsIGxlbmd0
aCwgYnVmZmVyKTsKK30KKwordm9pZCBTaGFkZXI6OmdldFRyYW5zbGF0ZWRTb3VyY2UoR0xzaXpl
aSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZlcikKK3sKKyAgICBnZXRTb3Vy
Y2VJbXBsKG1IbHNsLCBidWZTaXplLCBsZW5ndGgsIGJ1ZmZlcik7Cit9CisKIGJvb2wgU2hhZGVy
Ojppc0NvbXBpbGVkKCkKIHsKICAgICByZXR1cm4gbUhsc2wgIT0gTlVMTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1NoYWRlci5oCmluZGV4IDUzNWI0MmQ4YzZh
MDBhN2Y4OTMxMDNkOTdlNDUwMDg1MzYyOTgwM2MuLjIyZmM2Mzc2YzhlNGU5Y2U2OWJhZDNlYWFl
ZGJhMDAyMmJmZjEwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvU2hhZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9TaGFkZXIuaApAQCAtNTcsNyArNTcsOSBAQCBjbGFzcyBTaGFkZXIKICAgICBpbnQgZ2V0
SW5mb0xvZ0xlbmd0aCgpIGNvbnN0OwogICAgIHZvaWQgZ2V0SW5mb0xvZyhHTHNpemVpIGJ1ZlNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZyk7CiAgICAgaW50IGdldFNvdXJjZUxl
bmd0aCgpIGNvbnN0OwotICAgIHZvaWQgZ2V0U291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCBjaGFyICpzb3VyY2UpOworICAgIHZvaWQgZ2V0U291cmNlKEdMc2l6ZWkgYnVm
U2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpOworICAgIGludCBnZXRUcmFuc2xh
dGVkU291cmNlTGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCBnZXRUcmFuc2xhdGVkU291cmNlKEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpOwogCiAgICAgdmly
dHVhbCB2b2lkIGNvbXBpbGUoKSA9IDA7CiAgICAgYm9vbCBpc0NvbXBpbGVkKCk7CkBAIC03OCw2
ICs4MCw4IEBAIGNsYXNzIFNoYWRlcgogCiAgICAgdm9pZCBjb21waWxlVG9ITFNMKHZvaWQgKmNv
bXBpbGVyKTsKIAorICAgIHZvaWQgZ2V0U291cmNlSW1wbChjaGFyICpzb3VyY2UsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpOworCiAgICAgc3RhdGljIEdM
ZW51bSBwYXJzZVR5cGUoY29uc3Qgc3RkOjpzdHJpbmcgJnR5cGUpOwogICAgIHN0YXRpYyBib29s
IGNvbXBhcmVWYXJ5aW5nKGNvbnN0IFZhcnlpbmcgJngsIGNvbnN0IFZhcnlpbmcgJnkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1RleHR1cmUu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcApp
bmRleCBiYjRjNGI4ZjVjNzM5OWUxZWU4YTE1Y2FmODY4MTdkZjc0OGUzNTVhLi5iODM2NTFlM2Y2
NWUzOGEwZDlmNDQyMTEyMTU2ZWE2OWQzZDRhMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAKQEAgLTI3LDQ3ICsyNywyMiBAQAog
CiBuYW1lc3BhY2UgZ2wKIHsKLXVuc2lnbmVkIGludCBUZXh0dXJlOjptQ3VycmVudFNlcmlhbCA9
IDE7Cit1bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2U6Om1DdXJyZW50VGV4dHVyZVNlcmlhbCA9
IDE7CiAKLVRleHR1cmU6OkltYWdlOjpJbWFnZSgpCi0gIDogd2lkdGgoMCksIGhlaWdodCgwKSwg
ZGlydHkoZmFsc2UpLCBzdXJmYWNlKE5VTEwpLCBmb3JtYXQoR0xfTk9ORSksIHR5cGUoR0xfVU5T
SUdORURfQllURSkKK3N0YXRpYyBEM0RGT1JNQVQgQ29udmVydFRleHR1cmVGb3JtYXRUeXBlKEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQogewotfQotCi1UZXh0dXJlOjpJbWFnZTo6fkltYWdl
KCkKLXsKLSAgICBpZiAoc3VyZmFjZSkKKyAgICBpZiAoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURf
UkdCX1MzVENfRFhUMV9FWFQgfHwKKyAgICAgICAgZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhUKQogICAgIHsKLSAgICAgICAgc3VyZmFjZS0+UmVsZWFzZSgpOworICAg
ICAgICByZXR1cm4gRDNERk1UX0RYVDE7CiAgICAgfQotfQotCi1ib29sIFRleHR1cmU6OkltYWdl
Ojppc1JlbmRlcmFibGUoKSBjb25zdAoteyAgICAKLSAgICBzd2l0Y2goZ2V0RDNERm9ybWF0KCkp
CisgICAgZWxzZSBpZiAoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5H
TEUpCiAgICAgewotICAgICAgY2FzZSBEM0RGTVRfTDg6Ci0gICAgICBjYXNlIEQzREZNVF9BOEw4
OgotICAgICAgY2FzZSBEM0RGTVRfRFhUMToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
Y2FzZSBEM0RGTVRfQThSOEc4Qjg6Ci0gICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKLSAgICAg
IGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6Ci0gICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJS
MzJGOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgIHJldHVybiBEM0RGTVRfRFhUMzsKICAgICB9Ci0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLUQzREZPUk1BVCBUZXh0dXJlOjpJbWFnZTo6Z2V0RDNERm9ybWF0KCkg
Y29uc3QKLXsKLSAgICBpZiAoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQgfHwKLSAgICAgICAgZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
KQorICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FO
R0xFKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEQzREZNVF9EWFQxOworICAgICAgICByZXR1cm4g
RDNERk1UX0RYVDU7CiAgICAgfQogICAgIGVsc2UgaWYgKHR5cGUgPT0gR0xfRkxPQVQpCiAgICAg
ewpAQCAtOTgsMjQzICs3MywzMjQgQEAgRDNERk9STUFUIFRleHR1cmU6OkltYWdlOjpnZXREM0RG
b3JtYXQoKSBjb25zdAogICAgIHJldHVybiBEM0RGTVRfQThSOEc4Qjg7CiB9CiAKLVRleHR1cmU6
OlRleHR1cmUoR0x1aW50IGlkKSA6IFJlZkNvdW50T2JqZWN0KGlkKSwgbVNlcmlhbChpc3N1ZVNl
cmlhbCgpKQorc3RhdGljIGJvb2wgSXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZShEM0RGT1JNQVQg
Zm9ybWF0KQogewotICAgIG1NaW5GaWx0ZXIgPSBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVI7Ci0g
ICAgbU1hZ0ZpbHRlciA9IEdMX0xJTkVBUjsKLSAgICBtV3JhcFMgPSBHTF9SRVBFQVQ7Ci0gICAg
bVdyYXBUID0gR0xfUkVQRUFUOwotICAgIG1EaXJ0eVBhcmFtZXRlciA9IHRydWU7Ci0gICAgCi0g
ICAgbURpcnR5SW1hZ2UgPSB0cnVlOwotICAgIAotICAgIG1Jc1JlbmRlcmFibGUgPSBmYWxzZTsK
KyAgICBzd2l0Y2goZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRDNERk1UX0w4OgorICAgICAg
Y2FzZSBEM0RGTVRfQThMODoKKyAgICAgIGNhc2UgRDNERk1UX0RYVDE6CisgICAgICBjYXNlIEQz
REZNVF9EWFQzOgorICAgICAgY2FzZSBEM0RGTVRfRFhUNToKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhC
ODoKKyAgICAgIGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICBjYXNlIEQzREZNVF9B
MzJCMzJHMzJSMzJGOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwogfQogCi1UZXh0
dXJlOjp+VGV4dHVyZSgpCitJbWFnZTo6SW1hZ2UoKQogeworICAgIG1XaWR0aCA9IDA7IAorICAg
IG1IZWlnaHQgPSAwOworICAgIG1Gb3JtYXQgPSBHTF9OT05FOworICAgIG1UeXBlID0gR0xfVU5T
SUdORURfQllURTsKKworICAgIG1TdXJmYWNlID0gTlVMTDsKKworICAgIG1EaXJ0eSA9IGZhbHNl
OworCisgICAgbUQzRFBvb2wgPSBEM0RQT09MX1NZU1RFTU1FTTsKKyAgICBtRDNERm9ybWF0ID0g
RDNERk1UX1VOS05PV047CiB9CiAKLUJsaXQgKlRleHR1cmU6OmdldEJsaXR0ZXIoKQorSW1hZ2U6
On5JbWFnZSgpCiB7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IGdldENvbnRleHQoKTsKLSAgICBy
ZXR1cm4gY29udGV4dC0+Z2V0QmxpdHRlcigpOworICAgIGlmIChtU3VyZmFjZSkKKyAgICB7Cisg
ICAgICAgIG1TdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgfQogfQogCi0vLyBSZXR1cm5zIHRydWUg
b24gc3VjY2Vzc2Z1bCBmaWx0ZXIgc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikK
LWJvb2wgVGV4dHVyZTo6c2V0TWluRmlsdGVyKEdMZW51bSBmaWx0ZXIpCitib29sIEltYWdlOjpy
ZWRlZmluZShHTGVudW0gZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIHR5cGUsIGJvb2wgZm9yY2VSZWxlYXNlKQogewotICAgIHN3aXRjaCAoZmlsdGVyKQorICAg
IGlmIChtV2lkdGggIT0gd2lkdGggfHwKKyAgICAgICAgbUhlaWdodCAhPSBoZWlnaHQgfHwKKyAg
ICAgICAgbUZvcm1hdCAhPSBmb3JtYXQgfHwKKyAgICAgICAgbVR5cGUgIT0gdHlwZSB8fAorICAg
ICAgICBmb3JjZVJlbGVhc2UpCiAgICAgewotICAgICAgY2FzZSBHTF9ORUFSRVNUOgotICAgICAg
Y2FzZSBHTF9MSU5FQVI6Ci0gICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1Q6Ci0g
ICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVDoKLSAgICAgIGNhc2UgR0xfTkVBUkVT
VF9NSVBNQVBfTElORUFSOgotICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjoKKyAg
ICAgICAgbVdpZHRoID0gd2lkdGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgICAg
IG1Gb3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIG1UeXBlID0gdHlwZTsKKyAgICAgICAgLy8gY29t
cHV0ZSB0aGUgZDNkIGZvcm1hdCB0aGF0IHdpbGwgYmUgdXNlZAorICAgICAgICBtRDNERm9ybWF0
ID0gQ29udmVydFRleHR1cmVGb3JtYXRUeXBlKG1Gb3JtYXQsIG1UeXBlKTsKKworICAgICAgICBp
ZiAobVN1cmZhY2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtTWluRmlsdGVyICE9IGZp
bHRlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtTWluRmlsdGVyID0gZmlsdGVy
OwotICAgICAgICAgICAgICAgIG1EaXJ0eVBhcmFtZXRlciA9IHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIG1TdXJmYWNlLT5SZWxlYXNl
KCk7CisgICAgICAgICAgICBtU3VyZmFjZSA9IE5VTEw7CiAgICAgICAgIH0KLSAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVs
IGZpbHRlciBzdGF0ZSB1cGRhdGUgKHZhbGlkIGVudW0gcGFyYW1ldGVyKQotYm9vbCBUZXh0dXJl
OjpzZXRNYWdGaWx0ZXIoR0xlbnVtIGZpbHRlcikKK3ZvaWQgSW1hZ2U6OmNyZWF0ZVN1cmZhY2Uo
KQogewotICAgIHN3aXRjaCAoZmlsdGVyKQorICAgIGlmKG1TdXJmYWNlKQogICAgIHsKLSAgICAg
IGNhc2UgR0xfTkVBUkVTVDoKLSAgICAgIGNhc2UgR0xfTElORUFSOgorICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgSURpcmVjdDNEVGV4dHVyZTkgKm5ld1RleHR1cmUgPSBOVUxMOworICAg
IElEaXJlY3QzRFN1cmZhY2U5ICpuZXdTdXJmYWNlID0gTlVMTDsKKyAgICBjb25zdCBEM0RQT09M
IHBvb2xUb1VzZSA9IEQzRFBPT0xfU1lTVEVNTUVNOworCisgICAgaWYgKG1XaWR0aCAhPSAwICYm
IG1IZWlnaHQgIT0gMCkKKyAgICB7CisgICAgICAgIGludCBsZXZlbFRvRmV0Y2ggPSAwOworICAg
ICAgICBHTHNpemVpIHJlcXVlc3RXaWR0aCA9IG1XaWR0aDsKKyAgICAgICAgR0xzaXplaSByZXF1
ZXN0SGVpZ2h0ID0gbUhlaWdodDsKKyAgICAgICAgaWYgKElzQ29tcHJlc3NlZChtRm9ybWF0KSAm
JiAobVdpZHRoICUgNCAhPSAwIHx8IG1IZWlnaHQgJSA0ICE9IDApKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobU1hZ0ZpbHRlciAhPSBmaWx0ZXIpCisgICAgICAgICAgICBib29sIGlzTXVs
dDQgPSBmYWxzZTsKKyAgICAgICAgICAgIGludCB1cHNhbXBsZUNvdW50ID0gMDsKKyAgICAgICAg
ICAgIHdoaWxlICghaXNNdWx0NCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtTWFn
RmlsdGVyID0gZmlsdGVyOwotICAgICAgICAgICAgICAgIG1EaXJ0eVBhcmFtZXRlciA9IHRydWU7
CisgICAgICAgICAgICAgICAgcmVxdWVzdFdpZHRoIDw8PSAxOworICAgICAgICAgICAgICAgIHJl
cXVlc3RIZWlnaHQgPDw9IDE7CisgICAgICAgICAgICAgICAgdXBzYW1wbGVDb3VudCsrOworICAg
ICAgICAgICAgICAgIGlmIChyZXF1ZXN0V2lkdGggJSA0ID09IDAgJiYgcmVxdWVzdEhlaWdodCAl
IDQgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlzTXVsdDQg
PSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgbGV2ZWxUb0ZldGNoID0gdXBzYW1wbGVDb3VudDsKICAg
ICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gZ2V0RGV2aWNlKCktPkNyZWF0ZVRleHR1cmUocmVxdWVzdFdpZHRo
LCByZXF1ZXN0SGVpZ2h0LCBsZXZlbFRvRmV0Y2ggKyAxLCBOVUxMLCBnZXREM0RGb3JtYXQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb29s
VG9Vc2UsICZuZXdUZXh0dXJlLCBOVUxMKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklE
RU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICAgICAgRVJSKCJD
cmVhdGluZyBpbWFnZSBzdXJmYWNlIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybiBlcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIG5ld1RleHR1cmUtPkdl
dFN1cmZhY2VMZXZlbChsZXZlbFRvRmV0Y2gsICZuZXdTdXJmYWNlKTsKKyAgICAgICAgbmV3VGV4
dHVyZS0+UmVsZWFzZSgpOwogICAgIH0KKworICAgIG1TdXJmYWNlID0gbmV3U3VyZmFjZTsKKyAg
ICBtRGlydHkgPSBmYWxzZTsKKyAgICBtRDNEUG9vbCA9IHBvb2xUb1VzZTsKIH0KIAotLy8gUmV0
dXJucyB0cnVlIG9uIHN1Y2Nlc3NmdWwgd3JhcCBzdGF0ZSB1cGRhdGUgKHZhbGlkIGVudW0gcGFy
YW1ldGVyKQotYm9vbCBUZXh0dXJlOjpzZXRXcmFwUyhHTGVudW0gd3JhcCkKK0hSRVNVTFQgSW1h
Z2U6OmxvY2soRDNETE9DS0VEX1JFQ1QgKmxvY2tlZFJlY3QsIGNvbnN0IFJFQ1QgKnJlY3QpCiB7
Ci0gICAgc3dpdGNoICh3cmFwKQorICAgIGNyZWF0ZVN1cmZhY2UoKTsKKworICAgIEhSRVNVTFQg
cmVzdWx0ID0gRDNERVJSX0lOVkFMSURDQUxMOworCisgICAgaWYgKG1TdXJmYWNlKQogICAgIHsK
LSAgICAgIGNhc2UgR0xfUkVQRUFUOgotICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOgotICAg
ICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICht
V3JhcFMgIT0gd3JhcCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtV3JhcFMgPSB3
cmFwOwotICAgICAgICAgICAgICAgIG1EaXJ0eVBhcmFtZXRlciA9IHRydWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQgPSBtU3VyZmFjZS0+TG9ja1Jl
Y3QobG9ja2VkUmVjdCwgcmVjdCwgMCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CisKKyAgICAgICAgbURpcnR5ID0gdHJ1ZTsKICAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCi0vLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzc2Z1bCB3cmFwIHN0YXRlIHVwZGF0ZSAo
dmFsaWQgZW51bSBwYXJhbWV0ZXIpCi1ib29sIFRleHR1cmU6OnNldFdyYXBUKEdMZW51bSB3cmFw
KQordm9pZCBJbWFnZTo6dW5sb2NrKCkKIHsKLSAgICBzd2l0Y2ggKHdyYXApCisgICAgaWYgKG1T
dXJmYWNlKQogICAgIHsKLSAgICAgIGNhc2UgR0xfUkVQRUFUOgotICAgICAgY2FzZSBHTF9DTEFN
UF9UT19FREdFOgotICAgICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChtV3JhcFQgIT0gd3JhcCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBtV3JhcFQgPSB3cmFwOwotICAgICAgICAgICAgICAgIG1EaXJ0eVBhcmFtZXRlciA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBIUkVTVUxUIHJl
c3VsdCA9IG1TdXJmYWNlLT5VbmxvY2tSZWN0KCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQo
cmVzdWx0KSk7CiAgICAgfQogfQogCi1HTGVudW0gVGV4dHVyZTo6Z2V0TWluRmlsdGVyKCkgY29u
c3QKK2Jvb2wgSW1hZ2U6OmlzUmVuZGVyYWJsZUZvcm1hdCgpIGNvbnN0Cit7ICAgIAorICAgIHJl
dHVybiBJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKGdldEQzREZvcm1hdCgpKTsKK30KKworRDNE
Rk9STUFUIEltYWdlOjpnZXREM0RGb3JtYXQoKSBjb25zdAogewotICAgIHJldHVybiBtTWluRmls
dGVyOworICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIGlmIHRoZSBpbWFnZSBoYXNuJ3Qg
YmVlbiByZWRlZmluZWQgZmlyc3QKKyAgICAvLyB3aGljaCB3b3VsZCBiZSBhIGJ1ZyBieSB0aGUg
Y2FsbGVyCisgICAgQVNTRVJUKG1EM0RGb3JtYXQgIT0gRDNERk1UX1VOS05PV04pOworCisgICAg
cmV0dXJuIG1EM0RGb3JtYXQ7CiB9CiAKLUdMZW51bSBUZXh0dXJlOjpnZXRNYWdGaWx0ZXIoKSBj
b25zdAorSURpcmVjdDNEU3VyZmFjZTkgKkltYWdlOjpnZXRTdXJmYWNlKCkKIHsKLSAgICByZXR1
cm4gbU1hZ0ZpbHRlcjsKKyAgICBjcmVhdGVTdXJmYWNlKCk7CisKKyAgICByZXR1cm4gbVN1cmZh
Y2U7CiB9CiAKLUdMZW51bSBUZXh0dXJlOjpnZXRXcmFwUygpIGNvbnN0Cit2b2lkIEltYWdlOjpz
ZXRNYW5hZ2VkU3VyZmFjZShJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSkKIHsKLSAgICByZXR1
cm4gbVdyYXBTOworICAgIGlmIChtU3VyZmFjZSkKKyAgICB7CisgICAgICAgIEQzRFhMb2FkU3Vy
ZmFjZUZyb21TdXJmYWNlKHN1cmZhY2UsIE5VTEwsIE5VTEwsIG1TdXJmYWNlLCBOVUxMLCBOVUxM
LCBEM0RYX0ZJTFRFUl9CT1gsIDApOworICAgICAgICBtU3VyZmFjZS0+UmVsZWFzZSgpOworICAg
IH0KKworICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAgIHN1cmZhY2UtPkdldERlc2MoJmRl
c2MpOworICAgIEFTU0VSVChkZXNjLlBvb2wgPT0gRDNEUE9PTF9NQU5BR0VEKTsKKworICAgIG1T
dXJmYWNlID0gc3VyZmFjZTsKKyAgICBtRDNEUG9vbCA9IGRlc2MuUG9vbDsKIH0KIAotR0xlbnVt
IFRleHR1cmU6OmdldFdyYXBUKCkgY29uc3QKK3ZvaWQgSW1hZ2U6OnVwZGF0ZVN1cmZhY2UoSURp
cmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKIHsKLSAgICByZXR1cm4gbVdyYXBUOwor
ICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2VTdXJmYWNlID0gZ2V0U3VyZmFjZSgpOworCisg
ICAgaWYgKHNvdXJjZVN1cmZhY2UgIT0gZGVzdFN1cmZhY2UpCisgICAgeworICAgICAgICBSRUNU
IHJlY3QgPSB0cmFuc2Zvcm1QaXhlbFJlY3QoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgbUhlaWdodCk7CisKKyAgICAgICAgaWYgKG1EM0RQb29sID09IEQzRFBPT0xfTUFOQUdFRCkK
KyAgICAgICAgeworICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBEM0RYTG9hZFN1cmZhY2VG
cm9tU3VyZmFjZShkZXN0U3VyZmFjZSwgTlVMTCwgJnJlY3QsIHNvdXJjZVN1cmZhY2UsIE5VTEws
ICZyZWN0LCBEM0RYX0ZJTFRFUl9CT1gsIDApOworICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIFVwZGF0ZVN1cmZhY2U6IHNvdXJjZSBtdXN0IGJlIFNZU1RFTU1FTSwgZGVzdCBtdXN0
IGJlIERFRkFVTFQgcG9vbHMgCisgICAgICAgICAgICBQT0lOVCBwb2ludCA9IHtyZWN0LmxlZnQs
IHJlY3QudG9wfTsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0RGV2aWNlKCktPlVw
ZGF0ZVN1cmZhY2Uoc291cmNlU3VyZmFjZSwgJnJlY3QsIGRlc3RTdXJmYWNlLCAmcG9pbnQpOwor
ICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgfQorICAgIH0K
IH0KIAogLy8gU3RvcmUgdGhlIHBpeGVsIHJlY3RhbmdsZSBkZXNpZ25hdGVkIGJ5IHhvZmZzZXQs
eW9mZnNldCx3aWR0aCxoZWlnaHQgd2l0aCBwaXhlbHMgc3RvcmVkIGFzIGZvcm1hdC90eXBlIGF0
IGlucHV0CiAvLyBpbnRvIHRoZSB0YXJnZXQgcGl4ZWwgcmVjdGFuZ2xlIGF0IG91dHB1dCB3aXRo
IG91dHB1dFBpdGNoIGJ5dGVzIGluIGJldHdlZW4gZWFjaCBsaW5lLgotdm9pZCBUZXh0dXJlOjps
b2FkSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKmlucHV0
LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCwgRDNEU1VSRkFDRV9ERVNDICpkZXNj
cmlwdGlvbikgY29uc3QKK3ZvaWQgSW1hZ2U6OmxvYWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewotICAgIEdMc2l6
ZWkgaW5wdXRQaXRjaCA9IC1Db21wdXRlUGl0Y2god2lkdGgsIGZvcm1hdCwgdHlwZSwgdW5wYWNr
QWxpZ25tZW50KTsKKyAgICBHTHNpemVpIGlucHV0UGl0Y2ggPSAtQ29tcHV0ZVBpdGNoKHdpZHRo
LCBtRm9ybWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQpOwogICAgIGlucHV0ID0gKChjaGFyKilp
bnB1dCkgLSBpbnB1dFBpdGNoICogKGhlaWdodCAtIDEpOwogCiAgICAgc3dpdGNoICh0eXBlKQog
ICAgIHsKICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgc3dpdGNoIChmb3Jt
YXQpCisgICAgICAgIHN3aXRjaCAobUZvcm1hdCkKICAgICAgICAgewogICAgICAgICAgIGNhc2Ug
R0xfQUxQSEE6Ci0gICAgICAgICAgICBsb2FkQWxwaGFJbWFnZURhdGEoeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQp
OworICAgICAgICAgICAgbG9hZEFscGhhRGF0YSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0UGl0Y2gsIG91dHB1dCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKLSAgICAgICAgICAgIGxvYWRM
dW1pbmFuY2VJbWFnZURhdGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQ
aXRjaCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQsIGRlc2NyaXB0aW9uLT5Gb3JtYXQgPT0g
RDNERk1UX0w4KTsKKyAgICAgICAgICAgIGxvYWRMdW1pbmFuY2VEYXRhKHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBvdXRwdXRQaXRjaCwgb3V0cHV0
LCBnZXREM0RGb3JtYXQoKSA9PSBEM0RGTVRfTDgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICAgICAgICBsb2FkTHVtaW5hbmNl
QWxwaGFJbWFnZURhdGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRj
aCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQsIGRlc2NyaXB0aW9uLT5Gb3JtYXQgPT0gRDNE
Rk1UX0E4TDgpOworICAgICAgICAgICAgbG9hZEx1bWluYW5jZUFscGhhRGF0YSh4b2Zmc2V0LCB5
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0UGl0Y2gsIG91
dHB1dCwgZ2V0RDNERm9ybWF0KCkgPT0gRDNERk1UX0E4TDgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgY2FzZSBHTF9SR0I6Ci0gICAgICAgICAgICBsb2FkUkdCVUJ5dGVJbWFnZURh
dGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91
dHB1dFBpdGNoLCBvdXRwdXQpOworICAgICAgICAgICAgbG9hZFJHQlVCeXRlRGF0YSh4b2Zmc2V0
LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0UGl0Y2gs
IG91dHB1dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIEdMX1JHQkE6CiAg
ICAgICAgICAgICBpZiAoc3VwcG9ydHNTU0UyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgbG9hZFJHQkFVQnl0ZUltYWdlRGF0YVNTRTIoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQpOworICAgICAg
ICAgICAgICAgIGxvYWRSR0JBVUJ5dGVEYXRhU1NFMih4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0UGl0Y2gsIG91dHB1dCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
bG9hZFJHQkFVQnl0ZUltYWdlRGF0YSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBp
bnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0UGl0Y2gsIG91dHB1dCk7CisgICAgICAgICAgICAgICAg
bG9hZFJHQkFVQnl0ZURhdGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQ
aXRjaCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKLSAgICAgICAgICAgIGxv
YWRCR1JBSW1hZ2VEYXRhKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0
Y2gsIGlucHV0LCBvdXRwdXRQaXRjaCwgb3V0cHV0KTsKKyAgICAgICAgICAgIGxvYWRCR1JBRGF0
YSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0
cHV0UGl0Y2gsIG91dHB1dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBH
TF9VTlNJR05FRF9TSE9SVF81XzZfNToKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpCisgICAgICAg
IHN3aXRjaCAobUZvcm1hdCkKICAgICAgICAgewogICAgICAgICAgIGNhc2UgR0xfUkdCOgotICAg
ICAgICAgICAgbG9hZFJHQjU2NUltYWdlRGF0YSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0UGl0Y2gsIG91dHB1dCk7CisgICAgICAgICAg
ICBsb2FkUkdCNTY1RGF0YSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBp
dGNoLCBpbnB1dCwgb3V0cHV0UGl0Y2gsIG91dHB1dCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgotICAgICAgICBzd2l0Y2gg
KGZvcm1hdCkKKyAgICAgICAgc3dpdGNoIChtRm9ybWF0KQogICAgICAgICB7CiAgICAgICAgICAg
Y2FzZSBHTF9SR0JBOgotICAgICAgICAgICAgbG9hZFJHQkE0NDQ0SW1hZ2VEYXRhKHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBvdXRwdXRQaXRjaCwg
b3V0cHV0KTsKKyAgICAgICAgICAgIGxvYWRSR0JBNDQ0NERhdGEoeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV81
XzVfMToKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpCisgICAgICAgIHN3aXRjaCAobUZvcm1hdCkK
ICAgICAgICAgewogICAgICAgICAgIGNhc2UgR0xfUkdCQToKLSAgICAgICAgICAgIGxvYWRSR0JB
NTU1MUltYWdlRGF0YSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNo
LCBpbnB1dCwgb3V0cHV0UGl0Y2gsIG91dHB1dCk7CisgICAgICAgICAgICBsb2FkUkdCQTU1NTFE
YXRhKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBv
dXRwdXRQaXRjaCwgb3V0cHV0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEdMX0ZMT0FUOgotICAgICAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICAgICAgc3dpdGNoIChtRm9y
bWF0KQogICAgICAgICB7CiAgICAgICAgICAgLy8gZmxvYXQgdGV4dHVyZXMgYXJlIGNvbnZlcnRl
ZCB0byBSR0JBLCBub3QgQkdSQSwgYXMgdGhleSdyZSBzdG9yZWQgdGhhdCB3YXkgaW4gRDNECiAg
ICAgICAgICAgY2FzZSBHTF9BTFBIQToKLSAgICAgICAgICAgIGxvYWRBbHBoYUZsb2F0SW1hZ2VE
YXRhKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBv
dXRwdXRQaXRjaCwgb3V0cHV0KTsKKyAgICAgICAgICAgIGxvYWRBbHBoYUZsb2F0RGF0YSh4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0UGl0
Y2gsIG91dHB1dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIEdMX0xVTUlO
QU5DRToKLSAgICAgICAgICAgIGxvYWRMdW1pbmFuY2VGbG9hdEltYWdlRGF0YSh4b2Zmc2V0LCB5
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0UGl0Y2gsIG91
dHB1dCk7CisgICAgICAgICAgICBsb2FkTHVtaW5hbmNlRmxvYXREYXRhKHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBvdXRwdXRQaXRjaCwgb3V0cHV0
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhB
OgotICAgICAgICAgICAgbG9hZEx1bWluYW5jZUFscGhhRmxvYXRJbWFnZURhdGEoeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91dHB1dFBpdGNoLCBv
dXRwdXQpOworICAgICAgICAgICAgbG9hZEx1bWluYW5jZUFscGhhRmxvYXREYXRhKHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBvdXRwdXRQaXRjaCwg
b3V0cHV0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfUkdCOgotICAg
ICAgICAgICAgbG9hZFJHQkZsb2F0SW1hZ2VEYXRhKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBvdXRwdXRQaXRjaCwgb3V0cHV0KTsKKyAgICAgICAg
ICAgIGxvYWRSR0JGbG9hdERhdGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5w
dXRQaXRjaCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgY2FzZSBHTF9SR0JBOgotICAgICAgICAgICAgbG9hZFJHQkFGbG9hdEltYWdl
RGF0YSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwg
b3V0cHV0UGl0Y2gsIG91dHB1dCk7CisgICAgICAgICAgICBsb2FkUkdCQUZsb2F0RGF0YSh4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0UGl0
Y2gsIG91dHB1dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9IQUxG
X0ZMT0FUX09FUzoKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpCisgICAgICAgIHN3aXRjaCAobUZv
cm1hdCkKICAgICAgICAgewogICAgICAgICAgIC8vIGZsb2F0IHRleHR1cmVzIGFyZSBjb252ZXJ0
ZWQgdG8gUkdCQSwgbm90IEJHUkEsIGFzIHRoZXkncmUgc3RvcmVkIHRoYXQgd2F5IGluIEQzRAog
ICAgICAgICAgIGNhc2UgR0xfQUxQSEE6Ci0gICAgICAgICAgICBsb2FkQWxwaGFIYWxmRmxvYXRJ
bWFnZURhdGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5w
dXQsIG91dHB1dFBpdGNoLCBvdXRwdXQpOworICAgICAgICAgICAgbG9hZEFscGhhSGFsZkZsb2F0
RGF0YSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwg
b3V0cHV0UGl0Y2gsIG91dHB1dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNl
IEdMX0xVTUlOQU5DRToKLSAgICAgICAgICAgIGxvYWRMdW1pbmFuY2VIYWxmRmxvYXRJbWFnZURh
dGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91
dHB1dFBpdGNoLCBvdXRwdXQpOworICAgICAgICAgICAgbG9hZEx1bWluYW5jZUhhbGZGbG9hdERh
dGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91
dHB1dFBpdGNoLCBvdXRwdXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICAgICAgICBsb2FkTHVtaW5hbmNlQWxwaGFIYWxmRmxv
YXRJbWFnZURhdGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwg
aW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQpOworICAgICAgICAgICAgbG9hZEx1bWluYW5jZUFs
cGhhSGFsZkZsb2F0RGF0YSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBp
dGNoLCBpbnB1dCwgb3V0cHV0UGl0Y2gsIG91dHB1dCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICBjYXNlIEdMX1JHQjoKLSAgICAgICAgICAgIGxvYWRSR0JIYWxmRmxvYXRJbWFnZURh
dGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91
dHB1dFBpdGNoLCBvdXRwdXQpOworICAgICAgICAgICAgbG9hZFJHQkhhbGZGbG9hdERhdGEoeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91dHB1dFBp
dGNoLCBvdXRwdXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9SR0JB
OgotICAgICAgICAgICAgbG9hZFJHQkFIYWxmRmxvYXRJbWFnZURhdGEoeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQp
OworICAgICAgICAgICAgbG9hZFJHQkFIYWxmRmxvYXREYXRhKHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBvdXRwdXRQaXRjaCwgb3V0cHV0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAg
ICAgIH0KQEAgLTM0Myw4ICszOTksOCBAQCB2b2lkIFRleHR1cmU6OmxvYWRJbWFnZURhdGEoR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaQogICAgIH0K
IH0KIAotdm9pZCBUZXh0dXJlOjpsb2FkQWxwaGFJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNp
emVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAordm9pZCBJbWFnZTo6bG9hZEFs
cGhhRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNv
bnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QK
IHsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3VyY2UgPSBOVUxMOwogICAgIHVuc2lnbmVk
IGNoYXIgKmRlc3QgPSBOVUxMOwpAQCAtMzYzLDggKzQxOSw4IEBAIHZvaWQgVGV4dHVyZTo6bG9h
ZEFscGhhSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lk
dGgsIEdMCiAgICAgfQogfQogCi12b2lkIFRleHR1cmU6OmxvYWRBbHBoYUZsb2F0SW1hZ2VEYXRh
KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRj
aCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBj
b25zdAordm9pZCBJbWFnZTo6bG9hZEFscGhhRmxvYXREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90
IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0CiB7CiAgICAgY29uc3QgZmxvYXQgKnNv
dXJjZSA9IE5VTEw7CiAgICAgZmxvYXQgKmRlc3QgPSBOVUxMOwpAQCAtMzgzLDggKzQzOSw4IEBA
IHZvaWQgVGV4dHVyZTo6bG9hZEFscGhhRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0CiAgICAgfQogfQogCi12b2lkIFRleHR1cmU6OmxvYWRB
bHBoYUhhbGZGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91
dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0Cit2b2lkIEltYWdlOjpsb2FkQWxwaGFIYWxm
RmxvYXREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5w
dXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0
cHV0KSBjb25zdAogewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOwog
ICAgIHVuc2lnbmVkIHNob3J0ICpkZXN0ID0gTlVMTDsKQEAgLTQwMyw4ICs0NTksOCBAQCB2b2lk
IFRleHR1cmU6OmxvYWRBbHBoYUhhbGZGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBHTHNpemVpCiAgICAgfQogfQogCi12b2lkIFRleHR1cmU6OmxvYWRMdW1pbmFu
Y2VJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCwgYm9vbCBuYXRpdmUpIGNvbnN0Cit2b2lkIEltYWdlOjpsb2FkTHVtaW5hbmNlRGF0
YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQsIGJvb2wgbmF0
aXZlKSBjb25zdAogewogICAgIGNvbnN0IGludCBkZXN0Qnl0ZXNQZXJQaXhlbCA9IG5hdGl2ZT8g
MTogNDsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3VyY2UgPSBOVUxMOwpAQCAtNDMyLDgg
KzQ4OCw4IEBAIHZvaWQgVGV4dHVyZTo6bG9hZEx1bWluYW5jZUltYWdlRGF0YShHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoCiAgICAgfQogfQogCi12b2lkIFRleHR1
cmU6OmxvYWRMdW1pbmFuY2VGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwg
c2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0Cit2b2lkIEltYWdlOjpsb2Fk
THVtaW5hbmNlRmxvYXREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxMOwog
ICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsKQEAgLTQ1Miw4ICs1MDgsOCBAQCB2b2lkIFRleHR1cmU6
OmxvYWRMdW1pbmFuY2VGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTHNpemVpCiAgICAgfQogfQogCi12b2lkIFRleHR1cmU6OmxvYWRMdW1pbmFuY2VIYWxmRmxv
YXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRw
dXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAordm9pZCBJbWFnZTo6bG9hZEx1bWluYW5jZUhh
bGZGbG9hdERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9p
ZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBO
VUxMOwogICAgIHVuc2lnbmVkIHNob3J0ICpkZXN0ID0gTlVMTDsKQEAgLTQ3Miw4ICs1MjgsOCBA
QCB2b2lkIFRleHR1cmU6OmxvYWRMdW1pbmFuY2VIYWxmRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaQogICAgIH0KIH0KIAotdm9pZCBUZXh0dXJlOjpsb2Fk
THVtaW5hbmNlQWxwaGFJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBv
dXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0LCBib29sIG5hdGl2ZSkgY29uc3QKK3ZvaWQgSW1hZ2U6
OmxvYWRMdW1pbmFuY2VBbHBoYURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBp
dGNoLCB2b2lkICpvdXRwdXQsIGJvb2wgbmF0aXZlKSBjb25zdAogewogICAgIGNvbnN0IGludCBk
ZXN0Qnl0ZXNQZXJQaXhlbCA9IG5hdGl2ZT8gMjogNDsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFy
ICpzb3VyY2UgPSBOVUxMOwpAQCAtNTAxLDggKzU1Nyw4IEBAIHZvaWQgVGV4dHVyZTo6bG9hZEx1
bWluYW5jZUFscGhhSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6
ZWkKICAgICB9CiB9CiAKLXZvaWQgVGV4dHVyZTo6bG9hZEx1bWluYW5jZUFscGhhRmxvYXRJbWFn
ZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpIGNvbnN0Cit2b2lkIEltYWdlOjpsb2FkTHVtaW5hbmNlQWxwaGFGbG9hdERh
dGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0
UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1
dCkgY29uc3QKIHsKICAgICBjb25zdCBmbG9hdCAqc291cmNlID0gTlVMTDsKICAgICBmbG9hdCAq
ZGVzdCA9IE5VTEw7CkBAIC01MjEsOCArNTc3LDggQEAgdm9pZCBUZXh0dXJlOjpsb2FkTHVtaW5h
bmNlQWxwaGFGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHMK
ICAgICB9CiB9CiAKLXZvaWQgVGV4dHVyZTo6bG9hZEx1bWluYW5jZUFscGhhSGFsZkZsb2F0SW1h
Z2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0
Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKK3ZvaWQgSW1hZ2U6OmxvYWRMdW1pbmFuY2VBbHBoYUhh
bGZGbG9hdERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNo
LCB2b2lkICpvdXRwdXQpIGNvbnN0CiB7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJj
ZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgc2hvcnQgKmRlc3QgPSBOVUxMOwpAQCAtNTQxLDggKzU5
Nyw4IEBAIHZvaWQgVGV4dHVyZTo6bG9hZEx1bWluYW5jZUFscGhhSGFsZkZsb2F0SW1hZ2VEYXRh
KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCiAgICAgfQogfQogCi12b2lkIFRleHR1cmU6
OmxvYWRSR0JVQnl0ZUltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBp
dGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0Cit2b2lkIEltYWdlOjpsb2FkUkdCVUJ5dGVEYXRhKEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9p
ZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewogICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgY2hhciAq
ZGVzdCA9IE5VTEw7CkBAIC01NjEsOCArNjE3LDggQEAgdm9pZCBUZXh0dXJlOjpsb2FkUkdCVUJ5
dGVJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwK
ICAgICB9CiB9CiAKLXZvaWQgVGV4dHVyZTo6bG9hZFJHQjU2NUltYWdlRGF0YShHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAq
aW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAordm9pZCBJbWFn
ZTo6bG9hZFJHQjU2NURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5w
dXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0
cHV0KSBjb25zdAogewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOwog
ICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOwpAQCAtNTgyLDggKzYzOCw4IEBAIHZvaWQg
VGV4dHVyZTo6bG9hZFJHQjU2NUltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTHNpemVpIHdpZHRoLCBHCiAgICAgfQogfQogCi12b2lkIFRleHR1cmU6OmxvYWRSR0JGbG9h
dEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQpIGNvbnN0Cit2b2lkIEltYWdlOjpsb2FkUkdCRmxvYXREYXRhKEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNp
emVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNvbnN0IGZsb2F0
ICpzb3VyY2UgPSBOVUxMOwogICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsKQEAgLTYwMiw4ICs2NTgs
OCBAQCB2b2lkIFRleHR1cmU6OmxvYWRSR0JGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLAogICAgIH0KIH0KIAotdm9pZCBUZXh0dXJlOjps
b2FkUkdCSGFsZkZsb2F0SW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91
dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0Cit2b2lkIEltYWdlOjpsb2FkUkdCSGFsZkZs
b2F0RGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBp
dGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQp
IGNvbnN0CiB7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5VTEw7CiAgICAg
dW5zaWduZWQgc2hvcnQgKmRlc3QgPSBOVUxMOwpAQCAtNjIyLDggKzY3OCw4IEBAIHZvaWQgVGV4
dHVyZTo6bG9hZFJHQkhhbGZGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTHNpemVpIHdpCiAgICAgfQogfQogCi12b2lkIFRleHR1cmU6OmxvYWRSR0JBVUJ5dGVJ
bWFnZURhdGFTU0UyKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0KSBjb25zdAordm9pZCBJbWFnZTo6bG9hZFJHQkFVQnl0ZURhdGFTU0UyKEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0CiB7
CiAgICAgY29uc3QgdW5zaWduZWQgaW50ICpzb3VyY2UgPSBOVUxMOwogICAgIHVuc2lnbmVkIGlu
dCAqZGVzdCA9IE5VTEw7CkBAIC02NjQsOCArNzIwLDggQEAgdm9pZCBUZXh0dXJlOjpsb2FkUkdC
QVVCeXRlSW1hZ2VEYXRhU1NFMihHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVp
IHcKICAgICB9CiB9CiAKLXZvaWQgVGV4dHVyZTo6bG9hZFJHQkFVQnl0ZUltYWdlRGF0YShHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29u
c3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAor
dm9pZCBJbWFnZTo6bG9hZFJHQkFVQnl0ZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNl
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQ
aXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNvbnN0IHVuc2lnbmVkIGludCAqc291
cmNlID0gTlVMTDsKICAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSBOVUxMOwpAQCAtNjgyLDggKzcz
OCw4IEBAIHZvaWQgVGV4dHVyZTo6bG9hZFJHQkFVQnl0ZUltYWdlRGF0YShHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoCiAgICAgfQogfQogCi12b2lkIFRleHR1cmU6
OmxvYWRSR0JBNDQ0NEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBp
dGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0Cit2b2lkIEltYWdlOjpsb2FkUkdCQTQ0NDREYXRhKEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9p
ZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewogICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOwogICAgIHVuc2lnbmVkIGNoYXIg
KmRlc3QgPSBOVUxMOwpAQCAtNzAzLDggKzc1OSw4IEBAIHZvaWQgVGV4dHVyZTo6bG9hZFJHQkE0
NDQ0SW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
CiAgICAgfQogfQogCi12b2lkIFRleHR1cmU6OmxvYWRSR0JBNTU1MUltYWdlRGF0YShHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0Cit2b2lk
IEltYWdlOjpsb2FkUkdCQTU1NTFEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2Ug
PSBOVUxMOwogICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOwpAQCAtNzI0LDggKzc4MCw4
IEBAIHZvaWQgVGV4dHVyZTo6bG9hZFJHQkE1NTUxSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsCiAgICAgfQogfQogCi12b2lkIFRleHR1cmU6Omxv
YWRSR0JBRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0
Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JBRmxvYXREYXRhKEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZv
aWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKIHsKICAg
ICBjb25zdCBmbG9hdCAqc291cmNlID0gTlVMTDsKICAgICBmbG9hdCAqZGVzdCA9IE5VTEw7CkBA
IC03MzgsOCArNzk0LDggQEAgdm9pZCBUZXh0dXJlOjpsb2FkUkdCQUZsb2F0SW1hZ2VEYXRhKEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgKICAgICB9CiB9CiAKLXZv
aWQgVGV4dHVyZTo6bG9hZFJHQkFIYWxmRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlu
cHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKK3ZvaWQgSW1hZ2U6
OmxvYWRSR0JBSGFsZkZsb2F0RGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRj
aCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJj
ZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CkBAIC03NTIsOCArODA4
LDggQEAgdm9pZCBUZXh0dXJlOjpsb2FkUkdCQUhhbGZGbG9hdEltYWdlRGF0YShHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHcKICAgICB9CiB9CiAKLXZvaWQgVGV4dHVyZTo6
bG9hZEJHUkFJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lk
ICpvdXRwdXQpIGNvbnN0Cit2b2lkIEltYWdlOjpsb2FkQkdSQURhdGEoR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qg
b3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKIHsKICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyICpzb3VyY2UgPSBOVUxMOwogICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOwpAQCAt
NzY2LDggKzgyMiwxMzQgQEAgdm9pZCBUZXh0dXJlOjpsb2FkQkdSQUltYWdlRGF0YShHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHMKICAgICB9CiB9CiAKLXZv
aWQgVGV4dHVyZTo6bG9hZENvbXByZXNzZWRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwg
c2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0Cit2b2lkIEltYWdlOjpsb2Fk
Q29tcHJlc3NlZERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlu
cHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91
dHB1dCkgY29uc3QgeworICAgIHN3aXRjaCAoZ2V0RDNERm9ybWF0KCkpCisgICAgeworICAgICAg
ICBjYXNlIEQzREZNVF9EWFQxOgorICAgICAgICAgIGxvYWREWFQxRGF0YSh4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0UGl0Y2gsIG91dHB1
dCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRDNERk1UX0RYVDM6CisgICAgICAg
ICAgbG9hZERYVDNEYXRhKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0
Y2gsIGlucHV0LCBvdXRwdXRQaXRjaCwgb3V0cHV0KTsKKyAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBEM0RGTVRfRFhUNToKKyAgICAgICAgICBsb2FkRFhUNURhdGEoeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRw
dXQpOworICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgRmxpcENvcHlE
WFQxQmxvY2tGdWxsKGNvbnN0IHVuc2lnbmVkIGludCogc291cmNlLCB1bnNpZ25lZCBpbnQqIGRl
c3QpIHsKKyAgLy8gQSBEWFQxIGJsb2NrIGxheW91dCBpczoKKyAgLy8gWzAtMV0gY29sb3IwLgor
ICAvLyBbMi0zXSBjb2xvcjEuCisgIC8vIFs0LTddIGNvbG9yIGJpdG1hcCwgMiBiaXRzIHBlciBw
aXhlbC4KKyAgLy8gU28gZWFjaCBvZiB0aGUgNC03IGJ5dGVzIHJlcHJlc2VudHMgb25lIGxpbmUs
IGZsaXBwaW5nIGEgYmxvY2sgaXMganVzdAorICAvLyBmbGlwcGluZyB0aG9zZSBieXRlcy4KKwor
ICAvLyBGaXJzdCAzMi1iaXRzIGlzIHR3byBSR0I1NjUgY29sb3JzIHNoYXJlZCBieSB0aWxlIGFu
ZCBkb2VzIG5vdCBuZWVkIHRvIGJlIG1vZGlmaWVkLgorICBkZXN0WzBdID0gc291cmNlWzBdOwor
CisgIC8vIFNlY29uZCAzMi1iaXRzIGNvbnRhaW5zIDQgcm93cyBvZiA0IDItYml0IGludGVycG9s
YW50cyBiZXR3ZWVuIHRoZSBjb2xvcnMuIEFsbCByb3dzIHNob3VsZCBiZSBmbGlwcGVkLgorICBk
ZXN0WzFdID0gKHNvdXJjZVsxXSA+PiAyNCkgfAorICAgICAgICAgICAgKChzb3VyY2VbMV0gPDwg
OCkgJiAweDAwRkYwMDAwKSB8CisgICAgICAgICAgICAoKHNvdXJjZVsxXSA+PiA4KSAmIDB4MDAw
MEZGMDApIHwKKyAgICAgICAgICAgIChzb3VyY2VbMV0gPDwgMjQpOworfQorCisvLyBGbGlwcyB0
aGUgZmlyc3QgMiBsaW5lcyBvZiBhIERYVDEgYmxvY2sgaW4gdGhlIHkgZGlyZWN0aW9uLgorc3Rh
dGljIHZvaWQgRmxpcENvcHlEWFQxQmxvY2tIYWxmKGNvbnN0IHVuc2lnbmVkIGludCogc291cmNl
LCB1bnNpZ25lZCBpbnQqIGRlc3QpIHsKKyAgLy8gU2VlIGxheW91dCBhYm92ZS4KKyAgZGVzdFsw
XSA9IHNvdXJjZVswXTsKKyAgZGVzdFsxXSA9ICgoc291cmNlWzFdIDw8IDgpICYgMHgwMDAwRkYw
MCkgfAorICAgICAgICAgICAgKChzb3VyY2VbMV0gPj4gOCkgJiAweDAwMDAwMEZGKTsKK30KKwor
Ly8gRmxpcHMgYSBmdWxsIERYVDMgYmxvY2sgaW4gdGhlIHkgZGlyZWN0aW9uLgorc3RhdGljIHZv
aWQgRmxpcENvcHlEWFQzQmxvY2tGdWxsKGNvbnN0IHVuc2lnbmVkIGludCogc291cmNlLCB1bnNp
Z25lZCBpbnQqIGRlc3QpIHsKKyAgLy8gQSBEWFQzIGJsb2NrIGxheW91dCBpczoKKyAgLy8gWzAt
N10gIGFscGhhIGJpdG1hcCwgNCBiaXRzIHBlciBwaXhlbC4KKyAgLy8gWzgtMTVdIGEgRFhUMSBi
bG9jay4KKworICAvLyBGaXJzdCBhbmQgU2Vjb25kIDMyIGJpdHMgYXJlIDRiaXQgcGVyIHBpeGVs
IGFscGhhIGFuZCBuZWVkIHRvIGJlIGZsaXBwZWQuCisgIGRlc3RbMF0gPSAoc291cmNlWzFdID4+
IDE2KSB8IChzb3VyY2VbMV0gPDwgMTYpOworICBkZXN0WzFdID0gKHNvdXJjZVswXSA+PiAxNikg
fCAoc291cmNlWzBdIDw8IDE2KTsKKworICAvLyBBbmQgZmxpcCB0aGUgRFhUMSBibG9jayB1c2lu
ZyB0aGUgYWJvdmUgZnVuY3Rpb24uCisgIEZsaXBDb3B5RFhUMUJsb2NrRnVsbChzb3VyY2UgKyAy
LCBkZXN0ICsgMik7Cit9CisKKy8vIEZsaXBzIHRoZSBmaXJzdCAyIGxpbmVzIG9mIGEgRFhUMyBi
bG9jayBpbiB0aGUgeSBkaXJlY3Rpb24uCitzdGF0aWMgdm9pZCBGbGlwQ29weURYVDNCbG9ja0hh
bGYoY29uc3QgdW5zaWduZWQgaW50KiBzb3VyY2UsIHVuc2lnbmVkIGludCogZGVzdCkgeworICAv
LyBTZWUgbGF5b3V0IGFib3ZlLgorICBkZXN0WzBdID0gKHNvdXJjZVsxXSA+PiAxNikgfCAoc291
cmNlWzFdIDw8IDE2KTsKKyAgRmxpcENvcHlEWFQxQmxvY2tIYWxmKHNvdXJjZSArIDIsIGRlc3Qg
KyAyKTsKK30KKworLy8gRmxpcHMgYSBmdWxsIERYVDUgYmxvY2sgaW4gdGhlIHkgZGlyZWN0aW9u
Lgorc3RhdGljIHZvaWQgRmxpcENvcHlEWFQ1QmxvY2tGdWxsKGNvbnN0IHVuc2lnbmVkIGludCog
c291cmNlLCB1bnNpZ25lZCBpbnQqIGRlc3QpIHsKKyAgLy8gQSBEWFQ1IGJsb2NrIGxheW91dCBp
czoKKyAgLy8gWzBdICAgIGFscGhhMC4KKyAgLy8gWzFdICAgIGFscGhhMS4KKyAgLy8gWzItN10g
IGFscGhhIGJpdG1hcCwgMyBiaXRzIHBlciBwaXhlbC4KKyAgLy8gWzgtMTVdIGEgRFhUMSBibG9j
ay4KKworICAvLyBUaGUgYWxwaGEgYml0bWFwIGRvZXNuJ3QgZWFzaWx5IG1hcCBsaW5lcyB0byBi
eXRlcywgc28gd2UgaGF2ZSB0bworICAvLyBpbnRlcnByZXQgaXQgY29ycmVjdGx5LiAgRXh0cmFj
dGVkIGZyb20KKyAgLy8gaHR0cDovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNzL0VYVC90
ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMudHh0IDoKKyAgLy8KKyAgLy8gICBUaGUgNiAiYml0cyIg
Ynl0ZXMgb2YgdGhlIGJsb2NrIGFyZSBkZWNvZGVkIGludG8gb25lIDQ4LWJpdCBpbnRlZ2VyOgor
ICAvLworICAvLyAgICAgYml0cyA9IGJpdHNfMCArIDI1NiAqIChiaXRzXzEgKyAyNTYgKiAoYml0
c18yICsgMjU2ICogKGJpdHNfMyArCisgIC8vICAgICAgICAgICAgICAgICAgIDI1NiAqIChiaXRz
XzQgKyAyNTYgKiBiaXRzXzUpKSkpCisgIC8vCisgIC8vICAgYml0cyBpcyBhIDQ4LWJpdCB1bnNp
Z25lZCBpbnRlZ2VyLCBmcm9tIHdoaWNoIGEgdGhyZWUtYml0IGNvbnRyb2wgY29kZQorICAvLyAg
IGlzIGV4dHJhY3RlZCBmb3IgYSB0ZXhlbCBhdCBsb2NhdGlvbiAoeCx5KSBpbiB0aGUgYmxvY2sg
dXNpbmc6CisgIC8vCisgIC8vICAgICAgIGNvZGUoeCx5KSA9IGJpdHNbMyooNCp5K3gpKzEuLjMq
KDQqeSt4KSswXQorICAvLworICAvLyAgIHdoZXJlIGJpdCA0NyBpcyB0aGUgbW9zdCBzaWduaWZp
Y2FudCBhbmQgYml0IDAgaXMgdGhlIGxlYXN0CisgIC8vICAgc2lnbmlmaWNhbnQgYml0LgorICBj
b25zdCB1bnNpZ25lZCBjaGFyKiBzb3VyY2VCeXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oc291cmNlKSk7CisgIHVuc2lnbmVk
IGNoYXIqIGRlc3RCeXRlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzdGF0aWNfY2Fz
dDx2b2lkKj4oZGVzdCkpOworICB1bnNpZ25lZCBpbnQgbGluZV8wXzEgPSBzb3VyY2VCeXRlc1sy
XSArIDI1NiAqIChzb3VyY2VCeXRlc1szXSArIDI1NiAqIHNvdXJjZUJ5dGVzWzRdKTsKKyAgdW5z
aWduZWQgaW50IGxpbmVfMl8zID0gc291cmNlQnl0ZXNbNV0gKyAyNTYgKiAoc291cmNlQnl0ZXNb
Nl0gKyAyNTYgKiBzb3VyY2VCeXRlc1s3XSk7CisgIC8vIHN3YXAgbGluZXMgMCBhbmQgMSBpbiBs
aW5lXzBfMS4KKyAgdW5zaWduZWQgaW50IGxpbmVfMV8wID0gKChsaW5lXzBfMSAmIDB4MDAwZmZm
KSA8PCAxMikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxpbmVfMF8xICYgMHhmZmYw
MDApID4+IDEyKTsKKyAgLy8gc3dhcCBsaW5lcyAyIGFuZCAzIGluIGxpbmVfMl8zLgorICB1bnNp
Z25lZCBpbnQgbGluZV8zXzIgPSAoKGxpbmVfMl8zICYgMHgwMDBmZmYpIDw8IDEyKSB8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICgobGluZV8yXzMgJiAweGZmZjAwMCkgPj4gMTIpOworICBk
ZXN0Qnl0ZXNbMF0gPSBzb3VyY2VCeXRlc1swXTsKKyAgZGVzdEJ5dGVzWzFdID0gc291cmNlQnl0
ZXNbMV07CisgIGRlc3RCeXRlc1syXSA9IGxpbmVfM18yICYgMHhmZjsKKyAgZGVzdEJ5dGVzWzNd
ID0gKGxpbmVfM18yICYgMHhmZjAwKSA+PiA4OworICBkZXN0Qnl0ZXNbNF0gPSAobGluZV8zXzIg
JiAweGZmMDAwMCkgPj4gMTY7CisgIGRlc3RCeXRlc1s1XSA9IGxpbmVfMV8wICYgMHhmZjsKKyAg
ZGVzdEJ5dGVzWzZdID0gKGxpbmVfMV8wICYgMHhmZjAwKSA+PiA4OworICBkZXN0Qnl0ZXNbN10g
PSAobGluZV8xXzAgJiAweGZmMDAwMCkgPj4gMTY7CisKKyAgLy8gQW5kIGZsaXAgdGhlIERYVDEg
YmxvY2sgdXNpbmcgdGhlIGFib3ZlIGZ1bmN0aW9uLgorICBGbGlwQ29weURYVDFCbG9ja0Z1bGwo
c291cmNlICsgMiwgZGVzdCArIDIpOworfQorCisvLyBGbGlwcyB0aGUgZmlyc3QgMiBsaW5lcyBv
ZiBhIERYVDUgYmxvY2sgaW4gdGhlIHkgZGlyZWN0aW9uLgorc3RhdGljIHZvaWQgRmxpcENvcHlE
WFQ1QmxvY2tIYWxmKGNvbnN0IHVuc2lnbmVkIGludCogc291cmNlLCB1bnNpZ25lZCBpbnQqIGRl
c3QpIHsKKyAgLy8gU2VlIGxheW91dCBhYm92ZS4KKyAgY29uc3QgdW5zaWduZWQgY2hhciogc291
cmNlQnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc3RhdGljX2Nhc3Q8
Y29uc3Qgdm9pZCo+KHNvdXJjZSkpOworICB1bnNpZ25lZCBjaGFyKiBkZXN0Qnl0ZXMgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KGRlc3QpKTsKKyAgdW5z
aWduZWQgaW50IGxpbmVfMF8xID0gc291cmNlQnl0ZXNbMl0gKyAyNTYgKiAoc291cmNlQnl0ZXNb
M10gKyAyNTYgKiBzb3VyY2VCeXRlc1s0XSk7CisgIHVuc2lnbmVkIGludCBsaW5lXzFfMCA9ICgo
bGluZV8wXzEgJiAweDAwMGZmZikgPDwgMTIpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
KChsaW5lXzBfMSAmIDB4ZmZmMDAwKSA+PiAxMik7CisgIGRlc3RCeXRlc1swXSA9IHNvdXJjZUJ5
dGVzWzBdOworICBkZXN0Qnl0ZXNbMV0gPSBzb3VyY2VCeXRlc1sxXTsKKyAgZGVzdEJ5dGVzWzJd
ID0gbGluZV8xXzAgJiAweGZmOworICBkZXN0Qnl0ZXNbM10gPSAobGluZV8xXzAgJiAweGZmMDAp
ID4+IDg7CisgIGRlc3RCeXRlc1s0XSA9IChsaW5lXzFfMCAmIDB4ZmYwMDAwKSA+PiAxNjsKKyAg
RmxpcENvcHlEWFQxQmxvY2tIYWxmKHNvdXJjZSArIDIsIGRlc3QgKyAyKTsKK30KKwordm9pZCBJ
bWFnZTo6bG9hZERYVDFEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHhvZmZzZXQgJSA0ID09IDApOwogICAgIEFTU0VSVCh5
b2Zmc2V0ICUgNCA9PSAwKTsKQEAgLTc3OCwyOSArOTYwLDI0IEBAIHZvaWQgVGV4dHVyZTo6bG9h
ZENvbXByZXNzZWRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXpl
aSB3aWR0CiAgICAgY29uc3QgdW5zaWduZWQgaW50ICpzb3VyY2UgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IHVuc2lnbmVkIGludCo+KGlucHV0KTsKICAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KG91dHB1dCk7CiAKKyAgICAvLyBSb3VuZCB3
aWR0aCB1cCBpbiBjYXNlIGl0IGlzIGxlc3MgdGhhbiA0LgorICAgIGludCBibG9ja3NBY3Jvc3Mg
PSAod2lkdGggKyAzKSAvIDQ7CisgICAgaW50IGludHNBY3Jvc3MgPSBibG9ja3NBY3Jvc3MgKiAy
OworCiAgICAgc3dpdGNoIChoZWlnaHQpCiAgICAgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAg
ICAgICAvLyBSb3VuZCB3aWR0aCB1cCBpbiBjYXNlIGl0IGlzIDEuCi0gICAgICAgICAgICBmb3Ig
KGludCB4ID0gMDsgeCA8ICh3aWR0aCArIDEpIC8gMjsgeCArPSAyKQorICAgICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCBpbnRzQWNyb3NzOyB4ICs9IDIpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgLy8gRmlyc3QgMzItYml0cyBpcyB0d28gUkdCNTY1IGNvbG9ycyBzaGFyZWQg
YnkgdGlsZSBhbmQgZG9lcyBub3QgbmVlZCB0byBiZSBtb2RpZmllZC4KKyAgICAgICAgICAgICAg
ICAvLyBqdXN0IGNvcHkgdGhlIGJsb2NrCiAgICAgICAgICAgICAgICAgZGVzdFt4XSA9IHNvdXJj
ZVt4XTsKLQotICAgICAgICAgICAgICAgIC8vIFNlY29uZCAzMi1iaXRzIGNvbnRhaW5zIDQgcm93
cyBvZiA0IDItYml0IGludGVycG9sYW50cyBiZXR3ZWVuIHRoZSBjb2xvcnMsIHRoZSBsYXN0IDMg
cm93cyBiZWluZyB1bnVzZWQuIE5vIGZsaXBwaW5nIHNob3VsZCBvY2N1ci4KICAgICAgICAgICAg
ICAgICBkZXN0W3ggKyAxXSA9IHNvdXJjZVt4ICsgMV07CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgLy8gUm91bmQgd2lkdGgg
dXAgaW4gY2FzZSBpdCBpcyAxLgotICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCAod2lk
dGggKyAxKSAvIDI7IHggKz0gMikKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW50
c0Fjcm9zczsgeCArPSAyKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEZpcnN0
IDMyLWJpdHMgaXMgdHdvIFJHQjU2NSBjb2xvcnMgc2hhcmVkIGJ5IHRpbGUgYW5kIGRvZXMgbm90
IG5lZWQgdG8gYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICAgICAgZGVzdFt4XSA9IHNvdXJjZVt4
XTsKLQotICAgICAgICAgICAgICAgIC8vIFNlY29uZCAzMi1iaXRzIGNvbnRhaW5zIDQgcm93cyBv
ZiA0IDItYml0IGludGVycG9sYW50cyBiZXR3ZWVuIHRoZSBjb2xvcnMsIHRoZSBsYXN0IDIgcm93
cyBiZWluZyB1bnVzZWQuIE9ubHkgdGhlIHRvcCAyIHJvd3Mgc2hvdWxkIGJlIGZsaXBwZWQuCi0g
ICAgICAgICAgICAgICAgZGVzdFt4ICsgMV0gPSAoKHNvdXJjZVt4ICsgMV0gPDwgOCkgJiAweDAw
MDBGRjAwKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNvdXJjZVt4ICsgMV0g
Pj4gOCkgJiAweDAwMDAwMEZGKTsgICAgICAgCisgICAgICAgICAgICAgICAgRmxpcENvcHlEWFQx
QmxvY2tIYWxmKHNvdXJjZSArIHgsIGRlc3QgKyB4KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtODEwLDIyOSArOTg3LDExOCBAQCB2b2lk
IFRleHR1cmU6OmxvYWRDb21wcmVzc2VkSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMc2l6ZWkgd2lkdAogICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCAq
c291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOwogICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCAqZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQg
aW50Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyAoeSArIHlvZmZzZXQp
ICogb3V0cHV0UGl0Y2ggKyB4b2Zmc2V0ICogOCk7CiAKLSAgICAgICAgICAgICAgICAvLyBSb3Vu
ZCB3aWR0aCB1cCBpbiBjYXNlIGl0IGlzIDEuCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCAod2lkdGggKyAxKSAvIDI7IHggKz0gMikKKyAgICAgICAgICAgICAgICBmb3IgKGlu
dCB4ID0gMDsgeCA8IGludHNBY3Jvc3M7IHggKz0gMikKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIEZpcnN0IDMyLWJpdHMgaXMgdHdvIFJHQjU2NSBjb2xvcnMgc2hh
cmVkIGJ5IHRpbGUgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgbW9kaWZpZWQuCi0gICAgICAgICAg
ICAgICAgICAgIGRlc3RbeF0gPSBzb3VyY2VbeF07Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8g
U2Vjb25kIDMyLWJpdHMgY29udGFpbnMgNCByb3dzIG9mIDQgMi1iaXQgaW50ZXJwb2xhbnRzIGJl
dHdlZW4gdGhlIGNvbG9ycy4gQWxsIHJvd3Mgc2hvdWxkIGJlIGZsaXBwZWQuCi0gICAgICAgICAg
ICAgICAgICAgIGRlc3RbeCArIDFdID0gKHNvdXJjZVt4ICsgMV0gPj4gMjQpIHwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzb3VyY2VbeCArIDFdIDw8IDgpICYgMHgwMEZG
MDAwMCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc291cmNlW3ggKyAx
XSA+PiA4KSAmIDB4MDAwMEZGMDApIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc291cmNlW3ggKyAxXSA8PCAyNCk7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgRmxpcENvcHlEWFQxQmxvY2tGdWxsKHNvdXJjZSArIHgsIGRlc3QgKyB4KTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICB9
CiB9CiAKLXZvaWQgVGV4dHVyZTo6Y3JlYXRlU3VyZmFjZShJbWFnZSAqaW1hZ2UpCit2b2lkIElt
YWdlOjpsb2FkRFhUM0RhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0
UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1
dCkgY29uc3QKIHsKLSAgICBJRGlyZWN0M0RUZXh0dXJlOSAqbmV3VGV4dHVyZSA9IE5VTEw7Ci0g
ICAgSURpcmVjdDNEU3VyZmFjZTkgKm5ld1N1cmZhY2UgPSBOVUxMOworICAgIEFTU0VSVCh4b2Zm
c2V0ICUgNCA9PSAwKTsKKyAgICBBU1NFUlQoeW9mZnNldCAlIDQgPT0gMCk7CisgICAgQVNTRVJU
KHdpZHRoICUgNCA9PSAwIHx8IHdpZHRoID09IDIgfHwgd2lkdGggPT0gMSk7CisgICAgQVNTRVJU
KGlucHV0UGl0Y2ggJSAxNiA9PSAwKTsKKyAgICBBU1NFUlQob3V0cHV0UGl0Y2ggJSAxNiA9PSAw
KTsKIAotICAgIGlmIChpbWFnZS0+d2lkdGggIT0gMCAmJiBpbWFnZS0+aGVpZ2h0ICE9IDApCisg
ICAgY29uc3QgdW5zaWduZWQgaW50ICpzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVu
c2lnbmVkIGludCo+KGlucHV0KTsKKyAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSByZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkIGludCo+KG91dHB1dCk7CisKKyAgICAvLyBSb3VuZCB3aWR0aCB1cCBp
biBjYXNlIGl0IGlzIGxlc3MgdGhhbiA0LgorICAgIGludCBibG9ja3NBY3Jvc3MgPSAod2lkdGgg
KyAzKSAvIDQ7CisgICAgaW50IGludHNBY3Jvc3MgPSBibG9ja3NBY3Jvc3MgKiA0OworCisgICAg
c3dpdGNoIChoZWlnaHQpCiAgICAgewotICAgICAgICBpbnQgbGV2ZWxUb0ZldGNoID0gMDsKLSAg
ICAgICAgR0xzaXplaSByZXF1ZXN0V2lkdGggPSBpbWFnZS0+d2lkdGg7Ci0gICAgICAgIEdMc2l6
ZWkgcmVxdWVzdEhlaWdodCA9IGltYWdlLT5oZWlnaHQ7Ci0gICAgICAgIGlmIChJc0NvbXByZXNz
ZWQoaW1hZ2UtPmZvcm1hdCkgJiYgKGltYWdlLT53aWR0aCAlIDQgIT0gMCB8fCBpbWFnZS0+aGVp
Z2h0ICUgNCAhPSAwKSkKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbCBpc011bHQ0ID0gZmFs
c2U7Ci0gICAgICAgICAgICBpbnQgdXBzYW1wbGVDb3VudCA9IDA7Ci0gICAgICAgICAgICB3aGls
ZSAoIWlzTXVsdDQpCisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgaW50c0Fjcm9zczsgeCArPSA0KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJlcXVlc3RXaWR0aCA8PD0gMTsKLSAgICAgICAgICAgICAgICByZXF1ZXN0SGVpZ2h0IDw8PSAx
OwotICAgICAgICAgICAgICAgIHVwc2FtcGxlQ291bnQrKzsKLSAgICAgICAgICAgICAgICBpZiAo
cmVxdWVzdFdpZHRoICUgNCA9PSAwICYmIHJlcXVlc3RIZWlnaHQgJSA0ID09IDApCisgICAgICAg
ICAgICAgICAgLy8ganVzdCBjb3B5IHRoZSBibG9jaworICAgICAgICAgICAgICAgIGRlc3RbeF0g
PSBzb3VyY2VbeF07CisgICAgICAgICAgICAgICAgZGVzdFt4ICsgMV0gPSBzb3VyY2VbeCArIDFd
OworICAgICAgICAgICAgICAgIGRlc3RbeCArIDJdID0gc291cmNlW3ggKyAyXTsKKyAgICAgICAg
ICAgICAgICBkZXN0W3ggKyAzXSA9IHNvdXJjZVt4ICsgM107CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCBpbnRzQWNyb3NzOyB4ICs9IDQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgRmxpcENvcHlEWFQzQmxvY2tIYWxmKHNvdXJjZSArIHgsIGRlc3QgKyB4KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUKGhlaWdodCAlIDQgPT0gMCk7CisgICAgICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8
IGhlaWdodCAvIDQ7ICsreSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgKnNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50
Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBp
dGNoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkIGludCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsg
KHkgKyB5b2Zmc2V0KSAqIG91dHB1dFBpdGNoICsgeG9mZnNldCAqIDE2KTsKKworICAgICAgICAg
ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW50c0Fjcm9zczsgeCArPSA0KQogICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaXNNdWx0NCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICBGbGlwQ29weURYVDNCbG9ja0Z1bGwoc291cmNlICsgeCwgZGVzdCArIHgpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxldmVsVG9GZXRjaCA9
IHVwc2FtcGxlQ291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGdl
dERldmljZSgpLT5DcmVhdGVUZXh0dXJlKHJlcXVlc3RXaWR0aCwgcmVxdWVzdEhlaWdodCwgbGV2
ZWxUb0ZldGNoICsgMSwgTlVMTCwgaW1hZ2UtPmdldEQzREZvcm1hdCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFBPT0xfU1lTVEVNTUVN
LCAmbmV3VGV4dHVyZSwgTlVMTCk7Ci0KLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVN
T1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKLSAgICAgICAgICAgIHJldHVybiBlcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5ld1RleHR1cmUtPkdl
dFN1cmZhY2VMZXZlbChsZXZlbFRvRmV0Y2gsICZuZXdTdXJmYWNlKTsKLSAgICAgICAgbmV3VGV4
dHVyZS0+UmVsZWFzZSgpOwotICAgIH0KLQotICAgIGlmIChpbWFnZS0+c3VyZmFjZSkKLSAgICB7
Ci0gICAgICAgIGltYWdlLT5zdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICB9Ci0KLSAgICBpbWFnZS0+c3VyZmFjZSA9IG5ld1N1cmZhY2U7CiB9CiAKLXZvaWQgVGV4
dHVyZTo6c2V0SW1hZ2UoR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMs
IEltYWdlICppbWFnZSkKK3ZvaWQgSW1hZ2U6OmxvYWREWFQ1RGF0YShHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBv
dXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewotICAgIGNyZWF0ZVN1cmZhY2UoaW1h
Z2UpOwotCi0gICAgaWYgKHBpeGVscyAhPSBOVUxMICYmIGltYWdlLT5zdXJmYWNlICE9IE5VTEwp
Ci0gICAgewotICAgICAgICBEM0RTVVJGQUNFX0RFU0MgZGVzY3JpcHRpb247Ci0gICAgICAgIGlt
YWdlLT5zdXJmYWNlLT5HZXREZXNjKCZkZXNjcmlwdGlvbik7Ci0KLSAgICAgICAgRDNETE9DS0VE
X1JFQ1QgbG9ja2VkOwotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGltYWdlLT5zdXJmYWNlLT5M
b2NrUmVjdCgmbG9ja2VkLCBOVUxMLCAwKTsKLQotICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJl
c3VsdCkpOwotCi0gICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKLSAgICAgICAgewotICAg
ICAgICAgICAgbG9hZEltYWdlRGF0YSgwLCAwLCBpbWFnZS0+d2lkdGgsIGltYWdlLT5oZWlnaHQs
IGltYWdlLT5mb3JtYXQsIGltYWdlLT50eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscywgbG9j
a2VkLlBpdGNoLCBsb2NrZWQucEJpdHMsICZkZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBpbWFn
ZS0+c3VyZmFjZS0+VW5sb2NrUmVjdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW1hZ2UtPmRp
cnR5ID0gdHJ1ZTsKLSAgICAgICAgbURpcnR5SW1hZ2UgPSB0cnVlOwotICAgIH0KLX0KLQotdm9p
ZCBUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZv
aWQgKnBpeGVscywgSW1hZ2UgKmltYWdlKQotewotICAgIGNyZWF0ZVN1cmZhY2UoaW1hZ2UpOwot
Ci0gICAgaWYgKHBpeGVscyAhPSBOVUxMICYmIGltYWdlLT5zdXJmYWNlICE9IE5VTEwpCi0gICAg
ewotICAgICAgICBEM0RMT0NLRURfUkVDVCBsb2NrZWQ7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0
ID0gaW1hZ2UtPnN1cmZhY2UtPkxvY2tSZWN0KCZsb2NrZWQsIE5VTEwsIDApOwotCi0gICAgICAg
IEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0KLSAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1
bHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCA9IENvbXB1dGVDb21w
cmVzc2VkUGl0Y2goaW1hZ2UtPndpZHRoLCBpbWFnZS0+Zm9ybWF0KTsKLSAgICAgICAgICAgIGlu
dCBpbnB1dFNpemUgPSBDb21wdXRlQ29tcHJlc3NlZFNpemUoaW1hZ2UtPndpZHRoLCBpbWFnZS0+
aGVpZ2h0LCBpbWFnZS0+Zm9ybWF0KTsKLSAgICAgICAgICAgIGxvYWRDb21wcmVzc2VkSW1hZ2VE
YXRhKDAsIDAsIGltYWdlLT53aWR0aCwgaW1hZ2UtPmhlaWdodCwgLWlucHV0UGl0Y2gsIHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihwaXhlbHMpICsgaW5wdXRTaXplIC0gaW5wdXRQaXRjaCwgbG9j
a2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOwotICAgICAgICAgICAgaW1hZ2UtPnN1cmZhY2UtPlVu
bG9ja1JlY3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGltYWdlLT5kaXJ0eSA9IHRydWU7Ci0g
ICAgICAgIG1EaXJ0eUltYWdlID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLWJvb2wgVGV4dHVyZTo6c3Vi
SW1hZ2UoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1l
bnQsIGNvbnN0IHZvaWQgKnBpeGVscywgSW1hZ2UgKmltYWdlKQotewotICAgIGlmICh3aWR0aCAr
IHhvZmZzZXQgPiBpbWFnZS0+d2lkdGggfHwgaGVpZ2h0ICsgeW9mZnNldCA+IGltYWdlLT5oZWln
aHQpCi0gICAgewotICAgICAgICBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChJc0NvbXByZXNzZWQoaW1hZ2UtPmZvcm1hdCkp
Ci0gICAgewotICAgICAgICBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoZm9ybWF0ICE9IGltYWdlLT5mb3JtYXQpCi0g
ICAgewotICAgICAgICBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIWltYWdlLT5zdXJmYWNlKQotICAgIHsKLSAgICAg
ICAgY3JlYXRlU3VyZmFjZShpbWFnZSk7Ci0gICAgfQotCi0gICAgaWYgKHBpeGVscyAhPSBOVUxM
ICYmIGltYWdlLT5zdXJmYWNlICE9IE5VTEwpCi0gICAgewotICAgICAgICBEM0RTVVJGQUNFX0RF
U0MgZGVzY3JpcHRpb247Ci0gICAgICAgIGltYWdlLT5zdXJmYWNlLT5HZXREZXNjKCZkZXNjcmlw
dGlvbik7Ci0KLSAgICAgICAgRDNETE9DS0VEX1JFQ1QgbG9ja2VkOwotICAgICAgICBIUkVTVUxU
IHJlc3VsdCA9IGltYWdlLT5zdXJmYWNlLT5Mb2NrUmVjdCgmbG9ja2VkLCBOVUxMLCAwKTsKLQot
ICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotCi0gICAgICAgIGlmIChTVUNDRUVE
RUQocmVzdWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgbG9hZEltYWdlRGF0YSh4b2Zmc2V0
LCB0cmFuc2Zvcm1QaXhlbFlPZmZzZXQoeW9mZnNldCwgaGVpZ2h0LCBpbWFnZS0+aGVpZ2h0KSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscywgbG9j
a2VkLlBpdGNoLCBsb2NrZWQucEJpdHMsICZkZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBpbWFn
ZS0+c3VyZmFjZS0+VW5sb2NrUmVjdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW1hZ2UtPmRp
cnR5ID0gdHJ1ZTsKLSAgICAgICAgbURpcnR5SW1hZ2UgPSB0cnVlOwotICAgIH0KLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIFRleHR1cmU6OnN1YkltYWdlQ29tcHJlc3NlZChHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscywgSW1hZ2Ug
KmltYWdlKQotewotICAgIGlmICh3aWR0aCArIHhvZmZzZXQgPiBpbWFnZS0+d2lkdGggfHwgaGVp
Z2h0ICsgeW9mZnNldCA+IGltYWdlLT5oZWlnaHQpCi0gICAgewotICAgICAgICBlcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBBU1NFUlQo
eG9mZnNldCAlIDQgPT0gMCk7CisgICAgQVNTRVJUKHlvZmZzZXQgJSA0ID09IDApOworICAgIEFT
U0VSVCh3aWR0aCAlIDQgPT0gMCB8fCB3aWR0aCA9PSAyIHx8IHdpZHRoID09IDEpOworICAgIEFT
U0VSVChpbnB1dFBpdGNoICUgMTYgPT0gMCk7CisgICAgQVNTRVJUKG91dHB1dFBpdGNoICUgMTYg
PT0gMCk7CiAKLSAgICBpZiAoZm9ybWF0ICE9IGdldEludGVybmFsRm9ybWF0KCkpCi0gICAgewot
ICAgICAgICBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9CisgICAgY29uc3QgdW5zaWduZWQgaW50ICpzb3VyY2UgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHVuc2lnbmVkIGludCo+KGlucHV0KTsKKyAgICB1bnNpZ25lZCBpbnQgKmRlc3Qg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KG91dHB1dCk7CiAKLSAgICBpZiAoIWlt
YWdlLT5zdXJmYWNlKQotICAgIHsKLSAgICAgICAgY3JlYXRlU3VyZmFjZShpbWFnZSk7Ci0gICAg
fQorICAgIC8vIFJvdW5kIHdpZHRoIHVwIGluIGNhc2UgaXQgaXMgbGVzcyB0aGFuIDQuCisgICAg
aW50IGJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCArIDMpIC8gNDsKKyAgICBpbnQgaW50c0Fjcm9zcyA9
IGJsb2Nrc0Fjcm9zcyAqIDQ7CiAKLSAgICBpZiAocGl4ZWxzICE9IE5VTEwgJiYgaW1hZ2UtPnN1
cmZhY2UgIT0gTlVMTCkKKyAgICBzd2l0Y2ggKGhlaWdodCkKICAgICB7Ci0gICAgICAgIFJFQ1Qg
dXBkYXRlUmVnaW9uOwotICAgICAgICB1cGRhdGVSZWdpb24ubGVmdCA9IHhvZmZzZXQ7Ci0gICAg
ICAgIHVwZGF0ZVJlZ2lvbi5yaWdodCA9IHhvZmZzZXQgKyB3aWR0aDsKLSAgICAgICAgdXBkYXRl
UmVnaW9uLmJvdHRvbSA9IHlvZmZzZXQgKyBoZWlnaHQ7Ci0gICAgICAgIHVwZGF0ZVJlZ2lvbi50
b3AgPSB5b2Zmc2V0OwotCi0gICAgICAgIEQzRExPQ0tFRF9SRUNUIGxvY2tlZDsKLSAgICAgICAg
SFJFU1VMVCByZXN1bHQgPSBpbWFnZS0+c3VyZmFjZS0+TG9ja1JlY3QoJmxvY2tlZCwgJnVwZGF0
ZVJlZ2lvbiwgMCk7Ci0KLSAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLQotICAg
ICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoID0gQ29tcHV0ZUNvbXByZXNzZWRQaXRjaCh3aWR0aCwgZm9ybWF0KTsKLSAgICAg
ICAgICAgIGludCBpbnB1dFNpemUgPSBDb21wdXRlQ29tcHJlc3NlZFNpemUod2lkdGgsIGhlaWdo
dCwgZm9ybWF0KTsKLSAgICAgICAgICAgIGxvYWRDb21wcmVzc2VkSW1hZ2VEYXRhKHhvZmZzZXQs
IHRyYW5zZm9ybVBpeGVsWU9mZnNldCh5b2Zmc2V0LCBoZWlnaHQsIGltYWdlLT5oZWlnaHQpLCB3
aWR0aCwgaGVpZ2h0LCAtaW5wdXRQaXRjaCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBpeGVs
cykgKyBpbnB1dFNpemUgLSBpbnB1dFBpdGNoLCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7
Ci0gICAgICAgICAgICBpbWFnZS0+c3VyZmFjZS0+VW5sb2NrUmVjdCgpOwotICAgICAgICB9Cisg
ICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW50c0Fjcm9z
czsgeCArPSA0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIGp1c3QgY29weSB0
aGUgYmxvY2sKKyAgICAgICAgICAgICAgICBkZXN0W3hdID0gc291cmNlW3hdOworICAgICAgICAg
ICAgICAgIGRlc3RbeCArIDFdID0gc291cmNlW3ggKyAxXTsKKyAgICAgICAgICAgICAgICBkZXN0
W3ggKyAyXSA9IHNvdXJjZVt4ICsgMl07CisgICAgICAgICAgICAgICAgZGVzdFt4ICsgM10gPSBz
b3VyY2VbeCArIDNdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgMjoKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW50c0Fjcm9zczsgeCAr
PSA0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEZsaXBDb3B5RFhUNUJsb2NrSGFs
Zihzb3VyY2UgKyB4LCBkZXN0ICsgeCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVChoZWlnaHQgJSA0ID09IDAp
OworICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQgLyA0OyArK3kpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50ICpzb3VyY2UgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGludCo+KHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50ICpkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArICh5ICsgeW9mZnNldCkgKiBvdXRwdXRQ
aXRjaCArIHhvZmZzZXQgKiAxNik7CiAKLSAgICAgICAgaW1hZ2UtPmRpcnR5ID0gdHJ1ZTsKLSAg
ICAgICAgbURpcnR5SW1hZ2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgaW50c0Fjcm9zczsgeCArPSA0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgRmxpcENvcHlEWFQ1QmxvY2tGdWxsKHNvdXJjZSArIHgsIGRlc3QgKyB4KTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gVGhpcyBpbXBsZW1lbnRzIGdsQ29weVRleFtT
dWJdSW1hZ2UyRCBmb3Igbm9uLXJlbmRlcmFibGUgaW50ZXJuYWwgdGV4dHVyZSBmb3JtYXRzIGFu
ZCBpbmNvbXBsZXRlIHRleHR1cmVzCi12b2lkIFRleHR1cmU6OmNvcHlUb0ltYWdlKEltYWdlICpp
bWFnZSwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIElEaXJlY3QzRFN1cmZhY2U5ICpyZW5kZXJUYXJn
ZXQpCit2b2lkIEltYWdlOjpjb3B5KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50
IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBJRGlyZWN0M0RTdXJm
YWNlOSAqcmVuZGVyVGFyZ2V0KQogewotICAgIGlmICghaW1hZ2UtPnN1cmZhY2UpCi0gICAgewot
ICAgICAgICBjcmVhdGVTdXJmYWNlKGltYWdlKTsKLQotICAgICAgICBpZiAoIWltYWdlLT5zdXJm
YWNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBjcmVhdGUgYW4gaW1h
Z2Ugc3VyZmFjZS4iKTsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdl
dERldmljZSgpOwogICAgIElEaXJlY3QzRFN1cmZhY2U5ICpyZW5kZXJUYXJnZXREYXRhID0gTlVM
TDsKICAgICBEM0RTVVJGQUNFX0RFU0MgZGVzY3JpcHRpb247CkBAIC0xMDU2LDEyICsxMTIyLDEy
IEBAIHZvaWQgVGV4dHVyZTo6Y29weVRvSW1hZ2UoSW1hZ2UgKmltYWdlLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHCiAgICAgfQogCiAgICAgUkVDVCBzb3VyY2VSZWN0
ID0gdHJhbnNmb3JtUGl4ZWxSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIGRlc2NyaXB0aW9uLkhl
aWdodCk7Ci0gICAgaW50IGRlc3RZT2Zmc2V0ID0gdHJhbnNmb3JtUGl4ZWxZT2Zmc2V0KHlvZmZz
ZXQsIGhlaWdodCwgaW1hZ2UtPmhlaWdodCk7CisgICAgaW50IGRlc3RZT2Zmc2V0ID0gdHJhbnNm
b3JtUGl4ZWxZT2Zmc2V0KHlvZmZzZXQsIGhlaWdodCwgbUhlaWdodCk7CiAgICAgUkVDVCBkZXN0
UmVjdCA9IHt4b2Zmc2V0LCBkZXN0WU9mZnNldCwgeG9mZnNldCArIHdpZHRoLCBkZXN0WU9mZnNl
dCArIGhlaWdodH07CiAKLSAgICBpZiAoaW1hZ2UtPmlzUmVuZGVyYWJsZSgpKQorICAgIGlmIChp
c1JlbmRlcmFibGVGb3JtYXQoKSkKICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IEQzRFhMb2FkU3Vy
ZmFjZUZyb21TdXJmYWNlKGltYWdlLT5zdXJmYWNlLCBOVUxMLCAmZGVzdFJlY3QsIHJlbmRlclRh
cmdldERhdGEsIE5VTEwsICZzb3VyY2VSZWN0LCBEM0RYX0ZJTFRFUl9CT1gsIDApOworICAgICAg
ICByZXN1bHQgPSBEM0RYTG9hZFN1cmZhY2VGcm9tU3VyZmFjZShnZXRTdXJmYWNlKCksIE5VTEws
ICZkZXN0UmVjdCwgcmVuZGVyVGFyZ2V0RGF0YSwgTlVMTCwgJnNvdXJjZVJlY3QsIEQzRFhfRklM
VEVSX0JPWCwgMCk7CiAgICAgICAgIAogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAg
ICAgIHsKQEAgLTEwODMsNyArMTE0OSw3IEBAIHZvaWQgVGV4dHVyZTo6Y29weVRvSW1hZ2UoSW1h
Z2UgKmltYWdlLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHCiAgICAg
ICAgIH0KIAogICAgICAgICBEM0RMT0NLRURfUkVDVCBkZXN0TG9jayA9IHswfTsKLSAgICAgICAg
cmVzdWx0ID0gaW1hZ2UtPnN1cmZhY2UtPkxvY2tSZWN0KCZkZXN0TG9jaywgJmRlc3RSZWN0LCAw
KTsKKyAgICAgICAgcmVzdWx0ID0gbG9jaygmZGVzdExvY2ssICZkZXN0UmVjdCk7CiAgICAgICAg
IAogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKQEAgLTExMDIsNyArMTE2
OCw3IEBAIHZvaWQgVGV4dHVyZTo6Y29weVRvSW1hZ2UoSW1hZ2UgKmltYWdlLCBHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgogICAgICAgICAgICAgICBjYXNlIEQzREZNVF9BOFI4
RzhCODoKLSAgICAgICAgICAgICAgICBzd2l0Y2goaW1hZ2UtPmdldEQzREZvcm1hdCgpKQorICAg
ICAgICAgICAgICAgIHN3aXRjaChnZXREM0RGb3JtYXQoKSkKICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICBjYXNlIEQzREZNVF9MODoKICAgICAgICAgICAgICAgICAgICAgZm9y
KGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQpAQCAtMTEzNCw3ICsxMjAwLDcgQEAgdm9pZCBU
ZXh0dXJlOjpjb3B5VG9JbWFnZShJbWFnZSAqaW1hZ2UsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMaW50IHgsIEcKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgIGNhc2UgRDNERk1UX1I1RzZCNToKLSAgICAgICAgICAgICAgICBz
d2l0Y2goaW1hZ2UtPmdldEQzREZvcm1hdCgpKQorICAgICAgICAgICAgICAgIHN3aXRjaChnZXRE
M0RGb3JtYXQoKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICBjYXNlIEQz
REZNVF9MODoKICAgICAgICAgICAgICAgICAgICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKQpAQCAtMTE1NCw3ICsxMjIwLDcgQEAgdm9pZCBUZXh0dXJlOjpjb3B5VG9JbWFnZShJbWFn
ZSAqaW1hZ2UsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEcKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2Ug
RDNERk1UX0ExUjVHNUI1OgotICAgICAgICAgICAgICAgIHN3aXRjaChpbWFnZS0+Z2V0RDNERm9y
bWF0KCkpCisgICAgICAgICAgICAgICAgc3dpdGNoKGdldEQzREZvcm1hdCgpKQogICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0w4OgogICAgICAgICAgICAg
ICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCkBAIC0xMTkyLDI2ICsxMjU4
LDMxNyBAQCB2b2lkIFRleHR1cmU6OmNvcHlUb0ltYWdlKEltYWdlICppbWFnZSwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgRwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgaW1hZ2UtPnN1cmZhY2UtPlVubG9ja1JlY3QoKTsKLSAgICAgICAgcmVuZGVy
VGFyZ2V0RGF0YS0+VW5sb2NrUmVjdCgpOworICAgICAgICB1bmxvY2soKTsKKyAgICAgICAgcmVu
ZGVyVGFyZ2V0RGF0YS0+VW5sb2NrUmVjdCgpOworICAgIH0KKworICAgIHJlbmRlclRhcmdldERh
dGEtPlJlbGVhc2UoKTsKKworICAgIG1EaXJ0eSA9IHRydWU7Cit9CisKK1RleHR1cmVTdG9yYWdl
OjpUZXh0dXJlU3RvcmFnZShib29sIHJlbmRlclRhcmdldCkKKyAgICA6IG1SZW5kZXJUYXJnZXQo
cmVuZGVyVGFyZ2V0KSwKKyAgICAgIG1EM0RQb29sKGdldERpc3BsYXkoKS0+Z2V0VGV4dHVyZVBv
b2wobVJlbmRlclRhcmdldCkpLAorICAgICAgbVRleHR1cmVTZXJpYWwoaXNzdWVUZXh0dXJlU2Vy
aWFsKCkpCit7Cit9CisKK1RleHR1cmVTdG9yYWdlOjp+VGV4dHVyZVN0b3JhZ2UoKQoreworfQor
Citib29sIFRleHR1cmVTdG9yYWdlOjppc1JlbmRlclRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1SZW5kZXJUYXJnZXQ7Cit9CisKK2Jvb2wgVGV4dHVyZVN0b3JhZ2U6OmlzTWFuYWdlZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIChtRDNEUG9vbCA9PSBEM0RQT09MX01BTkFHRUQpOworfQor
CitEM0RQT09MIFRleHR1cmVTdG9yYWdlOjpnZXRQb29sKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bUQzRFBvb2w7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlU3RvcmFnZTo6Z2V0VGV4dHVyZVNl
cmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlU2VyaWFsOworfQorCit1bnNpZ25l
ZCBpbnQgVGV4dHVyZVN0b3JhZ2U6Omlzc3VlVGV4dHVyZVNlcmlhbCgpCit7CisgICAgcmV0dXJu
IG1DdXJyZW50VGV4dHVyZVNlcmlhbCsrOworfQorCitUZXh0dXJlOjpUZXh0dXJlKEdMdWludCBp
ZCkgOiBSZWZDb3VudE9iamVjdChpZCkKK3sKKyAgICBtTWluRmlsdGVyID0gR0xfTkVBUkVTVF9N
SVBNQVBfTElORUFSOworICAgIG1NYWdGaWx0ZXIgPSBHTF9MSU5FQVI7CisgICAgbVdyYXBTID0g
R0xfUkVQRUFUOworICAgIG1XcmFwVCA9IEdMX1JFUEVBVDsKKyAgICBtRGlydHlQYXJhbWV0ZXJz
ID0gdHJ1ZTsKKyAgICBtVXNhZ2UgPSBHTF9OT05FOworICAgIAorICAgIG1EaXJ0eUltYWdlcyA9
IHRydWU7CisKKyAgICBtSW1tdXRhYmxlID0gZmFsc2U7Cit9CisKK1RleHR1cmU6On5UZXh0dXJl
KCkKK3sKK30KKworLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3NmdWwgZmlsdGVyIHN0YXRlIHVw
ZGF0ZSAodmFsaWQgZW51bSBwYXJhbWV0ZXIpCitib29sIFRleHR1cmU6OnNldE1pbkZpbHRlcihH
TGVudW0gZmlsdGVyKQoreworICAgIHN3aXRjaCAoZmlsdGVyKQorICAgIHsKKyAgICAgIGNhc2Ug
R0xfTkVBUkVTVDoKKyAgICAgIGNhc2UgR0xfTElORUFSOgorICAgICAgY2FzZSBHTF9ORUFSRVNU
X01JUE1BUF9ORUFSRVNUOgorICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1Q6Cisg
ICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjoKKyAgICAgIGNhc2UgR0xfTElORUFS
X01JUE1BUF9MSU5FQVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtTWluRmlsdGVyICE9
IGZpbHRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtTWluRmlsdGVyID0gZmls
dGVyOworICAgICAgICAgICAgICAgIG1EaXJ0eVBhcmFtZXRlcnMgPSB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBz
dWNjZXNzZnVsIGZpbHRlciBzdGF0ZSB1cGRhdGUgKHZhbGlkIGVudW0gcGFyYW1ldGVyKQorYm9v
bCBUZXh0dXJlOjpzZXRNYWdGaWx0ZXIoR0xlbnVtIGZpbHRlcikKK3sKKyAgICBzd2l0Y2ggKGZp
bHRlcikKKyAgICB7CisgICAgICBjYXNlIEdMX05FQVJFU1Q6CisgICAgICBjYXNlIEdMX0xJTkVB
UjoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1NYWdGaWx0ZXIgIT0gZmlsdGVyKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG1NYWdGaWx0ZXIgPSBmaWx0ZXI7CisgICAgICAg
ICAgICAgICAgbURpcnR5UGFyYW1ldGVycyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3NmdWwgd3Jh
cCBzdGF0ZSB1cGRhdGUgKHZhbGlkIGVudW0gcGFyYW1ldGVyKQorYm9vbCBUZXh0dXJlOjpzZXRX
cmFwUyhHTGVudW0gd3JhcCkKK3sKKyAgICBzd2l0Y2ggKHdyYXApCisgICAgeworICAgICAgY2Fz
ZSBHTF9SRVBFQVQ6CisgICAgICBjYXNlIEdMX0NMQU1QX1RPX0VER0U6CisgICAgICBjYXNlIEdM
X01JUlJPUkVEX1JFUEVBVDoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1XcmFwUyAhPSB3
cmFwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1XcmFwUyA9IHdyYXA7CisgICAg
ICAgICAgICAgICAgbURpcnR5UGFyYW1ldGVycyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3NmdWwg
d3JhcCBzdGF0ZSB1cGRhdGUgKHZhbGlkIGVudW0gcGFyYW1ldGVyKQorYm9vbCBUZXh0dXJlOjpz
ZXRXcmFwVChHTGVudW0gd3JhcCkKK3sKKyAgICBzd2l0Y2ggKHdyYXApCisgICAgeworICAgICAg
Y2FzZSBHTF9SRVBFQVQ6CisgICAgICBjYXNlIEdMX0NMQU1QX1RPX0VER0U6CisgICAgICBjYXNl
IEdMX01JUlJPUkVEX1JFUEVBVDoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1XcmFwVCAh
PSB3cmFwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1XcmFwVCA9IHdyYXA7Cisg
ICAgICAgICAgICAgICAgbURpcnR5UGFyYW1ldGVycyA9IHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3Nm
dWwgdXNhZ2Ugc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wgVGV4dHVy
ZTo6c2V0VXNhZ2UoR0xlbnVtIHVzYWdlKQoreworICAgIHN3aXRjaCAodXNhZ2UpCisgICAgewor
ICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X0FOR0xFOgorICAgICAgICBtVXNhZ2UgPSB1c2FnZTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitHTGVudW0g
VGV4dHVyZTo6Z2V0TWluRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU1pbkZpbHRlcjsK
K30KKworR0xlbnVtIFRleHR1cmU6OmdldE1hZ0ZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1NYWdGaWx0ZXI7Cit9CisKK0dMZW51bSBUZXh0dXJlOjpnZXRXcmFwUygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1XcmFwUzsKK30KKworR0xlbnVtIFRleHR1cmU6OmdldFdyYXBUKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVdyYXBUOworfQorCitHTGVudW0gVGV4dHVyZTo6Z2V0VXNhZ2UoKSBj
b25zdAoreworICAgIHJldHVybiBtVXNhZ2U7Cit9CisKK3ZvaWQgVGV4dHVyZTo6c2V0SW1hZ2Uo
R0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMsIEltYWdlICppbWFnZSkK
K3sKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwpCisgICAgeworICAgICAgICBEM0RMT0NLRURfUkVD
VCBsb2NrZWQ7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gaW1hZ2UtPmxvY2soJmxvY2tlZCwg
TlVMTCk7CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICB7CisgICAg
ICAgICAgICBpbWFnZS0+bG9hZERhdGEoMCwgMCwgaW1hZ2UtPmdldFdpZHRoKCksIGltYWdlLT5n
ZXRIZWlnaHQoKSwgaW1hZ2UtPmdldFR5cGUoKSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMsIGxv
Y2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgICAgIGltYWdlLT51bmxvY2soKTsK
KyAgICAgICAgfQorCisgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CisgICAgfQorfQorCit2
b2lkIFRleHR1cmU6OnNldENvbXByZXNzZWRJbWFnZShHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
dm9pZCAqcGl4ZWxzLCBJbWFnZSAqaW1hZ2UpCit7CisgICAgaWYgKHBpeGVscyAhPSBOVUxMKQor
ICAgIHsKKyAgICAgICAgRDNETE9DS0VEX1JFQ1QgbG9ja2VkOworICAgICAgICBIUkVTVUxUIHJl
c3VsdCA9IGltYWdlLT5sb2NrKCZsb2NrZWQsIE5VTEwpOworCisgICAgICAgIGlmIChTVUNDRUVE
RUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGlucHV0UGl0Y2ggPSBDb21w
dXRlQ29tcHJlc3NlZFBpdGNoKGltYWdlLT5nZXRXaWR0aCgpLCBpbWFnZS0+Z2V0Rm9ybWF0KCkp
OworICAgICAgICAgICAgaW50IGlucHV0U2l6ZSA9IENvbXB1dGVDb21wcmVzc2VkU2l6ZShpbWFn
ZS0+Z2V0V2lkdGgoKSwgaW1hZ2UtPmdldEhlaWdodCgpLCBpbWFnZS0+Z2V0Rm9ybWF0KCkpOwor
ICAgICAgICAgICAgaW1hZ2UtPmxvYWRDb21wcmVzc2VkRGF0YSgwLCAwLCBpbWFnZS0+Z2V0V2lk
dGgoKSwgaW1hZ2UtPmdldEhlaWdodCgpLCAtaW5wdXRQaXRjaCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KHBpeGVscykgKyBpbnB1dFNpemUgLSBpbnB1dFBpdGNoLCBsb2NrZWQuUGl0Y2gsIGxv
Y2tlZC5wQml0cyk7CisgICAgICAgICAgICBpbWFnZS0+dW5sb2NrKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworICAgIH0KK30KKworYm9vbCBUZXh0dXJlOjpz
dWJJbWFnZShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdu
bWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzLCBJbWFnZSAqaW1hZ2UpCit7CisgICAgaWYgKHdpZHRo
ICsgeG9mZnNldCA+IGltYWdlLT5nZXRXaWR0aCgpIHx8IGhlaWdodCArIHlvZmZzZXQgPiBpbWFn
ZS0+Z2V0SGVpZ2h0KCkpCisgICAgeworICAgICAgICBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChJc0NvbXByZXNzZWQoaW1h
Z2UtPmdldEZvcm1hdCgpKSkKKyAgICB7CisgICAgICAgIGVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChmb3JtYXQgIT0g
aW1hZ2UtPmdldEZvcm1hdCgpKQorICAgIHsKKyAgICAgICAgZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHBpeGVscyAh
PSBOVUxMKQorICAgIHsKKyAgICAgICAgRDNETE9DS0VEX1JFQ1QgbG9ja2VkOworICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IGltYWdlLT5sb2NrKCZsb2NrZWQsIE5VTEwpOworCisgICAgICAgIGlm
IChTVUNDRUVERUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgaW1hZ2UtPmxvYWRE
YXRhKHhvZmZzZXQsIHRyYW5zZm9ybVBpeGVsWU9mZnNldCh5b2Zmc2V0LCBoZWlnaHQsIGltYWdl
LT5nZXRIZWlnaHQoKSksIHdpZHRoLCBoZWlnaHQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4
ZWxzLCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgICAgICBpbWFnZS0+dW5s
b2NrKCk7CisgICAgICAgIH0KKworICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRleHR1cmU6OnN1YkltYWdlQ29tcHJlc3Nl
ZChHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVs
cywgSW1hZ2UgKmltYWdlKQoreworICAgIGlmICh3aWR0aCArIHhvZmZzZXQgPiBpbWFnZS0+Z2V0
V2lkdGgoKSB8fCBoZWlnaHQgKyB5b2Zmc2V0ID4gaW1hZ2UtPmdldEhlaWdodCgpKQorICAgIHsK
KyAgICAgICAgZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAoZm9ybWF0ICE9IGdldEludGVybmFsRm9ybWF0KCkpCisgICAgewor
ICAgICAgICBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwpCisgICAgeworICAgICAgICBSRUNU
IHVwZGF0ZVJlZ2lvbjsKKyAgICAgICAgdXBkYXRlUmVnaW9uLmxlZnQgPSB4b2Zmc2V0OworICAg
ICAgICB1cGRhdGVSZWdpb24ucmlnaHQgPSB4b2Zmc2V0ICsgd2lkdGg7CisgICAgICAgIHVwZGF0
ZVJlZ2lvbi5ib3R0b20gPSB5b2Zmc2V0ICsgaGVpZ2h0OworICAgICAgICB1cGRhdGVSZWdpb24u
dG9wID0geW9mZnNldDsKKworICAgICAgICBEM0RMT0NLRURfUkVDVCBsb2NrZWQ7CisgICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gaW1hZ2UtPmxvY2soJmxvY2tlZCwgJnVwZGF0ZVJlZ2lvbik7CisK
KyAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBp
bnQgaW5wdXRQaXRjaCA9IENvbXB1dGVDb21wcmVzc2VkUGl0Y2god2lkdGgsIGZvcm1hdCk7Cisg
ICAgICAgICAgICBpbnQgaW5wdXRTaXplID0gQ29tcHV0ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCk7CisgICAgICAgICAgICBpbWFnZS0+bG9hZENvbXByZXNzZWREYXRhKHhv
ZmZzZXQsIHRyYW5zZm9ybVBpeGVsWU9mZnNldCh5b2Zmc2V0LCBoZWlnaHQsIGltYWdlLT5nZXRI
ZWlnaHQoKSksIHdpZHRoLCBoZWlnaHQsIC1pbnB1dFBpdGNoLCBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4ocGl4ZWxzKSArIGlucHV0U2l6ZSAtIGlucHV0UGl0Y2gsIGxvY2tlZC5QaXRjaCwgbG9j
a2VkLnBCaXRzKTsKKyAgICAgICAgICAgIGltYWdlLT51bmxvY2soKTsKKyAgICAgICAgfQorCisg
ICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAgfQogCi0gICAgcmVuZGVyVGFyZ2V0RGF0
YS0+UmVsZWFzZSgpOwotCi0gICAgaW1hZ2UtPmRpcnR5ID0gdHJ1ZTsKLSAgICBtRGlydHlJbWFn
ZSA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIElEaXJlY3QzREJhc2VUZXh0dXJlOSAq
VGV4dHVyZTo6Z2V0VGV4dHVyZSgpCiB7Ci0gICAgaWYgKCFpc0NvbXBsZXRlKCkpCisgICAgaWYg
KCFpc1NhbXBsZXJDb21wbGV0ZSgpKQogICAgIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAg
fQogCi0gICAgaWYgKCFnZXRCYXNlVGV4dHVyZSgpKQorICAgIC8vIGVuc3VyZSB0aGUgdW5kZXJs
eWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQKKyAgICBpZiAoZ2V0U3RvcmFnZShmYWxzZSkgPT0gTlVM
TCkKICAgICB7Ci0gICAgICAgIGNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7
CiAgICAgfQogCiAgICAgdXBkYXRlVGV4dHVyZSgpOwpAQCAtMTIxOSwzMiArMTU3Niw0NCBAQCBJ
RGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmU6OmdldFRleHR1cmUoKQogICAgIHJldHVybiBn
ZXRCYXNlVGV4dHVyZSgpOwogfQogCi1ib29sIFRleHR1cmU6OmlzRGlydHlQYXJhbWV0ZXIoKSBj
b25zdAorYm9vbCBUZXh0dXJlOjpoYXNEaXJ0eVBhcmFtZXRlcnMoKSBjb25zdAogewotICAgIHJl
dHVybiBtRGlydHlQYXJhbWV0ZXI7CisgICAgcmV0dXJuIG1EaXJ0eVBhcmFtZXRlcnM7CiB9CiAK
LWJvb2wgVGV4dHVyZTo6aXNEaXJ0eUltYWdlKCkgY29uc3QKK2Jvb2wgVGV4dHVyZTo6aGFzRGly
dHlJbWFnZXMoKSBjb25zdAogewotICAgIHJldHVybiBtRGlydHlJbWFnZTsKKyAgICByZXR1cm4g
bURpcnR5SW1hZ2VzOwogfQogCiB2b2lkIFRleHR1cmU6OnJlc2V0RGlydHkoKQogewotICAgIG1E
aXJ0eVBhcmFtZXRlciA9IGZhbHNlOwotICAgIG1EaXJ0eUltYWdlID0gZmFsc2U7CisgICAgbURp
cnR5UGFyYW1ldGVycyA9IGZhbHNlOworICAgIG1EaXJ0eUltYWdlcyA9IGZhbHNlOworfQorCit1
bnNpZ25lZCBpbnQgVGV4dHVyZTo6Z2V0VGV4dHVyZVNlcmlhbCgpCit7CisgICAgVGV4dHVyZVN0
b3JhZ2UgKnRleHR1cmUgPSBnZXRTdG9yYWdlKGZhbHNlKTsKKyAgICByZXR1cm4gdGV4dHVyZSA/
IHRleHR1cmUtPmdldFRleHR1cmVTZXJpYWwoKSA6IDA7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0
dXJlOjpnZXRSZW5kZXJUYXJnZXRTZXJpYWwoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBUZXh0dXJl
U3RvcmFnZSAqdGV4dHVyZSA9IGdldFN0b3JhZ2UodHJ1ZSk7CisgICAgcmV0dXJuIHRleHR1cmUg
PyB0ZXh0dXJlLT5nZXRSZW5kZXJUYXJnZXRTZXJpYWwodGFyZ2V0KSA6IDA7CiB9CiAKLXVuc2ln
bmVkIGludCBUZXh0dXJlOjpnZXRTZXJpYWwoKSBjb25zdAorYm9vbCBUZXh0dXJlOjppc0ltbXV0
YWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1TZXJpYWw7CisgICAgcmV0dXJuIG1JbW11dGFi
bGU7CiB9CiAKLUdMaW50IFRleHR1cmU6OmNyZWF0aW9uTGV2ZWxzKEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGludCBtYXhsZXZlbCkgY29uc3QKK0dMaW50IFRleHR1cmU6OmNyZWF0
aW9uTGV2ZWxzKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSBjb25zdAogewogICAgIGlm
ICgoaXNQb3cyKHdpZHRoKSAmJiBpc1BvdzIoaGVpZ2h0KSkgfHwgZ2V0Q29udGV4dCgpLT5zdXBw
b3J0c05vblBvd2VyMlRleHR1cmUoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtYXhsZXZlbDsK
KyAgICAgICAgcmV0dXJuIDA7ICAgLy8gTWF4aW11bSBudW1iZXIgb2YgbGV2ZWxzCiAgICAgfQog
ICAgIGVsc2UKICAgICB7CkBAIC0xMjUzLDkgKzE2MjIsOSBAQCBHTGludCBUZXh0dXJlOjpjcmVh
dGlvbkxldmVscyhHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgbWF4bGV2ZWwp
IGNvbgogICAgIH0KIH0KIAotR0xpbnQgVGV4dHVyZTo6Y3JlYXRpb25MZXZlbHMoR0xzaXplaSBz
aXplLCBHTGludCBtYXhsZXZlbCkgY29uc3QKK0dMaW50IFRleHR1cmU6OmNyZWF0aW9uTGV2ZWxz
KEdMc2l6ZWkgc2l6ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gY3JlYXRpb25MZXZlbHMoc2l6ZSwg
c2l6ZSwgbWF4bGV2ZWwpOworICAgIHJldHVybiBjcmVhdGlvbkxldmVscyhzaXplLCBzaXplKTsK
IH0KIAogaW50IFRleHR1cmU6OmxldmVsQ291bnQoKSBjb25zdApAQCAtMTI2MywyNyArMTYzMiwx
MDUgQEAgaW50IFRleHR1cmU6OmxldmVsQ291bnQoKSBjb25zdAogICAgIHJldHVybiBnZXRCYXNl
VGV4dHVyZSgpID8gZ2V0QmFzZVRleHR1cmUoKS0+R2V0TGV2ZWxDb3VudCgpIDogMDsKIH0KIAot
dW5zaWduZWQgaW50IFRleHR1cmU6Omlzc3VlU2VyaWFsKCkKK0JsaXQgKlRleHR1cmU6OmdldEJs
aXR0ZXIoKQogewotICAgIHJldHVybiBtQ3VycmVudFNlcmlhbCsrOworICAgIENvbnRleHQgKmNv
bnRleHQgPSBnZXRDb250ZXh0KCk7CisgICAgcmV0dXJuIGNvbnRleHQtPmdldEJsaXR0ZXIoKTsK
IH0KIAotVGV4dHVyZTJEOjpUZXh0dXJlMkQoR0x1aW50IGlkKSA6IFRleHR1cmUoaWQpCitib29s
IFRleHR1cmU6OmNvcHlUb1JlbmRlclRhcmdldChJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwgSURp
cmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgYm9vbCBmcm9tTWFuYWdlZCkKIHsKLSAgICBtVGV4dHVy
ZSA9IE5VTEw7Ci0gICAgbVN1cmZhY2UgPSBOVUxMOworICAgIGlmIChzb3VyY2UgJiYgZGVzdCkK
KyAgICB7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAgICAgIGlmIChmcm9tTWFuYWdl
ZCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0ID0gRDNEWExvYWRTdXJmYWNlRnJvbVN1
cmZhY2UoZGVzdCwgTlVMTCwgTlVMTCwgc291cmNlLCBOVUxMLCBOVUxMLCBEM0RYX0ZJTFRFUl9C
T1gsIDApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
ZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gZ2V0RGlzcGxheSgpOworICAgICAgICAgICAgSURpcmVj
dDNERGV2aWNlOSAqZGV2aWNlID0gZGlzcGxheS0+Z2V0RGV2aWNlKCk7CisKKyAgICAgICAgICAg
IGRpc3BsYXktPmVuZFNjZW5lKCk7CisgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPlN0cmV0
Y2hSZWN0KHNvdXJjZSwgTlVMTCwgZGVzdCwgTlVMTCwgRDNEVEVYRl9OT05FKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9P
VVRPRk1FTU9SWSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotVGV4dHVyZTJEOjp+VGV4dHVyZTJEKCkKK1RleHR1
cmVTdG9yYWdlMkQ6OlRleHR1cmVTdG9yYWdlMkQoSURpcmVjdDNEVGV4dHVyZTkgKnN1cmZhY2VU
ZXh0dXJlKSA6IFRleHR1cmVTdG9yYWdlKHRydWUpLCBtUmVuZGVyVGFyZ2V0U2VyaWFsKFJlbmRl
cmJ1ZmZlclN0b3JhZ2U6Omlzc3VlU2VyaWFsKCkpCiB7Ci0gICAgbUNvbG9yYnVmZmVyUHJveHku
c2V0KE5VTEwpOworICAgIG1UZXh0dXJlID0gc3VyZmFjZVRleHR1cmU7Cit9CisKK1RleHR1cmVT
dG9yYWdlMkQ6OlRleHR1cmVTdG9yYWdlMkQoaW50IGxldmVscywgRDNERk9STUFUIGZvcm1hdCwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIHJlbmRlclRhcmdldCkKKyAgICA6IFRleHR1cmVT
dG9yYWdlKHJlbmRlclRhcmdldCksIG1SZW5kZXJUYXJnZXRTZXJpYWwoUmVuZGVyYnVmZmVyU3Rv
cmFnZTo6aXNzdWVTZXJpYWwoKSkKK3sKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBn
ZXREZXZpY2UoKTsKKworICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICBIUkVTVUxUIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlVGV4dHVyZSh3aWR0aCwgaGVpZ2h0LCBsZXZlbHMsIGlzUmVuZGVyVGFy
Z2V0KCkgPyBEM0RVU0FHRV9SRU5ERVJUQVJHRVQgOiAwLCBmb3JtYXQsIGdldFBvb2woKSwgJm1U
ZXh0dXJlLCBOVUxMKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVf
T1VUT0ZNRU1PUlkpOworICAgICAgICBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CiAKK1RleHR1cmVTdG9yYWdlMkQ6On5UZXh0dXJlU3RvcmFnZTJEKCkKK3sKICAgICBpZiAobVRl
eHR1cmUpCiAgICAgewogICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOwotICAgICAgICBtVGV4
dHVyZSA9IE5VTEw7CiAgICAgfQorfQorCitJRGlyZWN0M0RTdXJmYWNlOSAqVGV4dHVyZVN0b3Jh
Z2UyRDo6Z2V0U3VyZmFjZUxldmVsKGludCBsZXZlbCkKK3sKKyAgICBJRGlyZWN0M0RTdXJmYWNl
OSAqc3VyZmFjZSA9IE5VTEw7CisKKyAgICBpZiAobVRleHR1cmUpCisgICAgeworICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IG1UZXh0dXJlLT5HZXRTdXJmYWNlTGV2ZWwobGV2ZWwsICZzdXJmYWNl
KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICByZXR1
cm4gc3VyZmFjZTsKK30KKworSURpcmVjdDNEQmFzZVRleHR1cmU5ICpUZXh0dXJlU3RvcmFnZTJE
OjpnZXRCYXNlVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlOworfQorCit1
bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2UyRDo6Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51
bSB0YXJnZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXRTZXJpYWw7Cit9CiAK
K1RleHR1cmUyRDo6VGV4dHVyZTJEKEdMdWludCBpZCkgOiBUZXh0dXJlKGlkKQoreworICAgIG1U
ZXhTdG9yYWdlID0gTlVMTDsKKyAgICBtU3VyZmFjZSA9IE5VTEw7Cit9CisKK1RleHR1cmUyRDo6
flRleHR1cmUyRCgpCit7CisgICAgbUNvbG9yYnVmZmVyUHJveHkuc2V0KE5VTEwpOworCisgICAg
ZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKKyAgICAKICAgICBp
ZiAobVN1cmZhY2UpCiAgICAgewogICAgICAgICBtU3VyZmFjZS0+c2V0Qm91bmRUZXh0dXJlKE5V
TEwpOwpAQCAtMTI5NiwyNCArMTc0MywzMCBAQCBHTGVudW0gVGV4dHVyZTJEOjpnZXRUYXJnZXQo
KSBjb25zdAogICAgIHJldHVybiBHTF9URVhUVVJFXzJEOwogfQogCi1HTHNpemVpIFRleHR1cmUy
RDo6Z2V0V2lkdGgoKSBjb25zdAorR0xzaXplaSBUZXh0dXJlMkQ6OmdldFdpZHRoKEdMaW50IGxl
dmVsKSBjb25zdAogewotICAgIHJldHVybiBtSW1hZ2VBcnJheVswXS53aWR0aDsKKyAgICBpZiAo
bGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAgICAgIHJldHVy
biBtSW1hZ2VBcnJheVtsZXZlbF0uZ2V0V2lkdGgoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVy
biAwOwogfQogCi1HTHNpemVpIFRleHR1cmUyRDo6Z2V0SGVpZ2h0KCkgY29uc3QKK0dMc2l6ZWkg
VGV4dHVyZTJEOjpnZXRIZWlnaHQoR0xpbnQgbGV2ZWwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1J
bWFnZUFycmF5WzBdLmhlaWdodDsKKyAgICBpZiAobGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhf
VEVYVFVSRV9MRVZFTFMpCisgICAgICAgIHJldHVybiBtSW1hZ2VBcnJheVtsZXZlbF0uZ2V0SGVp
Z2h0KCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKIH0KIAogR0xlbnVtIFRleHR1cmUy
RDo6Z2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdAogewotICAgIHJldHVybiBtSW1hZ2VBcnJheVsw
XS5mb3JtYXQ7CisgICAgcmV0dXJuIG1JbWFnZUFycmF5WzBdLmdldEZvcm1hdCgpOwogfQogCiBH
TGVudW0gVGV4dHVyZTJEOjpnZXRUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUltYWdlQXJy
YXlbMF0udHlwZTsKKyAgICByZXR1cm4gbUltYWdlQXJyYXlbMF0uZ2V0VHlwZSgpOwogfQogCiBE
M0RGT1JNQVQgVGV4dHVyZTJEOjpnZXREM0RGb3JtYXQoKSBjb25zdApAQCAtMTMyMSw2NiArMTc3
NCwzNiBAQCBEM0RGT1JNQVQgVGV4dHVyZTJEOjpnZXREM0RGb3JtYXQoKSBjb25zdAogICAgIHJl
dHVybiBtSW1hZ2VBcnJheVswXS5nZXREM0RGb3JtYXQoKTsKIH0KIAotdm9pZCBUZXh0dXJlMkQ6
OnJlZGVmaW5lVGV4dHVyZShHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSB0eXBlLCBib29sIGZvcmNlUmVkZWZpbmUpCit2b2lk
IFRleHR1cmUyRDo6cmVkZWZpbmVJbWFnZShHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSB0eXBlKQogewotICAgIEdMc2l6ZWkg
dGV4dHVyZVdpZHRoID0gbUltYWdlQXJyYXlbMF0ud2lkdGg7Ci0gICAgR0xzaXplaSB0ZXh0dXJl
SGVpZ2h0ID0gbUltYWdlQXJyYXlbMF0uaGVpZ2h0OwotICAgIEdMZW51bSB0ZXh0dXJlRm9ybWF0
ID0gbUltYWdlQXJyYXlbMF0uZm9ybWF0OwotICAgIEdMZW51bSB0ZXh0dXJlVHlwZSA9IG1JbWFn
ZUFycmF5WzBdLnR5cGU7Ci0KLSAgICBtSW1hZ2VBcnJheVtsZXZlbF0ud2lkdGggPSB3aWR0aDsK
LSAgICBtSW1hZ2VBcnJheVtsZXZlbF0uaGVpZ2h0ID0gaGVpZ2h0OwotICAgIG1JbWFnZUFycmF5
W2xldmVsXS5mb3JtYXQgPSBmb3JtYXQ7Ci0gICAgbUltYWdlQXJyYXlbbGV2ZWxdLnR5cGUgPSB0
eXBlOwotCi0gICAgaWYgKCFtVGV4dHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgcmVsZWFzZVRleEltYWdlKCk7CiAKLSAgICBib29sIHdpZHRoT2theSA9ICh0ZXh0dXJl
V2lkdGggPj4gbGV2ZWwgPT0gd2lkdGgpIHx8ICh0ZXh0dXJlV2lkdGggPj4gbGV2ZWwgPT0gMCAm
JiB3aWR0aCA9PSAxKTsKLSAgICBib29sIGhlaWdodE9rYXkgPSAodGV4dHVyZUhlaWdodCA+PiBs
ZXZlbCA9PSBoZWlnaHQpIHx8ICh0ZXh0dXJlSGVpZ2h0ID4+IGxldmVsID09IDAgJiYgaGVpZ2h0
ID09IDEpOwotICAgIGJvb2wgdGV4dHVyZU9rYXkgPSAod2lkdGhPa2F5ICYmIGhlaWdodE9rYXkg
JiYgdGV4dHVyZUZvcm1hdCA9PSBmb3JtYXQgJiYgdGV4dHVyZVR5cGUgPT0gdHlwZSk7CisgICAg
Ym9vbCByZWRlZmluZWQgPSBtSW1hZ2VBcnJheVtsZXZlbF0ucmVkZWZpbmUoZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCB0eXBlLCBmYWxzZSk7CiAKLSAgICBpZiAoIXRleHR1cmVPa2F5IHx8IGZvcmNl
UmVkZWZpbmUgfHwgbVN1cmZhY2UpICAgLy8gUHVyZ2UgYWxsIHRoZSBsZXZlbHMgYW5kIHRoZSB0
ZXh0dXJlLgorICAgIGlmIChtVGV4U3RvcmFnZSAmJiByZWRlZmluZWQpCiAgICAgewogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsg
aSsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobUltYWdlQXJyYXlbaV0uc3VyZmFjZSAh
PSBOVUxMKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldLnN1
cmZhY2UtPlJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtpXS5zdXJmYWNl
ID0gTlVMTDsKLSAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtpXS5kaXJ0eSA9IHRydWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVRleHR1cmUgIT0gTlVMTCkK
LSAgICAgICAgewotICAgICAgICAgICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKLSAgICAgICAgICAg
IG1UZXh0dXJlID0gTlVMTDsKLSAgICAgICAgICAgIG1EaXJ0eUltYWdlID0gdHJ1ZTsKLSAgICAg
ICAgICAgIG1Jc1JlbmRlcmFibGUgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICht
U3VyZmFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgbVN1cmZhY2UtPnNldEJvdW5kVGV4dHVy
ZShOVUxMKTsKLSAgICAgICAgICAgIG1TdXJmYWNlID0gTlVMTDsKKyAgICAgICAgICAgIG1JbWFn
ZUFycmF5W2ldLm1hcmtEaXJ0eSgpOwogICAgICAgICB9CiAKLSAgICAgICAgbUNvbG9yYnVmZmVy
UHJveHkuc2V0KE5VTEwpOworICAgICAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgICAgIG1U
ZXhTdG9yYWdlID0gTlVMTDsKKyAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAgICB9CiB9
CiAKIHZvaWQgVGV4dHVyZTJEOjpzZXRJbWFnZShHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tB
bGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKLSAgICByZWRlZmluZVRleHR1cmUobGV2
ZWwsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgdHlwZSwgZmFsc2UpOworICAgIHJlZGVmaW5lSW1h
Z2UobGV2ZWwsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgdHlwZSk7CiAKICAgICBUZXh0dXJlOjpz
ZXRJbWFnZSh1bnBhY2tBbGlnbm1lbnQsIHBpeGVscywgJm1JbWFnZUFycmF5W2xldmVsXSk7CiB9
CiAKIHZvaWQgVGV4dHVyZTJEOjpiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQog
eworICAgIHJlbGVhc2VUZXhJbWFnZSgpOworCiAgICAgR0xlbnVtIGZvcm1hdDsKIAogICAgIHN3
aXRjaChzdXJmYWNlLT5nZXRGb3JtYXQoKSkKQEAgLTEzOTYsNTYgKzE4MTksNTggQEAgdm9pZCBU
ZXh0dXJlMkQ6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICByZWRlZmluZVRleHR1cmUoMCwgZm9ybWF0LCBzdXJmYWNlLT5n
ZXRXaWR0aCgpLCBzdXJmYWNlLT5nZXRIZWlnaHQoKSwgR0xfVU5TSUdORURfQllURSwgdHJ1ZSk7
CisgICAgbUltYWdlQXJyYXlbMF0ucmVkZWZpbmUoZm9ybWF0LCBzdXJmYWNlLT5nZXRXaWR0aCgp
LCBzdXJmYWNlLT5nZXRIZWlnaHQoKSwgR0xfVU5TSUdORURfQllURSwgdHJ1ZSk7CiAKLSAgICBJ
RGlyZWN0M0RUZXh0dXJlOSAqdGV4dHVyZSA9IHN1cmZhY2UtPmdldE9mZnNjcmVlblRleHR1cmUo
KTsKKyAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRleFN0b3JhZ2UgPSBuZXcgVGV4dHVy
ZVN0b3JhZ2UyRChzdXJmYWNlLT5nZXRPZmZzY3JlZW5UZXh0dXJlKCkpOwogCi0gICAgbVRleHR1
cmUgPSB0ZXh0dXJlOwotICAgIG1EaXJ0eUltYWdlID0gdHJ1ZTsKLSAgICBtSXNSZW5kZXJhYmxl
ID0gdHJ1ZTsKKyAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwogICAgIG1TdXJmYWNlID0gc3VyZmFj
ZTsKICAgICBtU3VyZmFjZS0+c2V0Qm91bmRUZXh0dXJlKHRoaXMpOwogfQogCiB2b2lkIFRleHR1
cmUyRDo6cmVsZWFzZVRleEltYWdlKCkKIHsKLSAgICByZWRlZmluZVRleHR1cmUoMCwgR0xfUkdC
LCAwLCAwLCBHTF9VTlNJR05FRF9CWVRFLCB0cnVlKTsKKyAgICBpZiAobVN1cmZhY2UpCisgICAg
eworICAgICAgICBtU3VyZmFjZS0+c2V0Qm91bmRUZXh0dXJlKE5VTEwpOworICAgICAgICBtU3Vy
ZmFjZSA9IE5VTEw7CisKKyAgICAgICAgaWYgKG1UZXhTdG9yYWdlKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgICAgICAgICBtVGV4U3RvcmFnZSA9IE5V
TEw7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IElNUExFTUVOVEFU
SU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBtSW1h
Z2VBcnJheVtpXS5yZWRlZmluZShHTF9SR0JBLCAwLCAwLCBHTF9VTlNJR05FRF9CWVRFLCB0cnVl
KTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBUZXh0dXJlMkQ6OnNldENvbXByZXNzZWRJ
bWFnZShHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCiB7Ci0gICAgcmVk
ZWZpbmVUZXh0dXJlKGxldmVsLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIEdMX1VOU0lHTkVEX0JZ
VEUsIGZhbHNlKTsKKyAgICByZWRlZmluZUltYWdlKGxldmVsLCBmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIEdMX1VOU0lHTkVEX0JZVEUpOwogCiAgICAgVGV4dHVyZTo6c2V0Q29tcHJlc3NlZEltYWdl
KGltYWdlU2l6ZSwgcGl4ZWxzLCAmbUltYWdlQXJyYXlbbGV2ZWxdKTsKIH0KIAogdm9pZCBUZXh0
dXJlMkQ6OmNvbW1pdFJlY3QoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogewotICAgIEFTU0VSVChtSW1hZ2VB
cnJheVtsZXZlbF0uc3VyZmFjZSAhPSBOVUxMKTsKKyAgICBBU1NFUlQobUltYWdlQXJyYXlbbGV2
ZWxdLmdldFN1cmZhY2UoKSAhPSBOVUxMKTsKIAogICAgIGlmIChsZXZlbCA8IGxldmVsQ291bnQo
KSkKICAgICB7Ci0gICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0TGV2ZWwgPSBOVUxMOwot
ICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1UZXh0dXJlLT5HZXRTdXJmYWNlTGV2ZWwobGV2ZWws
ICZkZXN0TGV2ZWwpOworICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdExldmVsID0gbVRl
eFN0b3JhZ2UtPmdldFN1cmZhY2VMZXZlbChsZXZlbCk7CiAKLSAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKLQotICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgICAg
IGlmIChkZXN0TGV2ZWwpCiAgICAgICAgIHsKICAgICAgICAgICAgIEltYWdlICppbWFnZSA9ICZt
SW1hZ2VBcnJheVtsZXZlbF07Ci0KLSAgICAgICAgICAgIFJFQ1Qgc291cmNlUmVjdCA9IHRyYW5z
Zm9ybVBpeGVsUmVjdCh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbWFnZS0+aGVp
Z2h0KTs7Ci0KLSAgICAgICAgICAgIFBPSU5UIGRlc3RQb2ludDsKLSAgICAgICAgICAgIGRlc3RQ
b2ludC54ID0gc291cmNlUmVjdC5sZWZ0OwotICAgICAgICAgICAgZGVzdFBvaW50LnkgPSBzb3Vy
Y2VSZWN0LnRvcDsKLQotICAgICAgICAgICAgcmVzdWx0ID0gZ2V0RGV2aWNlKCktPlVwZGF0ZVN1
cmZhY2UoaW1hZ2UtPnN1cmZhY2UsICZzb3VyY2VSZWN0LCBkZXN0TGV2ZWwsICZkZXN0UG9pbnQp
OwotICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgICAgIGlt
YWdlLT51cGRhdGVTdXJmYWNlKGRlc3RMZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCk7CiAKICAgICAgICAgICAgIGRlc3RMZXZlbC0+UmVsZWFzZSgpOwotCi0gICAgICAgICAg
ICBpbWFnZS0+ZGlydHkgPSBmYWxzZTsKKyAgICAgICAgICAgIGltYWdlLT5tYXJrQ2xlYW4oKTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE0NzYsMjAgKzE5MDEsMjEgQEAgdm9pZCBUZXh0dXJl
MkQ6OmNvcHlJbWFnZShHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaQogICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CiAgICAg
fQogCi0gICAgcmVkZWZpbmVUZXh0dXJlKGxldmVsLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIEdM
X1VOU0lHTkVEX0JZVEUsIGZhbHNlKTsKKyAgICByZWRlZmluZUltYWdlKGxldmVsLCBmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIEdMX1VOU0lHTkVEX0JZVEUpOwogICAgCi0gICAgaWYgKCFtSW1hZ2VB
cnJheVtsZXZlbF0uaXNSZW5kZXJhYmxlKCkpCisgICAgaWYgKCFtSW1hZ2VBcnJheVtsZXZlbF0u
aXNSZW5kZXJhYmxlRm9ybWF0KCkpCiAgICAgewotICAgICAgICBjb3B5VG9JbWFnZSgmbUltYWdl
QXJyYXlbbGV2ZWxdLCAwLCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCByZW5kZXJUYXJnZXQpOwor
ICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF0uY29weSgwLCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCByZW5kZXJUYXJnZXQpOworICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwogICAgIH0KICAg
ICBlbHNlCiAgICAgewotICAgICAgICBpZiAoIW1UZXh0dXJlIHx8ICFtSXNSZW5kZXJhYmxlKQor
ICAgICAgICBpZiAoIW1UZXhTdG9yYWdlIHx8ICFtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQo
KSkKICAgICAgICAgewogICAgICAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIHVwZGF0ZVRleHR1cmUoKTsKKyAgICAgICAgbUltYWdl
QXJyYXlbbGV2ZWxdLm1hcmtDbGVhbigpOwogCiAgICAgICAgIGlmICh3aWR0aCAhPSAwICYmIGhl
aWdodCAhPSAwICYmIGxldmVsIDwgbGV2ZWxDb3VudCgpKQogICAgICAgICB7CkBAIC0xNDk5LDIw
ICsxOTI1LDI0IEBAIHZvaWQgVGV4dHVyZTJEOjpjb3B5SW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51
bSBmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkKICAgICAgICAgICAgIHNvdXJjZVJl
Y3QucmlnaHQgPSBjbGFtcChzb3VyY2VSZWN0LnJpZ2h0LCAwLCBzb3VyY2UtPmdldENvbG9yYnVm
ZmVyKCktPmdldFdpZHRoKCkpOwogICAgICAgICAgICAgc291cmNlUmVjdC5ib3R0b20gPSBjbGFt
cChzb3VyY2VSZWN0LmJvdHRvbSwgMCwgc291cmNlLT5nZXRDb2xvcmJ1ZmZlcigpLT5nZXRIZWln
aHQoKSk7CiAKLSAgICAgICAgICAgIEdMaW50IGRlc3RZT2Zmc2V0ID0gdHJhbnNmb3JtUGl4ZWxZ
T2Zmc2V0KDAsIGhlaWdodCwgbUltYWdlQXJyYXlbbGV2ZWxdLmhlaWdodCk7CisgICAgICAgICAg
ICBHTGludCBkZXN0WU9mZnNldCA9IHRyYW5zZm9ybVBpeGVsWU9mZnNldCgwLCBoZWlnaHQsIG1J
bWFnZUFycmF5W2xldmVsXS5nZXRIZWlnaHQoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0OwotICAgICAgICAgICAgSFJFU1VMVCBociA9IG1UZXh0
dXJlLT5HZXRTdXJmYWNlTGV2ZWwobGV2ZWwsICZkZXN0KTsKKyAgICAgICAgICAgIElEaXJlY3Qz
RFN1cmZhY2U5ICpkZXN0ID0gbVRleFN0b3JhZ2UtPmdldFN1cmZhY2VMZXZlbChsZXZlbCk7CiAK
LSAgICAgICAgICAgIGdldEJsaXR0ZXIoKS0+Y29weShzb3VyY2UtPmdldFJlbmRlclRhcmdldCgp
LCBzb3VyY2VSZWN0LCBmb3JtYXQsIDAsIGRlc3RZT2Zmc2V0LCBkZXN0KTsKLSAgICAgICAgICAg
IGRlc3QtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIGlmIChkZXN0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGdldEJsaXR0ZXIoKS0+Y29weShyZW5kZXJUYXJnZXQsIHNvdXJjZVJl
Y3QsIGZvcm1hdCwgMCwgZGVzdFlPZmZzZXQsIGRlc3QpOworICAgICAgICAgICAgICAgIGRlc3Qt
PlJlbGVhc2UoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKworICAgIHJlbmRl
clRhcmdldC0+UmVsZWFzZSgpOwogfQogCiB2b2lkIFRleHR1cmUyRDo6Y29weVN1YkltYWdlKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
TGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVidWZm
ZXIgKnNvdXJjZSkKIHsKLSAgICBpZiAoeG9mZnNldCArIHdpZHRoID4gbUltYWdlQXJyYXlbbGV2
ZWxdLndpZHRoIHx8IHlvZmZzZXQgKyBoZWlnaHQgPiBtSW1hZ2VBcnJheVtsZXZlbF0uaGVpZ2h0
KQorICAgIGlmICh4b2Zmc2V0ICsgd2lkdGggPiBtSW1hZ2VBcnJheVtsZXZlbF0uZ2V0V2lkdGgo
KSB8fCB5b2Zmc2V0ICsgaGVpZ2h0ID4gbUltYWdlQXJyYXlbbGV2ZWxdLmdldEhlaWdodCgpKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgIH0KQEAg
LTE1MjUsMTUgKzE5NTUsMTQgQEAgdm9pZCBUZXh0dXJlMkQ6OmNvcHlTdWJJbWFnZShHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW8KICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgIH0KIAotICAgIHJlZGVmaW5lVGV4dHVy
ZShsZXZlbCwgbUltYWdlQXJyYXlbbGV2ZWxdLmZvcm1hdCwgbUltYWdlQXJyYXlbbGV2ZWxdLndp
ZHRoLCBtSW1hZ2VBcnJheVtsZXZlbF0uaGVpZ2h0LCBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSk7
Ci0gICAKLSAgICBpZiAoIW1JbWFnZUFycmF5W2xldmVsXS5pc1JlbmRlcmFibGUoKSB8fCAoIW1U
ZXh0dXJlICYmICFpc0NvbXBsZXRlKCkpKQorICAgIGlmICghbUltYWdlQXJyYXlbbGV2ZWxdLmlz
UmVuZGVyYWJsZUZvcm1hdCgpIHx8ICghbVRleFN0b3JhZ2UgJiYgIWlzU2FtcGxlckNvbXBsZXRl
KCkpKQogICAgIHsKLSAgICAgICAgY29weVRvSW1hZ2UoJm1JbWFnZUFycmF5W2xldmVsXSwgeG9m
ZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgcmVuZGVyVGFyZ2V0KTsKKyAgICAg
ICAgbUltYWdlQXJyYXlbbGV2ZWxdLmNvcHkoeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgcmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaWYgKCFtVGV4dHVyZSB8fCAhbUlzUmVuZGVy
YWJsZSkKKyAgICAgICAgaWYgKCFtVGV4U3RvcmFnZSB8fCAhbVRleFN0b3JhZ2UtPmlzUmVuZGVy
VGFyZ2V0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnZlcnRUb1JlbmRlclRhcmdldCgp
OwogICAgICAgICB9CkBAIC0xNTQ4LDIyICsxOTc3LDYxIEBAIHZvaWQgVGV4dHVyZTJEOjpjb3B5
U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvCiAgICAgICAgICAgICBzb3VyY2VSZWN0LnJpZ2h0ID0gY2xhbXAoc291cmNlUmVjdC5yaWdo
dCwgMCwgc291cmNlLT5nZXRDb2xvcmJ1ZmZlcigpLT5nZXRXaWR0aCgpKTsKICAgICAgICAgICAg
IHNvdXJjZVJlY3QuYm90dG9tID0gY2xhbXAoc291cmNlUmVjdC5ib3R0b20sIDAsIHNvdXJjZS0+
Z2V0Q29sb3JidWZmZXIoKS0+Z2V0SGVpZ2h0KCkpOwogCi0gICAgICAgICAgICBHTGludCBkZXN0
WU9mZnNldCA9IHRyYW5zZm9ybVBpeGVsWU9mZnNldCh5b2Zmc2V0LCBoZWlnaHQsIG1JbWFnZUFy
cmF5W2xldmVsXS5oZWlnaHQpOworICAgICAgICAgICAgR0xpbnQgZGVzdFlPZmZzZXQgPSB0cmFu
c2Zvcm1QaXhlbFlPZmZzZXQoeW9mZnNldCwgaGVpZ2h0LCBtSW1hZ2VBcnJheVtsZXZlbF0uZ2V0
SGVpZ2h0KCkpOworCisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCA9IG1UZXhT
dG9yYWdlLT5nZXRTdXJmYWNlTGV2ZWwobGV2ZWwpOworCisgICAgICAgICAgICBpZiAoZGVzdCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnZXRCbGl0dGVyKCktPmNvcHkocmVuZGVy
VGFyZ2V0LCBzb3VyY2VSZWN0LCBtSW1hZ2VBcnJheVswXS5nZXRGb3JtYXQoKSwgeG9mZnNldCwg
ZGVzdFlPZmZzZXQsIGRlc3QpOworICAgICAgICAgICAgICAgIGRlc3QtPlJlbGVhc2UoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJlbmRlclRhcmdldC0+UmVsZWFz
ZSgpOworfQorCit2b2lkIFRleHR1cmUyRDo6c3RvcmFnZShHTHNpemVpIGxldmVscywgR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBH
TGVudW0gZm9ybWF0ID0gZ2w6OkV4dHJhY3RGb3JtYXQoaW50ZXJuYWxmb3JtYXQpOworICAgIEdM
ZW51bSB0eXBlID0gZ2w6OkV4dHJhY3RUeXBlKGludGVybmFsZm9ybWF0KTsKKyAgICBEM0RGT1JN
QVQgZDNkZm10ID0gQ29udmVydFRleHR1cmVGb3JtYXRUeXBlKGZvcm1hdCwgdHlwZSk7CisgICAg
Y29uc3QgYm9vbCByZW5kZXJUYXJnZXQgPSBJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKGQzZGZt
dCkgJiYgKG1Vc2FnZSA9PSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKTsKKworICAg
IGRlbGV0ZSBtVGV4U3RvcmFnZTsKKyAgICBtVGV4U3RvcmFnZSA9IG5ldyBUZXh0dXJlU3RvcmFn
ZTJEKGxldmVscywgZDNkZm10LCB3aWR0aCwgaGVpZ2h0LCByZW5kZXJUYXJnZXQpOworICAgIG1J
bW11dGFibGUgPSB0cnVlOworCisgICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVs
czsgbGV2ZWwrKykKKyAgICB7CisgICAgICAgIG1JbWFnZUFycmF5W2xldmVsXS5yZWRlZmluZShm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIHR5cGUsIHRydWUpOworICAgICAgICB3aWR0aCA9IHN0ZDo6
bWF4KDEsIHdpZHRoID4+IDEpOworICAgICAgICBoZWlnaHQgPSBzdGQ6Om1heCgxLCBoZWlnaHQg
Pj4gMSk7CisgICAgfQorCisgICAgZm9yIChpbnQgbGV2ZWwgPSBsZXZlbHM7IGxldmVsIDwgSU1Q
TEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAg
bUltYWdlQXJyYXlbbGV2ZWxdLnJlZGVmaW5lKEdMX05PTkUsIDAsIDAsIEdMX1VOU0lHTkVEX0JZ
VEUsIHRydWUpOworICAgIH0KIAotICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3Q7
Ci0gICAgICAgICAgICBIUkVTVUxUIGhyID0gbVRleHR1cmUtPkdldFN1cmZhY2VMZXZlbChsZXZl
bCwgJmRlc3QpOworICAgIGlmIChtVGV4U3RvcmFnZS0+aXNNYW5hZ2VkKCkpCisgICAgeworICAg
ICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOwogCi0gICAgICAgICAgICBnZXRCbGl0dGVy
KCktPmNvcHkoc291cmNlLT5nZXRSZW5kZXJUYXJnZXQoKSwgc291cmNlUmVjdCwgbUltYWdlQXJy
YXlbMF0uZm9ybWF0LCB4b2Zmc2V0LCBkZXN0WU9mZnNldCwgZGVzdCk7Ci0gICAgICAgICAgICBk
ZXN0LT5SZWxlYXNlKCk7CisgICAgICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZl
bHM7IGxldmVsKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpz
dXJmYWNlID0gbVRleFN0b3JhZ2UtPmdldFN1cmZhY2VMZXZlbChsZXZlbCk7CisgICAgICAgICAg
ICBtSW1hZ2VBcnJheVtsZXZlbF0uc2V0TWFuYWdlZFN1cmZhY2Uoc3VyZmFjZSk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKLS8vIFRlc3RzIGZvciBHTCB0ZXh0dXJlIG9iamVjdCBjb21wbGV0ZW5l
c3MuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDMuNy4xMCBwYWdlIDgxLgotYm9vbCBUZXh0
dXJlMkQ6OmlzQ29tcGxldGUoKSBjb25zdAorLy8gVGVzdHMgZm9yIDJEIHRleHR1cmUgc2FtcGxp
bmcgY29tcGxldGVuZXNzLiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjguMiBwYWdlIDg1
LgorYm9vbCBUZXh0dXJlMkQ6OmlzU2FtcGxlckNvbXBsZXRlKCkgY29uc3QKIHsKLSAgICBHTHNp
emVpIHdpZHRoID0gbUltYWdlQXJyYXlbMF0ud2lkdGg7Ci0gICAgR0xzaXplaSBoZWlnaHQgPSBt
SW1hZ2VBcnJheVswXS5oZWlnaHQ7CisgICAgR0xzaXplaSB3aWR0aCA9IG1JbWFnZUFycmF5WzBd
LmdldFdpZHRoKCk7CisgICAgR0xzaXplaSBoZWlnaHQgPSBtSW1hZ2VBcnJheVswXS5nZXRIZWln
aHQoKTsKIAogICAgIGlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQogICAgIHsKQEAgLTE1
ODQsMTEgKzIwNTIsMTEgQEAgYm9vbCBUZXh0dXJlMkQ6OmlzQ29tcGxldGUoKSBjb25zdAogICAg
ICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjoKICAgICAgICAgbWlwbWFwcGluZyA9IHRy
dWU7CiAgICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKLSAgICBpZiAoKGdldEludGVybmFsRm9y
bWF0KCkgPT0gR0xfRkxPQVQgJiYgIWdldENvbnRleHQoKS0+c3VwcG9ydHNGbG9hdExpbmVhckZp
bHRlcigpKSB8fAotICAgICAgICAoZ2V0SW50ZXJuYWxGb3JtYXQoKSA9PSBHTF9IQUxGX0ZMT0FU
X09FUyAmJiAhZ2V0Q29udGV4dCgpLT5zdXBwb3J0c0hhbGZGbG9hdExpbmVhckZpbHRlcigpKSkK
KyAgICBpZiAoKGdldEludGVybmFsRm9ybWF0KCkgPT0gR0xfRkxPQVQgJiYgIWdldENvbnRleHQo
KS0+c3VwcG9ydHNGbG9hdDMyTGluZWFyRmlsdGVyKCkpIHx8CisgICAgICAgIChnZXRJbnRlcm5h
bEZvcm1hdCgpID09IEdMX0hBTEZfRkxPQVRfT0VTICYmICFnZXRDb250ZXh0KCktPnN1cHBvcnRz
RmxvYXQxNkxpbmVhckZpbHRlcigpKSkKICAgICB7CiAgICAgICAgIGlmIChtTWFnRmlsdGVyICE9
IEdMX05FQVJFU1QgfHwgKG1NaW5GaWx0ZXIgIT0gR0xfTkVBUkVTVCAmJiBtTWluRmlsdGVyICE9
IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpKQogICAgICAgICB7CkBAIC0xNTk2LDkgKzIwNjQs
OSBAQCBib29sIFRleHR1cmUyRDo6aXNDb21wbGV0ZSgpIGNvbnN0CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBib29sIG5wb3QgPSBnZXRDb250ZXh0KCktPnN1cHBvcnRzTm9uUG93ZXIyVGV4dHVy
ZSgpOworICAgIGJvb2wgbnBvdFN1cHBvcnQgPSBnZXRDb250ZXh0KCktPnN1cHBvcnRzTm9uUG93
ZXIyVGV4dHVyZSgpOwogCi0gICAgaWYgKCFucG90KQorICAgIGlmICghbnBvdFN1cHBvcnQpCiAg
ICAgewogICAgICAgICBpZiAoKGdldFdyYXBTKCkgIT0gR0xfQ0xBTVBfVE9fRURHRSAmJiAhaXNQ
b3cyKHdpZHRoKSkgfHwKICAgICAgICAgICAgIChnZXRXcmFwVCgpICE9IEdMX0NMQU1QX1RPX0VE
R0UgJiYgIWlzUG93MihoZWlnaHQpKSkKQEAgLTE2MDksNyArMjA3Nyw3IEBAIGJvb2wgVGV4dHVy
ZTJEOjppc0NvbXBsZXRlKCkgY29uc3QKIAogICAgIGlmIChtaXBtYXBwaW5nKQogICAgIHsKLSAg
ICAgICAgaWYgKCFucG90KQorICAgICAgICBpZiAoIW5wb3RTdXBwb3J0KQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIWlzUG93Mih3aWR0aCkgfHwgIWlzUG93MihoZWlnaHQpKQogICAgICAg
ICAgICAgewpAQCAtMTYxNywyOSArMjA4NSw1MyBAQCBib29sIFRleHR1cmUyRDo6aXNDb21wbGV0
ZSgpIGNvbnN0CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpbnQgcSA9IGxv
ZzIoc3RkOjptYXgod2lkdGgsIGhlaWdodCkpOworICAgICAgICBpZiAoIWlzTWlwbWFwQ29tcGxl
dGUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICAgICAgZm9yIChpbnQgbGV2ZWwgPSAx
OyBsZXZlbCA8PSBxOyBsZXZlbCsrKQorLy8gVGVzdHMgZm9yIDJEIHRleHR1cmUgKG1pcG1hcCkg
Y29tcGxldGVuZXNzLiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjcuMTAgcGFnZSA4MS4K
K2Jvb2wgVGV4dHVyZTJEOjppc01pcG1hcENvbXBsZXRlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNJ
bW11dGFibGUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEdM
c2l6ZWkgd2lkdGggPSBtSW1hZ2VBcnJheVswXS5nZXRXaWR0aCgpOworICAgIEdMc2l6ZWkgaGVp
Z2h0ID0gbUltYWdlQXJyYXlbMF0uZ2V0SGVpZ2h0KCk7CisKKyAgICBpZiAod2lkdGggPD0gMCB8
fCBoZWlnaHQgPD0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpbnQgcSA9IGxvZzIoc3RkOjptYXgod2lkdGgsIGhlaWdodCkpOworCisgICAgZm9yIChpbnQg
bGV2ZWwgPSAxOyBsZXZlbCA8PSBxOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgaWYgKG1JbWFn
ZUFycmF5W2xldmVsXS5nZXRGb3JtYXQoKSAhPSBtSW1hZ2VBcnJheVswXS5nZXRGb3JtYXQoKSkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKG1JbWFnZUFycmF5W2xldmVsXS5mb3JtYXQgIT0g
bUltYWdlQXJyYXlbMF0uZm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQogCi0gICAgICAgICAgICBpZiAobUltYWdlQXJyYXlbbGV2ZWxdLnR5cGUgIT0gbUlt
YWdlQXJyYXlbMF0udHlwZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChtSW1hZ2VBcnJheVtsZXZlbF0uZ2V0
VHlwZSgpICE9IG1JbWFnZUFycmF5WzBdLmdldFR5cGUoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJh
eVtsZXZlbF0ud2lkdGggIT0gc3RkOjptYXgoMSwgd2lkdGggPj4gbGV2ZWwpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgaWYgKG1JbWFnZUFycmF5W2xldmVsXS5nZXRXaWR0aCgpICE9IHN0ZDo6bWF4KDEsIHdpZHRo
ID4+IGxldmVsKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJheVtsZXZlbF0uaGVpZ2h0ICE9IHN0ZDo6
bWF4KDEsIGhlaWdodCA+PiBsZXZlbCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAobUltYWdlQXJyYXlbbGV2
ZWxdLmdldEhlaWdodCgpICE9IHN0ZDo6bWF4KDEsIGhlaWdodCA+PiBsZXZlbCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTY1
MywxODMgKzIxNDUsMTE3IEBAIGJvb2wgVGV4dHVyZTJEOjppc0NvbXByZXNzZWQoKSBjb25zdAog
CiBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmUyRDo6Z2V0QmFzZVRleHR1cmUoKSBjb25z
dAogewotICAgIHJldHVybiBtVGV4dHVyZTsKKyAgICByZXR1cm4gbVRleFN0b3JhZ2UgPyBtVGV4
U3RvcmFnZS0+Z2V0QmFzZVRleHR1cmUoKSA6IE5VTEw7CiB9CiAKIC8vIENvbnN0cnVjdHMgYSBE
aXJlY3QzRCA5IHRleHR1cmUgcmVzb3VyY2UgZnJvbSB0aGUgdGV4dHVyZSBpbWFnZXMKIHZvaWQg
VGV4dHVyZTJEOjpjcmVhdGVUZXh0dXJlKCkKIHsKLSAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZp
Y2UgPSBnZXREZXZpY2UoKTsKKyAgICBHTHNpemVpIHdpZHRoID0gbUltYWdlQXJyYXlbMF0uZ2V0
V2lkdGgoKTsKKyAgICBHTHNpemVpIGhlaWdodCA9IG1JbWFnZUFycmF5WzBdLmdldEhlaWdodCgp
OworICAgIEdMaW50IGxldmVscyA9IGNyZWF0aW9uTGV2ZWxzKHdpZHRoLCBoZWlnaHQpOwogICAg
IEQzREZPUk1BVCBmb3JtYXQgPSBtSW1hZ2VBcnJheVswXS5nZXREM0RGb3JtYXQoKTsKLSAgICBH
TGludCBsZXZlbHMgPSBjcmVhdGlvbkxldmVscyhtSW1hZ2VBcnJheVswXS53aWR0aCwgbUltYWdl
QXJyYXlbMF0uaGVpZ2h0LCAwKTsKLQotICAgIElEaXJlY3QzRFRleHR1cmU5ICp0ZXh0dXJlID0g
TlVMTDsKLSAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZShtSW1hZ2VB
cnJheVswXS53aWR0aCwgbUltYWdlQXJyYXlbMF0uaGVpZ2h0LCBsZXZlbHMsIDAsIGZvcm1hdCwg
RDNEUE9PTF9ERUZBVUxULCAmdGV4dHVyZSwgTlVMTCk7CisgICAgY29uc3QgYm9vbCByZW5kZXJU
YXJnZXQgPSBJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKGZvcm1hdCkgJiYgKG1Vc2FnZSA9PSBH
TF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKTsKIAotICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRleFN0b3JhZ2UgPSBuZXcgVGV4dHVy
ZVN0b3JhZ2UyRChsZXZlbHMsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgcmVuZGVyVGFyZ2V0KTsK
KyAgICAKKyAgICBpZiAobVRleFN0b3JhZ2UtPmlzTWFuYWdlZCgpKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9P
VVRPRk1FTU9SWSk7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAg
ICB9CisgICAgICAgIGludCBsZXZlbHMgPSBsZXZlbENvdW50KCk7CiAKLSAgICBpZiAobVRleHR1
cmUpCi0gICAgewotICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBmb3IgKGlu
dCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQorICAgICAgICB7CisgICAgICAg
ICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSA9IG1UZXhTdG9yYWdlLT5nZXRTdXJmYWNl
TGV2ZWwobGV2ZWwpOworICAgICAgICAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLnNldE1hbmFnZWRT
dXJmYWNlKHN1cmZhY2UpOworICAgICAgICB9CiAgICAgfQogCi0gICAgbVRleHR1cmUgPSB0ZXh0
dXJlOwotICAgIG1EaXJ0eUltYWdlID0gdHJ1ZTsKLSAgICBtSXNSZW5kZXJhYmxlID0gZmFsc2U7
CisgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKIH0KIAogdm9pZCBUZXh0dXJlMkQ6OnVwZGF0ZVRl
eHR1cmUoKQogewotICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwot
CiAgICAgaW50IGxldmVscyA9IGxldmVsQ291bnQoKTsKIAogICAgIGZvciAoaW50IGxldmVsID0g
MDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCiAgICAgewotICAgICAgICBpZiAobUltYWdlQXJy
YXlbbGV2ZWxdLnN1cmZhY2UgJiYgbUltYWdlQXJyYXlbbGV2ZWxdLmRpcnR5KQotICAgICAgICB7
Ci0gICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbGV2ZWxTdXJmYWNlID0gTlVMTDsKLSAg
ICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVRleHR1cmUtPkdldFN1cmZhY2VMZXZlbChsZXZl
bCwgJmxldmVsU3VyZmFjZSk7Ci0KLSAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7Ci0KLSAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPlVwZGF0ZVN1cmZhY2UobUltYWdlQXJy
YXlbbGV2ZWxdLnN1cmZhY2UsIE5VTEwsIGxldmVsU3VyZmFjZSwgTlVMTCk7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLQotICAgICAgICAgICAgICAgIGxldmVs
U3VyZmFjZS0+UmVsZWFzZSgpOworICAgICAgICBJbWFnZSAqaW1hZ2UgPSAmbUltYWdlQXJyYXlb
bGV2ZWxdOwogCi0gICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLmRpcnR5ID0gZmFs
c2U7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChpbWFnZS0+aXNEaXJ0eSgpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb21taXRSZWN0KGxldmVsLCAwLCAwLCBtSW1hZ2VBcnJheVtsZXZl
bF0uZ2V0V2lkdGgoKSwgbUltYWdlQXJyYXlbbGV2ZWxdLmdldEhlaWdodCgpKTsKICAgICAgICAg
fQogICAgIH0KIH0KIAogdm9pZCBUZXh0dXJlMkQ6OmNvbnZlcnRUb1JlbmRlclRhcmdldCgpCiB7
Ci0gICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmUgPSBOVUxMOwotCi0gICAgaWYgKG1JbWFn
ZUFycmF5WzBdLndpZHRoICE9IDAgJiYgbUltYWdlQXJyYXlbMF0uaGVpZ2h0ICE9IDApCi0gICAg
ewotICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBnZXREaXNwbGF5KCk7Ci0gICAgICAg
IElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwotICAgICAgICBEM0RGT1JN
QVQgZm9ybWF0ID0gbUltYWdlQXJyYXlbMF0uZ2V0RDNERm9ybWF0KCk7Ci0gICAgICAgIEdMaW50
IGxldmVscyA9IGNyZWF0aW9uTGV2ZWxzKG1JbWFnZUFycmF5WzBdLndpZHRoLCBtSW1hZ2VBcnJh
eVswXS5oZWlnaHQsIDApOwotCi0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVUZXh0dXJlKG1JbWFnZUFycmF5WzBdLndpZHRoLCBtSW1hZ2VBcnJheVswXS5oZWlnaHQsIGxl
dmVscywgRDNEVVNBR0VfUkVOREVSVEFSR0VULCBmb3JtYXQsIEQzRFBPT0xfREVGQVVMVCwgJnRl
eHR1cmUsIE5VTEwpOwotCi0gICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBy
ZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVRleHR1cmUgIT0gTlVMTCkK
LSAgICAgICAgewotICAgICAgICAgICAgaW50IGxldmVscyA9IGxldmVsQ291bnQoKTsKLSAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZTsKLSAgICAgICAgICAgICAg
ICByZXN1bHQgPSBtVGV4dHVyZS0+R2V0U3VyZmFjZUxldmVsKGksICZzb3VyY2UpOwotCi0gICAg
ICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8
fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZS0+UmVsZWFzZSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqZGVzdDsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXh0dXJlLT5HZXRT
dXJmYWNlTGV2ZWwoaSwgJmRlc3QpOworICAgIFRleHR1cmVTdG9yYWdlMkQgKm5ld1RleFN0b3Jh
Z2UgPSBOVUxMOwogCi0gICAgICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJf
T1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZS0+UmVsZWFzZSgpOwotICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UtPlJlbGVhc2UoKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZGlzcGxh
eS0+ZW5kU2NlbmUoKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPlN0cmV0Y2hS
ZWN0KHNvdXJjZSwgTlVMTCwgZGVzdCwgTlVMTCwgRDNEVEVYRl9OT05FKTsKLQotICAgICAgICAg
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVz
dWx0ID09IEVfT1VUT0ZNRU1PUlkpOworICAgIGlmIChtSW1hZ2VBcnJheVswXS5nZXRXaWR0aCgp
ICE9IDAgJiYgbUltYWdlQXJyYXlbMF0uZ2V0SGVpZ2h0KCkgIT0gMCkKKyAgICB7CisgICAgICAg
IEdMc2l6ZWkgd2lkdGggPSBtSW1hZ2VBcnJheVswXS5nZXRXaWR0aCgpOworICAgICAgICBHTHNp
emVpIGhlaWdodCA9IG1JbWFnZUFycmF5WzBdLmdldEhlaWdodCgpOworICAgICAgICBHTGludCBs
ZXZlbHMgPSBjcmVhdGlvbkxldmVscyh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgRDNERk9STUFU
IGZvcm1hdCA9IG1JbWFnZUFycmF5WzBdLmdldEQzREZvcm1hdCgpOwogCi0gICAgICAgICAgICAg
ICAgICAgIHRleHR1cmUtPlJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlLT5S
ZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3QtPlJlbGVhc2UoKTsKKyAgICAgICAg
bmV3VGV4U3RvcmFnZSA9IG5ldyBUZXh0dXJlU3RvcmFnZTJEKGxldmVscywgZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCB0cnVlKTsKIAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgICAgIGlmIChtVGV4U3RvcmFnZSAhPSBOVUxMKQorICAgICAg
ICB7CisgICAgICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOworICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsZXZlbHM7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlID0gbVRleFN0b3JhZ2UtPmdldFN1cmZh
Y2VMZXZlbChpKTsKKyAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCA9IG5l
d1RleFN0b3JhZ2UtPmdldFN1cmZhY2VMZXZlbChpKTsKKworICAgICAgICAgICAgICAgIGlmICgh
Y29weVRvUmVuZGVyVGFyZ2V0KGRlc3QsIHNvdXJjZSwgbVRleFN0b3JhZ2UtPmlzTWFuYWdlZCgp
KSkKKyAgICAgICAgICAgICAgICB7ICAgCisgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5ld1Rl
eFN0b3JhZ2U7CisgICAgICAgICAgICAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAg
ICAgICAgICAgICAgZGVzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICBzb3VyY2UtPlJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBkZXN0LT5SZWxlYXNlKCk7
CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSkgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAg
ICAgICAgICAgaWYgKGRlc3QpIGRlc3QtPlJlbGVhc2UoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChtVGV4dHVyZSAhPSBOVUxMKQotICAgIHsKLSAgICAgICAg
bVRleHR1cmUtPlJlbGVhc2UoKTsKLSAgICB9CisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAg
IG1UZXhTdG9yYWdlID0gbmV3VGV4U3RvcmFnZTsKIAotICAgIG1UZXh0dXJlID0gdGV4dHVyZTsK
LSAgICBtRGlydHlJbWFnZSA9IHRydWU7Ci0gICAgbUlzUmVuZGVyYWJsZSA9IHRydWU7CisgICAg
bURpcnR5SW1hZ2VzID0gdHJ1ZTsKIH0KIAogdm9pZCBUZXh0dXJlMkQ6OmdlbmVyYXRlTWlwbWFw
cygpCiB7CiAgICAgaWYgKCFnZXRDb250ZXh0KCktPnN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZSgp
KQogICAgIHsKLSAgICAgICAgaWYgKCFpc1BvdzIobUltYWdlQXJyYXlbMF0ud2lkdGgpIHx8ICFp
c1BvdzIobUltYWdlQXJyYXlbMF0uaGVpZ2h0KSkKKyAgICAgICAgaWYgKCFpc1BvdzIobUltYWdl
QXJyYXlbMF0uZ2V0V2lkdGgoKSkgfHwgIWlzUG93MihtSW1hZ2VBcnJheVswXS5nZXRIZWlnaHQo
KSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBQdXJnZSBhcnJheSBsZXZlbHMgMSB0
aHJvdWdoIHEgYW5kIHJlc2V0IHRoZW0gdG8gcmVwcmVzZW50IHRoZSBnZW5lcmF0ZWQgbWlwbWFw
IGxldmVscy4KLSAgICB1bnNpZ25lZCBpbnQgcSA9IGxvZzIoc3RkOjptYXgobUltYWdlQXJyYXlb
MF0ud2lkdGgsIG1JbWFnZUFycmF5WzBdLmhlaWdodCkpOworICAgIHVuc2lnbmVkIGludCBxID0g
bG9nMihzdGQ6Om1heChtSW1hZ2VBcnJheVswXS5nZXRXaWR0aCgpLCBtSW1hZ2VBcnJheVswXS5n
ZXRIZWlnaHQoKSkpOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDw9IHE7IGkrKykK
ICAgICB7Ci0gICAgICAgIGlmIChtSW1hZ2VBcnJheVtpXS5zdXJmYWNlICE9IE5VTEwpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldLnN1cmZhY2UtPlJlbGVhc2UoKTsKLSAg
ICAgICAgICAgIG1JbWFnZUFycmF5W2ldLnN1cmZhY2UgPSBOVUxMOwotICAgICAgICB9Ci0KLSAg
ICAgICAgbUltYWdlQXJyYXlbaV0ud2lkdGggPSBzdGQ6Om1heChtSW1hZ2VBcnJheVswXS53aWR0
aCA+PiBpLCAxKTsKLSAgICAgICAgbUltYWdlQXJyYXlbaV0uaGVpZ2h0ID0gc3RkOjptYXgobUlt
YWdlQXJyYXlbMF0uaGVpZ2h0ID4+IGksIDEpOwotICAgICAgICBtSW1hZ2VBcnJheVtpXS5mb3Jt
YXQgPSBtSW1hZ2VBcnJheVswXS5mb3JtYXQ7Ci0gICAgICAgIG1JbWFnZUFycmF5W2ldLnR5cGUg
PSBtSW1hZ2VBcnJheVswXS50eXBlOworICAgICAgICByZWRlZmluZUltYWdlKGksIG1JbWFnZUFy
cmF5WzBdLmdldEZvcm1hdCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heCht
SW1hZ2VBcnJheVswXS5nZXRXaWR0aCgpID4+IGksIDEpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWF4KG1JbWFnZUFycmF5WzBdLmdldEhlaWdodCgpID4+IGksIDEpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5WzBdLmdldFR5cGUoKSk7CiAgICAgfQogCi0g
ICAgaWYgKG1Jc1JlbmRlcmFibGUpCisgICAgaWYgKG1UZXhTdG9yYWdlICYmIG1UZXhTdG9yYWdl
LT5pc1JlbmRlclRhcmdldCgpKQogICAgIHsKLSAgICAgICAgaWYgKG1UZXh0dXJlID09IE5VTEwp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiIGZhaWxlZCBiZWNhdXNlIG1UZXh0dXJlIHdh
cyBudWxsLiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqdXBwZXIgPSBOVUxMOwotICAgICAgICAgICAgSURpcmVjdDNE
U3VyZmFjZTkgKmxvd2VyID0gTlVMTDsKLQotICAgICAgICAgICAgbVRleHR1cmUtPkdldFN1cmZh
Y2VMZXZlbChpLTEsICZ1cHBlcik7Ci0gICAgICAgICAgICBtVGV4dHVyZS0+R2V0U3VyZmFjZUxl
dmVsKGksICZsb3dlcik7CisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqdXBwZXIgPSBt
VGV4U3RvcmFnZS0+Z2V0U3VyZmFjZUxldmVsKGkgLSAxKTsKKyAgICAgICAgICAgIElEaXJlY3Qz
RFN1cmZhY2U5ICpsb3dlciA9IG1UZXhTdG9yYWdlLT5nZXRTdXJmYWNlTGV2ZWwoaSk7CiAKICAg
ICAgICAgICAgIGlmICh1cHBlciAhPSBOVUxMICYmIGxvd2VyICE9IE5VTEwpCiAgICAgICAgICAg
ICB7CkBAIC0xODM5LDI2ICsyMjY1LDI0IEBAIHZvaWQgVGV4dHVyZTJEOjpnZW5lcmF0ZU1pcG1h
cHMoKQogICAgICAgICAgICAgaWYgKHVwcGVyICE9IE5VTEwpIHVwcGVyLT5SZWxlYXNlKCk7CiAg
ICAgICAgICAgICBpZiAobG93ZXIgIT0gTlVMTCkgbG93ZXItPlJlbGVhc2UoKTsKIAotICAgICAg
ICAgICAgbUltYWdlQXJyYXlbaV0uZGlydHkgPSBmYWxzZTsKKyAgICAgICAgICAgIG1JbWFnZUFy
cmF5W2ldLm1hcmtDbGVhbigpOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDw9IHE7IGkrKykKICAgICAgICAgewot
ICAgICAgICAgICAgY3JlYXRlU3VyZmFjZSgmbUltYWdlQXJyYXlbaV0pOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAobUltYWdlQXJyYXlbaV0uc3VyZmFjZSA9PSBOVUxMKQorICAgICAg
ICAgICAgaWYgKG1JbWFnZUFycmF5W2ldLmdldFN1cmZhY2UoKSA9PSBOVUxMKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKEZBSUxFRChEM0RYTG9hZFN1cmZhY2VGcm9t
U3VyZmFjZShtSW1hZ2VBcnJheVtpXS5zdXJmYWNlLCBOVUxMLCBOVUxMLCBtSW1hZ2VBcnJheVtp
IC0gMV0uc3VyZmFjZSwgTlVMTCwgTlVMTCwgRDNEWF9GSUxURVJfQk9YLCAwKSkpCisgICAgICAg
ICAgICBpZiAoRkFJTEVEKEQzRFhMb2FkU3VyZmFjZUZyb21TdXJmYWNlKG1JbWFnZUFycmF5W2ld
LmdldFN1cmZhY2UoKSwgTlVMTCwgTlVMTCwgbUltYWdlQXJyYXlbaSAtIDFdLmdldFN1cmZhY2Uo
KSwgTlVMTCwgTlVMTCwgRDNEWF9GSUxURVJfQk9YLCAwKSkpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgRVJSKCIgZmFpbGVkIHRvIGxvYWQgZmlsdGVyICVkIHRvICVkLiIsIGkgLSAx
LCBpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0uZGlydHkg
PSB0cnVlOworICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0ubWFya0RpcnR5KCk7CiAgICAgICAg
IH0KICAgICB9CiB9CkBAIC0xODcyLDcgKzIyOTYsNyBAQCBSZW5kZXJidWZmZXIgKlRleHR1cmUy
RDo6Z2V0UmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQpCiAKICAgICBpZiAobUNvbG9yYnVmZmVy
UHJveHkuZ2V0KCkgPT0gTlVMTCkKICAgICB7Ci0gICAgICAgIG1Db2xvcmJ1ZmZlclByb3h5LnNl
dChuZXcgUmVuZGVyYnVmZmVyKGlkKCksIG5ldyBDb2xvcmJ1ZmZlcih0aGlzLCB0YXJnZXQpKSk7
CisgICAgICAgIG1Db2xvcmJ1ZmZlclByb3h5LnNldChuZXcgUmVuZGVyYnVmZmVyKGlkKCksIG5l
dyBSZW5kZXJidWZmZXJUZXh0dXJlKHRoaXMsIHRhcmdldCkpKTsKICAgICB9CiAKICAgICByZXR1
cm4gbUNvbG9yYnVmZmVyUHJveHkuZ2V0KCk7CkBAIC0xODgyLDQxICsyMzA2LDk0IEBAIElEaXJl
Y3QzRFN1cmZhY2U5ICpUZXh0dXJlMkQ6OmdldFJlbmRlclRhcmdldChHTGVudW0gdGFyZ2V0KQog
ewogICAgIEFTU0VSVCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCk7CiAKLSAgICBpZiAoIW1Jc1Jl
bmRlcmFibGUpCi0gICAgewotICAgICAgICBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKLSAgICB9
Ci0KLSAgICBpZiAobVRleHR1cmUgPT0gTlVMTCkKKyAgICAvLyBlbnN1cmUgdGhlIHVuZGVybHlp
bmcgdGV4dHVyZSBpcyBjcmVhdGVkCisgICAgaWYgKGdldFN0b3JhZ2UodHJ1ZSkgPT0gTlVMTCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIHVwZGF0ZVRleHR1cmUo
KTsKICAgICAKLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqcmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAg
ICBtVGV4dHVyZS0+R2V0U3VyZmFjZUxldmVsKDAsICZyZW5kZXJUYXJnZXQpOworICAgIHJldHVy
biBtVGV4U3RvcmFnZS0+Z2V0U3VyZmFjZUxldmVsKDApOworfQorCitUZXh0dXJlU3RvcmFnZSAq
VGV4dHVyZTJEOjpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KQoreworICAgIGlmICghbVRl
eFN0b3JhZ2UgfHwgKHJlbmRlclRhcmdldCAmJiAhbVRleFN0b3JhZ2UtPmlzUmVuZGVyVGFyZ2V0
KCkpKQorICAgIHsKKyAgICAgICAgaWYgKHJlbmRlclRhcmdldCkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIH0KKyAgICB9
CiAKLSAgICByZXR1cm4gcmVuZGVyVGFyZ2V0OworICAgIHJldHVybiBtVGV4U3RvcmFnZTsKIH0K
IAotVGV4dHVyZUN1YmVNYXA6OlRleHR1cmVDdWJlTWFwKEdMdWludCBpZCkgOiBUZXh0dXJlKGlk
KQorVGV4dHVyZVN0b3JhZ2VDdWJlTWFwOjpUZXh0dXJlU3RvcmFnZUN1YmVNYXAoaW50IGxldmVs
cywgRDNERk9STUFUIGZvcm1hdCwgaW50IHNpemUsIGJvb2wgcmVuZGVyVGFyZ2V0KQorICAgIDog
VGV4dHVyZVN0b3JhZ2UocmVuZGVyVGFyZ2V0KSwgbUZpcnN0UmVuZGVyVGFyZ2V0U2VyaWFsKFJl
bmRlcmJ1ZmZlclN0b3JhZ2U6Omlzc3VlQ3ViZVNlcmlhbHMoKSkKIHsKKyAgICBJRGlyZWN0M0RE
ZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKKwogICAgIG1UZXh0dXJlID0gTlVMTDsKKyAg
ICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQ3ViZVRleHR1cmUoc2l6ZSwgbGV2ZWxz
LCBpc1JlbmRlclRhcmdldCgpID8gRDNEVVNBR0VfUkVOREVSVEFSR0VUIDogMCwgZm9ybWF0LCBn
ZXRQb29sKCksICZtVGV4dHVyZSwgTlVMTCk7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgeworICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8
IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQogfQogCi1UZXh0dXJlQ3ViZU1hcDo6flRleHR1cmVDdWJlTWFwKCkKK1RleHR1
cmVTdG9yYWdlQ3ViZU1hcDo6flRleHR1cmVTdG9yYWdlQ3ViZU1hcCgpCiB7Ci0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgaWYgKG1UZXh0dXJlKQogICAgIHsKLSAgICAgICAg
bUZhY2VQcm94aWVzW2ldLnNldChOVUxMKTsKKyAgICAgICAgbVRleHR1cmUtPlJlbGVhc2UoKTsK
ICAgICB9Cit9CisKK0lEaXJlY3QzRFN1cmZhY2U5ICpUZXh0dXJlU3RvcmFnZUN1YmVNYXA6Omdl
dEN1YmVNYXBTdXJmYWNlKEdMZW51bSBmYWNlVGFyZ2V0LCBpbnQgbGV2ZWwpCit7CisgICAgSURp
cmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBOVUxMOwogCiAgICAgaWYgKG1UZXh0dXJlKQogICAg
IHsKLSAgICAgICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKLSAgICAgICAgbVRleHR1cmUgPSBOVUxM
OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1UZXh0dXJlLT5HZXRDdWJlTWFwU3VyZmFjZShl
czJkeDo6Q29udmVydEN1YmVGYWNlKGZhY2VUYXJnZXQpLCBsZXZlbCwgJnN1cmZhY2UpOworICAg
ICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIH0KKworICAgIHJldHVybiBzdXJm
YWNlOworfQorCitJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmVTdG9yYWdlQ3ViZU1hcDo6
Z2V0QmFzZVRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTsKK30KKwordW5z
aWduZWQgaW50IFRleHR1cmVTdG9yYWdlQ3ViZU1hcDo6Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdM
ZW51bSB0YXJnZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GaXJzdFJlbmRlclRhcmdldFNlcmlh
bCArIFRleHR1cmVDdWJlTWFwOjpmYWNlSW5kZXgodGFyZ2V0KTsKK30KKworVGV4dHVyZUN1YmVN
YXA6OlRleHR1cmVDdWJlTWFwKEdMdWludCBpZCkgOiBUZXh0dXJlKGlkKQoreworICAgIG1UZXhT
dG9yYWdlID0gTlVMTDsKK30KKworVGV4dHVyZUN1YmVNYXA6On5UZXh0dXJlQ3ViZU1hcCgpCit7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgeworICAgICAgICBtRmFjZVBy
b3hpZXNbaV0uc2V0KE5VTEwpOwogICAgIH0KKworICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKKyAg
ICBtVGV4U3RvcmFnZSA9IE5VTEw7CiB9CiAKIEdMZW51bSBUZXh0dXJlQ3ViZU1hcDo6Z2V0VGFy
Z2V0KCkgY29uc3QKQEAgLTE5MjQsMjQgKzI0MDEsMzAgQEAgR0xlbnVtIFRleHR1cmVDdWJlTWFw
OjpnZXRUYXJnZXQoKSBjb25zdAogICAgIHJldHVybiBHTF9URVhUVVJFX0NVQkVfTUFQOwogfQog
Ci1HTHNpemVpIFRleHR1cmVDdWJlTWFwOjpnZXRXaWR0aCgpIGNvbnN0CitHTHNpemVpIFRleHR1
cmVDdWJlTWFwOjpnZXRXaWR0aChHTGludCBsZXZlbCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUlt
YWdlQXJyYXlbMF1bMF0ud2lkdGg7CisgICAgaWYgKGxldmVsIDwgSU1QTEVNRU5UQVRJT05fTUFY
X1RFWFRVUkVfTEVWRUxTKQorICAgICAgICByZXR1cm4gbUltYWdlQXJyYXlbMF1bbGV2ZWxdLmdl
dFdpZHRoKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKIH0KIAotR0xzaXplaSBUZXh0
dXJlQ3ViZU1hcDo6Z2V0SGVpZ2h0KCkgY29uc3QKK0dMc2l6ZWkgVGV4dHVyZUN1YmVNYXA6Omdl
dEhlaWdodChHTGludCBsZXZlbCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUltYWdlQXJyYXlbMF1b
MF0uaGVpZ2h0OworICAgIGlmIChsZXZlbCA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xF
VkVMUykKKyAgICAgICAgcmV0dXJuIG1JbWFnZUFycmF5WzBdW2xldmVsXS5nZXRIZWlnaHQoKTsK
KyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOwogfQogCiBHTGVudW0gVGV4dHVyZUN1YmVNYXA6
OmdldEludGVybmFsRm9ybWF0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUltYWdlQXJyYXlbMF1b
MF0uZm9ybWF0OworICAgIHJldHVybiBtSW1hZ2VBcnJheVswXVswXS5nZXRGb3JtYXQoKTsKIH0K
IAogR0xlbnVtIFRleHR1cmVDdWJlTWFwOjpnZXRUeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bUltYWdlQXJyYXlbMF1bMF0udHlwZTsKKyAgICByZXR1cm4gbUltYWdlQXJyYXlbMF1bMF0uZ2V0
VHlwZSgpOwogfQogCiBEM0RGT1JNQVQgVGV4dHVyZUN1YmVNYXA6OmdldEQzREZvcm1hdCgpIGNv
bnN0CkBAIC0xOTgxLDM3ICsyNDY0LDI3IEBAIHZvaWQgVGV4dHVyZUN1YmVNYXA6OnNldEltYWdl
TmVnWihHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMCiAKIHZv
aWQgVGV4dHVyZUN1YmVNYXA6OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0gZmFjZSwgR0xpbnQg
bGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNp
emVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewotICAgIHJlZGVmaW5lVGV4dHVy
ZShmYWNlSW5kZXgoZmFjZSksIGxldmVsLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIEdMX1VOU0lH
TkVEX0JZVEUpOworICAgIHJlZGVmaW5lSW1hZ2UoZmFjZUluZGV4KGZhY2UpLCBsZXZlbCwgZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBHTF9VTlNJR05FRF9CWVRFKTsKIAogICAgIFRleHR1cmU6OnNl
dENvbXByZXNzZWRJbWFnZShpbWFnZVNpemUsIHBpeGVscywgJm1JbWFnZUFycmF5W2ZhY2VJbmRl
eChmYWNlKV1bbGV2ZWxdKTsKIH0KIAotdm9pZCBUZXh0dXJlQ3ViZU1hcDo6Y29tbWl0UmVjdChH
TGVudW0gZmFjZVRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQordm9pZCBUZXh0dXJlQ3ViZU1hcDo6
Y29tbWl0UmVjdChpbnQgZmFjZSwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogewotICAgIGludCBmYWNlID0g
ZmFjZUluZGV4KGZhY2VUYXJnZXQpOwotICAgIEFTU0VSVChtSW1hZ2VBcnJheVtmYWNlXVtsZXZl
bF0uc3VyZmFjZSAhPSBOVUxMKTsKKyAgICBBU1NFUlQobUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxd
LmdldFN1cmZhY2UoKSAhPSBOVUxMKTsKIAogICAgIGlmIChsZXZlbCA8IGxldmVsQ291bnQoKSkK
ICAgICB7Ci0gICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0TGV2ZWwgPSBnZXRDdWJlTWFw
U3VyZmFjZShmYWNlVGFyZ2V0LCBsZXZlbCk7CisgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpk
ZXN0TGV2ZWwgPSBtVGV4U3RvcmFnZS0+Z2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9YICsgZmFjZSwgbGV2ZWwpOwogICAgICAgICBBU1NFUlQoZGVzdExldmVs
ICE9IE5VTEwpOwogCiAgICAgICAgIGlmIChkZXN0TGV2ZWwgIT0gTlVMTCkKICAgICAgICAgewog
ICAgICAgICAgICAgSW1hZ2UgKmltYWdlID0gJm1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXTsKLQot
ICAgICAgICAgICAgUkVDVCBzb3VyY2VSZWN0ID0gdHJhbnNmb3JtUGl4ZWxSZWN0KHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGltYWdlLT5oZWlnaHQpOzsKLQotICAgICAgICAgICAg
UE9JTlQgZGVzdFBvaW50OwotICAgICAgICAgICAgZGVzdFBvaW50LnggPSBzb3VyY2VSZWN0Lmxl
ZnQ7Ci0gICAgICAgICAgICBkZXN0UG9pbnQueSA9IHNvdXJjZVJlY3QudG9wOwotCi0gICAgICAg
ICAgICBIUkVTVUxUIHJlc3VsdCA9IGdldERldmljZSgpLT5VcGRhdGVTdXJmYWNlKGltYWdlLT5z
dXJmYWNlLCAmc291cmNlUmVjdCwgZGVzdExldmVsLCAmZGVzdFBvaW50KTsKLSAgICAgICAgICAg
IEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgICAgICBpbWFnZS0+dXBkYXRlU3Vy
ZmFjZShkZXN0TGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOwogCiAgICAg
ICAgICAgICBkZXN0TGV2ZWwtPlJlbGVhc2UoKTsKLQotICAgICAgICAgICAgaW1hZ2UtPmRpcnR5
ID0gZmFsc2U7CisgICAgICAgICAgICBpbWFnZS0+bWFya0NsZWFuKCk7CiAgICAgICAgIH0KICAg
ICB9CiB9CkBAIC0yMDIwLDcgKzI0OTMsNyBAQCB2b2lkIFRleHR1cmVDdWJlTWFwOjpzdWJJbWFn
ZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeQogewog
ICAgIGlmIChUZXh0dXJlOjpzdWJJbWFnZSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCAmbUltYWdlQXJyYXlbZmFj
ZUluZGV4KHRhcmdldCldW2xldmVsXSkpCiAgICAgewotICAgICAgICBjb21taXRSZWN0KHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBjb21t
aXRSZWN0KGZhY2VJbmRleCh0YXJnZXQpLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCk7CiAgICAgfQogfQogCkBAIC0yMDI4LDE5ICsyNTAxLDE0IEBAIHZvaWQgVGV4dHVy
ZUN1YmVNYXA6OnN1YkltYWdlQ29tcHJlc3NlZChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xpbnQgeG9mZnNlCiB7CiAgICAgaWYgKFRleHR1cmU6OnN1YkltYWdlQ29tcHJlc3NlZCh4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgcGl4ZWxzLCAm
bUltYWdlQXJyYXlbZmFjZUluZGV4KHRhcmdldCldW2xldmVsXSkpCiAgICAgewotICAgICAgICBj
b21taXRSZWN0KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQp
OworICAgICAgICBjb21taXRSZWN0KGZhY2VJbmRleCh0YXJnZXQpLCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCk7CiAgICAgfQogfQogCi0vLyBUZXN0cyBmb3IgR0wgdGV4
dHVyZSBvYmplY3QgY29tcGxldGVuZXNzLiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjcu
MTAgcGFnZSA4MS4KLWJvb2wgVGV4dHVyZUN1YmVNYXA6OmlzQ29tcGxldGUoKSBjb25zdAorLy8g
VGVzdHMgZm9yIGN1YmUgbWFwIHNhbXBsaW5nIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAu
MjRdIHNlY3Rpb24gMy44LjIgcGFnZSA4Ni4KK2Jvb2wgVGV4dHVyZUN1YmVNYXA6OmlzU2FtcGxl
ckNvbXBsZXRlKCkgY29uc3QKIHsKLSAgICBpbnQgc2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBdLndp
ZHRoOwotCi0gICAgaWYgKHNpemUgPD0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CisgICAgaW50IHNpemUgPSBtSW1hZ2VBcnJheVswXVswXS5nZXRXaWR0aCgpOwogCiAg
ICAgYm9vbCBtaXBtYXBwaW5nOwogCkBAIC0yMDU5LDY1ICsyNTI3LDk2IEBAIGJvb2wgVGV4dHVy
ZUN1YmVNYXA6OmlzQ29tcGxldGUoKSBjb25zdAogICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUo
KTsKICAgICB9CiAKLSAgICBmb3IgKGludCBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykKKyAg
ICBpZiAoKGdldEludGVybmFsRm9ybWF0KCkgPT0gR0xfRkxPQVQgJiYgIWdldENvbnRleHQoKS0+
c3VwcG9ydHNGbG9hdDMyTGluZWFyRmlsdGVyKCkpIHx8CisgICAgICAgIChnZXRJbnRlcm5hbEZv
cm1hdCgpID09IEdMX0hBTEZfRkxPQVRfT0VTICYmICFnZXRDb250ZXh0KCktPnN1cHBvcnRzRmxv
YXQxNkxpbmVhckZpbHRlcigpKSkKICAgICB7Ci0gICAgICAgIGlmIChtSW1hZ2VBcnJheVtmYWNl
XVswXS53aWR0aCAhPSBzaXplIHx8IG1JbWFnZUFycmF5W2ZhY2VdWzBdLmhlaWdodCAhPSBzaXpl
KQorICAgICAgICBpZiAobU1hZ0ZpbHRlciAhPSBHTF9ORUFSRVNUIHx8IChtTWluRmlsdGVyICE9
IEdMX05FQVJFU1QgJiYgbU1pbkZpbHRlciAhPSBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUKSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKChnZXRJbnRlcm5hbEZvcm1hdCgpID09IEdMX0ZMT0FUICYmICFnZXRDb250ZXh0
KCktPnN1cHBvcnRzRmxvYXRMaW5lYXJGaWx0ZXIoKSkgfHwKLSAgICAgICAgKGdldEludGVybmFs
Rm9ybWF0KCkgPT0gR0xfSEFMRl9GTE9BVF9PRVMgJiYgIWdldENvbnRleHQoKS0+c3VwcG9ydHNI
YWxmRmxvYXRMaW5lYXJGaWx0ZXIoKSkpCisgICAgaWYgKCFpc1BvdzIoc2l6ZSkgJiYgIWdldENv
bnRleHQoKS0+c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkpCiAgICAgewotICAgICAgICBpZiAo
bU1hZ0ZpbHRlciAhPSBHTF9ORUFSRVNUIHx8IChtTWluRmlsdGVyICE9IEdMX05FQVJFU1QgJiYg
bU1pbkZpbHRlciAhPSBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUKSkKKyAgICAgICAgaWYgKGdl
dFdyYXBTKCkgIT0gR0xfQ0xBTVBfVE9fRURHRSB8fCBnZXRXcmFwVCgpICE9IEdMX0NMQU1QX1RP
X0VER0UgfHwgbWlwbWFwcGluZykKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBucG90ID0gZ2V0Q29udGV4dCgpLT5zdXBw
b3J0c05vblBvd2VyMlRleHR1cmUoKTsKLQotICAgIGlmICghbnBvdCkKKyAgICBpZiAoIW1pcG1h
cHBpbmcpCiAgICAgewotICAgICAgICBpZiAoKGdldFdyYXBTKCkgIT0gR0xfQ0xBTVBfVE9fRURH
RSB8fCBnZXRXcmFwVCgpICE9IEdMX0NMQU1QX1RPX0VER0UpICYmICFpc1BvdzIoc2l6ZSkpCisg
ICAgICAgIGlmICghaXNDdWJlQ29tcGxldGUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlm
ICghaXNNaXBtYXBDdWJlQ29tcGxldGUoKSkgICAvLyBBbHNvIHRlc3RzIGZvciBpc0N1YmVDb21w
bGV0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChtaXBtYXBwaW5nKQorICAgIHJldHVybiB0cnVlOworfQorCisvLyBU
ZXN0cyBmb3IgY3ViZSB0ZXh0dXJlIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAuMjRdIHNl
Y3Rpb24gMy43LjEwIHBhZ2UgODEuCitib29sIFRleHR1cmVDdWJlTWFwOjppc0N1YmVDb21wbGV0
ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1JbWFnZUFycmF5WzBdWzBdLmdldFdpZHRoKCkgPD0gMCB8
fCBtSW1hZ2VBcnJheVswXVswXS5nZXRIZWlnaHQoKSAhPSBtSW1hZ2VBcnJheVswXVswXS5nZXRX
aWR0aCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZvciAo
dW5zaWduZWQgaW50IGZhY2UgPSAxOyBmYWNlIDwgNjsgZmFjZSsrKQogICAgIHsKLSAgICAgICAg
aWYgKCFucG90KQorICAgICAgICBpZiAobUltYWdlQXJyYXlbZmFjZV1bMF0uZ2V0V2lkdGgoKSAh
PSBtSW1hZ2VBcnJheVswXVswXS5nZXRXaWR0aCgpIHx8CisgICAgICAgICAgICBtSW1hZ2VBcnJh
eVtmYWNlXVswXS5nZXRXaWR0aCgpICE9IG1JbWFnZUFycmF5WzBdWzBdLmdldEhlaWdodCgpIHx8
CisgICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVswXS5nZXRGb3JtYXQoKSAhPSBtSW1hZ2VB
cnJheVswXVswXS5nZXRGb3JtYXQoKSB8fAorICAgICAgICAgICAgbUltYWdlQXJyYXlbZmFjZV1b
MF0uZ2V0VHlwZSgpICE9IG1JbWFnZUFycmF5WzBdWzBdLmdldFR5cGUoKSkKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKCFpc1BvdzIoc2l6ZSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CisgICAgfQogCi0gICAgICAgIGludCBxID0gbG9nMihzaXplKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KIAotICAgICAgICBmb3IgKGludCBmYWNlID0gMDsgZmFjZSA8IDY7
IGZhY2UrKykKK2Jvb2wgVGV4dHVyZUN1YmVNYXA6OmlzTWlwbWFwQ3ViZUNvbXBsZXRlKCkgY29u
c3QKK3sKKyAgICBpZiAoaXNJbW11dGFibGUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGlmICghaXNDdWJlQ29tcGxldGUoKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBHTHNpemVpIHNpemUgPSBtSW1hZ2VBcnJheVswXVsw
XS5nZXRXaWR0aCgpOworCisgICAgaW50IHEgPSBsb2cyKHNpemUpOworCisgICAgZm9yIChpbnQg
ZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCisgICAgeworICAgICAgICBmb3IgKGludCBsZXZl
bCA9IDE7IGxldmVsIDw9IHE7IGxldmVsKyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZvciAo
aW50IGxldmVsID0gMTsgbGV2ZWwgPD0gcTsgbGV2ZWwrKykKKyAgICAgICAgICAgIGlmIChtSW1h
Z2VBcnJheVtmYWNlXVtsZXZlbF0uZ2V0Rm9ybWF0KCkgIT0gbUltYWdlQXJyYXlbMF1bMF0uZ2V0
Rm9ybWF0KCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG1JbWFnZUFycmF5
W2ZhY2VdW2xldmVsXS5mb3JtYXQgIT0gbUltYWdlQXJyYXlbMF1bMF0uZm9ybWF0KQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0u
dHlwZSAhPSBtSW1hZ2VBcnJheVswXVswXS50eXBlKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBp
ZiAobUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLndpZHRoICE9IHN0ZDo6bWF4KDEsIHNpemUgPj4g
bGV2ZWwpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJheVtmYWNl
XVtsZXZlbF0uZ2V0VHlwZSgpICE9IG1JbWFnZUFycmF5WzBdWzBdLmdldFR5cGUoKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICBBU1NFUlQobUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLmhlaWdodCA9
PSBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0ud2lkdGgpOworICAgICAgICAgICAgaWYgKG1JbWFn
ZUFycmF5W2ZhY2VdW2xldmVsXS5nZXRXaWR0aCgpICE9IHN0ZDo6bWF4KDEsIHNpemUgPj4gbGV2
ZWwpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTIxMzIsMzkgKzI2MzEsMzkgQEAgYm9vbCBU
ZXh0dXJlQ3ViZU1hcDo6aXNDb21wcmVzc2VkKCkgY29uc3QKIAogSURpcmVjdDNEQmFzZVRleHR1
cmU5ICpUZXh0dXJlQ3ViZU1hcDo6Z2V0QmFzZVRleHR1cmUoKSBjb25zdAogewotICAgIHJldHVy
biBtVGV4dHVyZTsKKyAgICByZXR1cm4gbVRleFN0b3JhZ2UgPyBtVGV4U3RvcmFnZS0+Z2V0QmFz
ZVRleHR1cmUoKSA6IE5VTEw7CiB9CiAKIC8vIENvbnN0cnVjdHMgYSBEaXJlY3QzRCA5IHRleHR1
cmUgcmVzb3VyY2UgZnJvbSB0aGUgdGV4dHVyZSBpbWFnZXMsIG9yIHJldHVybnMgYW4gZXhpc3Rp
bmcgb25lCiB2b2lkIFRleHR1cmVDdWJlTWFwOjpjcmVhdGVUZXh0dXJlKCkKIHsKLSAgICBJRGly
ZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKKyAgICBHTHNpemVpIHNpemUgPSBt
SW1hZ2VBcnJheVswXVswXS5nZXRXaWR0aCgpOworICAgIEdMaW50IGxldmVscyA9IGNyZWF0aW9u
TGV2ZWxzKHNpemUsIDApOwogICAgIEQzREZPUk1BVCBmb3JtYXQgPSBtSW1hZ2VBcnJheVswXVsw
XS5nZXREM0RGb3JtYXQoKTsKLSAgICBHTGludCBsZXZlbHMgPSBjcmVhdGlvbkxldmVscyhtSW1h
Z2VBcnJheVswXVswXS53aWR0aCwgMCk7CisgICAgY29uc3QgYm9vbCByZW5kZXJUYXJnZXQgPSBJ
c1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKGZvcm1hdCkgJiYgKG1Vc2FnZSA9PSBHTF9GUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX0FOR0xFKTsKIAotICAgIElEaXJlY3QzREN1YmVUZXh0dXJlOSAqdGV4
dHVyZSA9IE5VTEw7Ci0gICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUN1YmVUZXh0
dXJlKG1JbWFnZUFycmF5WzBdWzBdLndpZHRoLCBsZXZlbHMsIDAsIGZvcm1hdCwgRDNEUE9PTF9E
RUZBVUxULCAmdGV4dHVyZSwgTlVMTCk7CisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1U
ZXhTdG9yYWdlID0gbmV3IFRleHR1cmVTdG9yYWdlQ3ViZU1hcChsZXZlbHMsIGZvcm1hdCwgc2l6
ZSwgcmVuZGVyVGFyZ2V0KTsKIAotICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICBpZiAobVRl
eFN0b3JhZ2UtPmlzTWFuYWdlZCgpKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBE
M0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0gICAg
ICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9CisgICAgICAgIGludCBs
ZXZlbHMgPSBsZXZlbENvdW50KCk7CiAKLSAgICBpZiAobVRleHR1cmUpCi0gICAgewotICAgICAg
ICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBmb3IgKGludCBmYWNlID0gMDsgZmFjZSA8
IDY7IGZhY2UrKykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBs
ZXZlbCA8IGxldmVsczsgbGV2ZWwrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJ
RGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSA9IG1UZXhTdG9yYWdlLT5nZXRDdWJlTWFwU3VyZmFj
ZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmYWNlLCBsZXZlbCk7CisgICAgICAg
ICAgICAgICAgbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLnNldE1hbmFnZWRTdXJmYWNlKHN1cmZh
Y2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCi0gICAgbVRleHR1cmUgPSB0
ZXh0dXJlOwotICAgIG1EaXJ0eUltYWdlID0gdHJ1ZTsKLSAgICBtSXNSZW5kZXJhYmxlID0gZmFs
c2U7CisgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKIH0KIAogdm9pZCBUZXh0dXJlQ3ViZU1hcDo6
dXBkYXRlVGV4dHVyZSgpCiB7Ci0gICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2
aWNlKCk7Ci0KICAgICBmb3IgKGludCBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykKICAgICB7
CiAgICAgICAgIGludCBsZXZlbHMgPSBsZXZlbENvdW50KCk7CkBAIC0yMTcyLDIwICsyNjcxLDkg
QEAgdm9pZCBUZXh0dXJlQ3ViZU1hcDo6dXBkYXRlVGV4dHVyZSgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEltYWdlICppbWFnZSA9ICZtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF07CiAKLSAgICAg
ICAgICAgIGlmIChpbWFnZS0+c3VyZmFjZSAmJiBpbWFnZS0+ZGlydHkpCisgICAgICAgICAgICBp
ZiAoaW1hZ2UtPmlzRGlydHkoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJRGly
ZWN0M0RTdXJmYWNlOSAqbGV2ZWxTdXJmYWNlID0gZ2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9YICsgZmFjZSwgbGV2ZWwpOwotICAgICAgICAgICAgICAgIEFT
U0VSVChsZXZlbFN1cmZhY2UgIT0gTlVMTCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAobGV2ZWxT
dXJmYWNlICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IGRldmljZS0+VXBkYXRlU3VyZmFjZShpbWFnZS0+c3VyZmFjZSwgTlVM
TCwgbGV2ZWxTdXJmYWNlLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKLQotICAgICAgICAgICAgICAgICAgICBsZXZlbFN1cmZhY2UtPlJlbGVh
c2UoKTsKLQotICAgICAgICAgICAgICAgICAgICBpbWFnZS0+ZGlydHkgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29tbWl0UmVjdChmYWNlLCBsZXZlbCwgMCwg
MCwgaW1hZ2UtPmdldFdpZHRoKCksIGltYWdlLT5nZXRIZWlnaHQoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CkBAIC0yMTkzLDg2ICsyNjgxLDUzIEBAIHZvaWQgVGV4dHVyZUN1
YmVNYXA6OnVwZGF0ZVRleHR1cmUoKQogCiB2b2lkIFRleHR1cmVDdWJlTWFwOjpjb252ZXJ0VG9S
ZW5kZXJUYXJnZXQoKQogewotICAgIElEaXJlY3QzREN1YmVUZXh0dXJlOSAqdGV4dHVyZSA9IE5V
TEw7CisgICAgVGV4dHVyZVN0b3JhZ2VDdWJlTWFwICpuZXdUZXhTdG9yYWdlID0gTlVMTDsKIAot
ICAgIGlmIChtSW1hZ2VBcnJheVswXVswXS53aWR0aCAhPSAwKQorICAgIGlmIChtSW1hZ2VBcnJh
eVswXVswXS5nZXRXaWR0aCgpICE9IDApCiAgICAgewotICAgICAgICBlZ2w6OkRpc3BsYXkgKmRp
c3BsYXkgPSBnZXREaXNwbGF5KCk7Ci0gICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9
IGdldERldmljZSgpOworICAgICAgICBHTHNpemVpIHNpemUgPSBtSW1hZ2VBcnJheVswXVswXS5n
ZXRXaWR0aCgpOworICAgICAgICBHTGludCBsZXZlbHMgPSBjcmVhdGlvbkxldmVscyhzaXplLCAw
KTsKICAgICAgICAgRDNERk9STUFUIGZvcm1hdCA9IG1JbWFnZUFycmF5WzBdWzBdLmdldEQzREZv
cm1hdCgpOwotICAgICAgICBHTGludCBsZXZlbHMgPSBjcmVhdGlvbkxldmVscyhtSW1hZ2VBcnJh
eVswXVswXS53aWR0aCwgMCk7CiAKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNy
ZWF0ZUN1YmVUZXh0dXJlKG1JbWFnZUFycmF5WzBdWzBdLndpZHRoLCBsZXZlbHMsIEQzRFVTQUdF
X1JFTkRFUlRBUkdFVCwgZm9ybWF0LCBEM0RQT09MX0RFRkFVTFQsICZ0ZXh0dXJlLCBOVUxMKTsK
KyAgICAgICAgbmV3VGV4U3RvcmFnZSA9IG5ldyBUZXh0dXJlU3RvcmFnZUN1YmVNYXAobGV2ZWxz
LCBmb3JtYXQsIHNpemUsIHRydWUpOwogCi0gICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAg
ICAgICAgaWYgKG1UZXhTdG9yYWdlICE9IE5VTEwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VU
T0ZNRU1PUlkpOwotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwot
ICAgICAgICB9CisgICAgICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBnZXREaXNwbGF5
KCk7CisgICAgICAgICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBkaXNwbGF5LT5nZXRE
ZXZpY2UoKTsKIAotICAgICAgICBpZiAobVRleHR1cmUgIT0gTlVMTCkKLSAgICAgICAgewogICAg
ICAgICAgICAgaW50IGxldmVscyA9IGxldmVsQ291bnQoKTsKICAgICAgICAgICAgIGZvciAoaW50
IGYgPSAwOyBmIDwgNjsgZisrKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspCiAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlOwotICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBtVGV4dHVyZS0+R2V0Q3ViZU1hcFN1cmZhY2Uoc3RhdGljX2Nhc3Q8RDNEQ1VC
RU1BUF9GQUNFUz4oZiksIGksICZzb3VyY2UpOworICAgICAgICAgICAgICAgICAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqc291cmNlID0gbVRleFN0b3JhZ2UtPmdldEN1YmVNYXBTdXJmYWNlKEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGYsIGkpOworICAgICAgICAgICAgICAgICAgICBJ
RGlyZWN0M0RTdXJmYWNlOSAqZGVzdCA9IG5ld1RleFN0b3JhZ2UtPmdldEN1YmVNYXBTdXJmYWNl
KEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGYsIGkpOwogCi0gICAgICAgICAgICAg
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjb3B5
VG9SZW5kZXJUYXJnZXQoZGVzdCwgc291cmNlLCBtVGV4U3RvcmFnZS0+aXNNYW5hZ2VkKCkpKQog
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVz
dWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZ
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+UmVsZWFzZSgpOwotCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNl
OSAqZGVzdDsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGV4dHVyZS0+R2V0Q3ViZU1h
cFN1cmZhY2Uoc3RhdGljX2Nhc3Q8RDNEQ1VCRU1BUF9GQUNFUz4oZiksIGksICZkZXN0KTsKLQot
ICAgICAgICAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09V
VE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlLT5SZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzb3VyY2UtPlJlbGVhc2UoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3
VGV4U3RvcmFnZTsKKyAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3QtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICAgICAgZGlzcGxheS0+ZW5kU2NlbmUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5TdHJldGNoUmVjdChzb3VyY2UsIE5VTEwsIGRl
c3QsIE5VTEwsIEQzRFRFWEZfTk9ORSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBF
X09VVE9GTUVNT1JZKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+UmVsZWFz
ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0LT5SZWxlYXNlKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlKSBzb3VyY2UtPlJlbGVhc2UoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGRlc3QpIGRlc3QtPlJlbGVhc2UoKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobVRleHR1
cmUgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIG1UZXh0dXJlLT5SZWxlYXNlKCk7Ci0gICAgfQor
ICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKKyAgICBtVGV4U3RvcmFnZSA9IG5ld1RleFN0b3JhZ2U7
CiAKLSAgICBtVGV4dHVyZSA9IHRleHR1cmU7Ci0gICAgbURpcnR5SW1hZ2UgPSB0cnVlOwotICAg
IG1Jc1JlbmRlcmFibGUgPSB0cnVlOworICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiB9CiAKIHZv
aWQgVGV4dHVyZUN1YmVNYXA6OnNldEltYWdlKGludCBmYWNlSW5kZXgsIEdMaW50IGxldmVsLCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewotICAgIHJlZGVm
aW5lVGV4dHVyZShmYWNlSW5kZXgsIGxldmVsLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHR5cGUp
OworICAgIHJlZGVmaW5lSW1hZ2UoZmFjZUluZGV4LCBsZXZlbCwgZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCB0eXBlKTsKIAogICAgIFRleHR1cmU6OnNldEltYWdlKHVucGFja0FsaWdubWVudCwgcGl4
ZWxzLCAmbUltYWdlQXJyYXlbZmFjZUluZGV4XVtsZXZlbF0pOwogfQpAQCAtMjI4OCw0OCArMjc0
MywyNCBAQCB1bnNpZ25lZCBpbnQgVGV4dHVyZUN1YmVNYXA6OmZhY2VJbmRleChHTGVudW0gZmFj
ZSkKICAgICByZXR1cm4gZmFjZSAtIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsKIH0K
IAotdm9pZCBUZXh0dXJlQ3ViZU1hcDo6cmVkZWZpbmVUZXh0dXJlKGludCBmYWNlLCBHTGludCBs
ZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51
bSB0eXBlKQordm9pZCBUZXh0dXJlQ3ViZU1hcDo6cmVkZWZpbmVJbWFnZShpbnQgZmFjZSwgR0xp
bnQgbGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
TGVudW0gdHlwZSkKIHsKLSAgICBHTHNpemVpIHRleHR1cmVXaWR0aCA9IG1JbWFnZUFycmF5WzBd
WzBdLndpZHRoOwotICAgIEdMc2l6ZWkgdGV4dHVyZUhlaWdodCA9IG1JbWFnZUFycmF5WzBdWzBd
LmhlaWdodDsKLSAgICBHTGVudW0gdGV4dHVyZUZvcm1hdCA9IG1JbWFnZUFycmF5WzBdWzBdLmZv
cm1hdDsKLSAgICBHTGVudW0gdGV4dHVyZVR5cGUgPSBtSW1hZ2VBcnJheVswXVswXS50eXBlOwor
ICAgIGJvb2wgcmVkZWZpbmVkID0gbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLnJlZGVmaW5lKGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgdHlwZSwgZmFsc2UpOwogCi0gICAgbUltYWdlQXJyYXlbZmFj
ZV1bbGV2ZWxdLndpZHRoID0gd2lkdGg7Ci0gICAgbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLmhl
aWdodCA9IGhlaWdodDsKLSAgICBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0uZm9ybWF0ID0gZm9y
bWF0OwotICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXS50eXBlID0gdHlwZTsKLQotICAgIGlm
ICghbVRleHR1cmUpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYm9vbCBz
aXplT2theSA9ICh0ZXh0dXJlV2lkdGggPj4gbGV2ZWwgPT0gd2lkdGgpOwotICAgIGJvb2wgdGV4
dHVyZU9rYXkgPSAoc2l6ZU9rYXkgJiYgdGV4dHVyZUZvcm1hdCA9PSBmb3JtYXQgJiYgdGV4dHVy
ZVR5cGUgPT0gdHlwZSk7Ci0KLSAgICBpZiAoIXRleHR1cmVPa2F5KSAgIC8vIFB1cmdlIGFsbCB0
aGUgbGV2ZWxzIGFuZCB0aGUgdGV4dHVyZS4KKyAgICBpZiAobVRleFN0b3JhZ2UgJiYgcmVkZWZp
bmVkKQogICAgIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBJTVBMRU1FTlRBVElPTl9N
QVhfVEVYVFVSRV9MRVZFTFM7IGkrKykKICAgICAgICAgewogICAgICAgICAgICAgZm9yIChpbnQg
ZiA9IDA7IGYgPCA2OyBmKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG1J
bWFnZUFycmF5W2ZdW2ldLnN1cmZhY2UgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZdW2ldLnN1cmZhY2UtPlJlbGVhc2UoKTsKLSAg
ICAgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0uc3VyZmFjZSA9IE5VTEw7Ci0gICAg
ICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZdW2ldLmRpcnR5ID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0ubWFya0RpcnR5KCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobVRleHR1cmUgIT0gTlVM
TCkKLSAgICAgICAgewotICAgICAgICAgICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKLSAgICAgICAg
ICAgIG1UZXh0dXJlID0gTlVMTDsKLSAgICAgICAgICAgIG1EaXJ0eUltYWdlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIG1Jc1JlbmRlcmFibGUgPSBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBkZWxl
dGUgbVRleFN0b3JhZ2U7CisgICAgICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKKworICAgICAgICBt
RGlydHlJbWFnZXMgPSB0cnVlOwogICAgIH0KIH0KIApAQCAtMjM0NCwyMCArMjc3NSwyMSBAQCB2
b2lkIFRleHR1cmVDdWJlTWFwOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBmb3JtYXQsIEdMaW50CiAgICAgfQogCiAgICAgdW5zaWduZWQgaW50IGZhY2VpbmRl
eCA9IGZhY2VJbmRleCh0YXJnZXQpOwotICAgIHJlZGVmaW5lVGV4dHVyZShmYWNlaW5kZXgsIGxl
dmVsLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIEdMX1VOU0lHTkVEX0JZVEUpOworICAgIHJlZGVm
aW5lSW1hZ2UoZmFjZWluZGV4LCBsZXZlbCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBHTF9VTlNJ
R05FRF9CWVRFKTsKIAotICAgIGlmICghbUltYWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0uaXNS
ZW5kZXJhYmxlKCkpCisgICAgaWYgKCFtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS5pc1Jl
bmRlcmFibGVGb3JtYXQoKSkKICAgICB7Ci0gICAgICAgIGNvcHlUb0ltYWdlKCZtSW1hZ2VBcnJh
eVtmYWNlaW5kZXhdW2xldmVsXSwgMCwgMCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgcmVuZGVyVGFy
Z2V0KTsKKyAgICAgICAgbUltYWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0uY29weSgwLCAwLCB4
LCB5LCB3aWR0aCwgaGVpZ2h0LCByZW5kZXJUYXJnZXQpOworICAgICAgICBtRGlydHlJbWFnZXMg
PSB0cnVlOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpZiAoIW1UZXh0dXJlIHx8
ICFtSXNSZW5kZXJhYmxlKQorICAgICAgICBpZiAoIW1UZXhTdG9yYWdlIHx8ICFtVGV4U3RvcmFn
ZS0+aXNSZW5kZXJUYXJnZXQoKSkKICAgICAgICAgewogICAgICAgICAgICAgY29udmVydFRvUmVu
ZGVyVGFyZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHVwZGF0ZVRleHR1cmUo
KTsKKyAgICAgICAgbUltYWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0ubWFya0NsZWFuKCk7CiAK
ICAgICAgICAgQVNTRVJUKHdpZHRoID09IGhlaWdodCk7CiAKQEAgLTIzNjksMzQgKzI4MDEsMjQg
QEAgdm9pZCBUZXh0dXJlQ3ViZU1hcDo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLCBHTGVudW0gZm9ybWF0LCBHTGludAogICAgICAgICAgICAgc291cmNlUmVjdC5yaWdodCA9
IGNsYW1wKHNvdXJjZVJlY3QucmlnaHQsIDAsIHNvdXJjZS0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0
V2lkdGgoKSk7CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmJvdHRvbSA9IGNsYW1wKHNvdXJjZVJl
Y3QuYm90dG9tLCAwLCBzb3VyY2UtPmdldENvbG9yYnVmZmVyKCktPmdldEhlaWdodCgpKTsKIAot
ICAgICAgICAgICAgR0xpbnQgZGVzdFlPZmZzZXQgPSB0cmFuc2Zvcm1QaXhlbFlPZmZzZXQoMCwg
aGVpZ2h0LCBtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS53aWR0aCk7CisgICAgICAgICAg
ICBHTGludCBkZXN0WU9mZnNldCA9IHRyYW5zZm9ybVBpeGVsWU9mZnNldCgwLCBoZWlnaHQsIG1J
bWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLmdldFdpZHRoKCkpOwogCi0gICAgICAgICAgICBJ
RGlyZWN0M0RTdXJmYWNlOSAqZGVzdCA9IGdldEN1YmVNYXBTdXJmYWNlKHRhcmdldCwgbGV2ZWwp
OworICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QgPSBtVGV4U3RvcmFnZS0+Z2V0
Q3ViZU1hcFN1cmZhY2UodGFyZ2V0LCBsZXZlbCk7CiAKLSAgICAgICAgICAgIGdldEJsaXR0ZXIo
KS0+Y29weShzb3VyY2UtPmdldFJlbmRlclRhcmdldCgpLCBzb3VyY2VSZWN0LCBmb3JtYXQsIDAs
IGRlc3RZT2Zmc2V0LCBkZXN0KTsKLSAgICAgICAgICAgIGRlc3QtPlJlbGVhc2UoKTsKKyAgICAg
ICAgICAgIGlmIChkZXN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdldEJsaXR0
ZXIoKS0+Y29weShyZW5kZXJUYXJnZXQsIHNvdXJjZVJlY3QsIGZvcm1hdCwgMCwgZGVzdFlPZmZz
ZXQsIGRlc3QpOworICAgICAgICAgICAgICAgIGRlc3QtPlJlbGVhc2UoKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KLX0KLQotSURpcmVjdDNEU3VyZmFjZTkgKlRleHR1cmVDdWJl
TWFwOjpnZXRDdWJlTWFwU3VyZmFjZShHTGVudW0gZmFjZSwgdW5zaWduZWQgaW50IGxldmVsKQot
ewotICAgIGlmIChtVGV4dHVyZSA9PSBOVUxMKQotICAgIHsKLSAgICAgICAgVU5SRUFDSEFCTEUo
KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgSURpcmVjdDNEU3VyZmFjZTkg
KnN1cmZhY2UgPSBOVUxMOwogCi0gICAgSFJFU1VMVCBociA9IG1UZXh0dXJlLT5HZXRDdWJlTWFw
U3VyZmFjZShlczJkeDo6Q29udmVydEN1YmVGYWNlKGZhY2UpLCBsZXZlbCwgJnN1cmZhY2UpOwot
Ci0gICAgcmV0dXJuIChTVUNDRUVERUQoaHIpKSA/IHN1cmZhY2UgOiBOVUxMOworICAgIHJlbmRl
clRhcmdldC0+UmVsZWFzZSgpOwogfQogCiB2b2lkIFRleHR1cmVDdWJlTWFwOjpjb3B5U3ViSW1h
Z2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFt
ZWJ1ZmZlciAqc291cmNlKQogewotICAgIEdMc2l6ZWkgc2l6ZSA9IG1JbWFnZUFycmF5W2ZhY2VJ
bmRleCh0YXJnZXQpXVtsZXZlbF0ud2lkdGg7CisgICAgR0xzaXplaSBzaXplID0gbUltYWdlQXJy
YXlbZmFjZUluZGV4KHRhcmdldCldW2xldmVsXS5nZXRXaWR0aCgpOwogCiAgICAgaWYgKHhvZmZz
ZXQgKyB3aWR0aCA+IHNpemUgfHwgeW9mZnNldCArIGhlaWdodCA+IHNpemUpCiAgICAgewpAQCAt
MjQxMiwxNSArMjgzNCwxNSBAQCB2b2lkIFRleHR1cmVDdWJlTWFwOjpjb3B5U3ViSW1hZ2UoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaQogICAgIH0KIAogICAg
IHVuc2lnbmVkIGludCBmYWNlaW5kZXggPSBmYWNlSW5kZXgodGFyZ2V0KTsKLSAgICByZWRlZmlu
ZVRleHR1cmUoZmFjZWluZGV4LCBsZXZlbCwgbUltYWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0u
Zm9ybWF0LCBtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS53aWR0aCwgbUltYWdlQXJyYXlb
ZmFjZWluZGV4XVtsZXZlbF0uaGVpZ2h0LCBHTF9VTlNJR05FRF9CWVRFKTsKLSAgIAotICAgIGlm
ICghbUltYWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0uaXNSZW5kZXJhYmxlKCkgfHwgKCFtVGV4
dHVyZSAmJiAhaXNDb21wbGV0ZSgpKSkKKworICAgIGlmICghbUltYWdlQXJyYXlbZmFjZWluZGV4
XVtsZXZlbF0uaXNSZW5kZXJhYmxlRm9ybWF0KCkgfHwgKCFtVGV4U3RvcmFnZSAmJiAhaXNTYW1w
bGVyQ29tcGxldGUoKSkpCiAgICAgewotICAgICAgICBjb3B5VG9JbWFnZSgmbUltYWdlQXJyYXlb
ZmFjZWluZGV4XVtsZXZlbF0sIDAsIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHJlbmRlclRhcmdl
dCk7CisgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLmNvcHkoMCwgMCwgeCwg
eSwgd2lkdGgsIGhlaWdodCwgcmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgbURpcnR5SW1hZ2VzID0g
dHJ1ZTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaWYgKCFtVGV4dHVyZSB8fCAh
bUlzUmVuZGVyYWJsZSkKKyAgICAgICAgaWYgKCFtVGV4U3RvcmFnZSB8fCAhbVRleFN0b3JhZ2Ut
PmlzUmVuZGVyVGFyZ2V0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnZlcnRUb1JlbmRl
clRhcmdldCgpOwogICAgICAgICB9CkBAIC0yNDM1LDMzICsyODU3LDYyIEBAIHZvaWQgVGV4dHVy
ZUN1YmVNYXA6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQg
eG9mZnNldCwgR0xpCiAgICAgICAgICAgICBzb3VyY2VSZWN0LnJpZ2h0ID0gY2xhbXAoc291cmNl
UmVjdC5yaWdodCwgMCwgc291cmNlLT5nZXRDb2xvcmJ1ZmZlcigpLT5nZXRXaWR0aCgpKTsKICAg
ICAgICAgICAgIHNvdXJjZVJlY3QuYm90dG9tID0gY2xhbXAoc291cmNlUmVjdC5ib3R0b20sIDAs
IHNvdXJjZS0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0SGVpZ2h0KCkpOwogCi0gICAgICAgICAgICBH
TGludCBkZXN0WU9mZnNldCA9IHRyYW5zZm9ybVBpeGVsWU9mZnNldCh5b2Zmc2V0LCBoZWlnaHQs
IG1JbWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLndpZHRoKTsKKyAgICAgICAgICAgIEdMaW50
IGRlc3RZT2Zmc2V0ID0gdHJhbnNmb3JtUGl4ZWxZT2Zmc2V0KHlvZmZzZXQsIGhlaWdodCwgbUlt
YWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0uZ2V0V2lkdGgoKSk7CiAKLSAgICAgICAgICAgIElE
aXJlY3QzRFN1cmZhY2U5ICpkZXN0ID0gZ2V0Q3ViZU1hcFN1cmZhY2UodGFyZ2V0LCBsZXZlbCk7
CisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCA9IG1UZXhTdG9yYWdlLT5nZXRD
dWJlTWFwU3VyZmFjZSh0YXJnZXQsIGxldmVsKTsKIAotICAgICAgICAgICAgZ2V0QmxpdHRlcigp
LT5jb3B5KHNvdXJjZS0+Z2V0UmVuZGVyVGFyZ2V0KCksIHNvdXJjZVJlY3QsIG1JbWFnZUFycmF5
WzBdWzBdLmZvcm1hdCwgeG9mZnNldCwgZGVzdFlPZmZzZXQsIGRlc3QpOwotICAgICAgICAgICAg
ZGVzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgaWYgKGRlc3QpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZ2V0QmxpdHRlcigpLT5jb3B5KHJlbmRlclRhcmdldCwgc291cmNlUmVj
dCwgbUltYWdlQXJyYXlbMF1bMF0uZ2V0Rm9ybWF0KCksIHhvZmZzZXQsIGRlc3RZT2Zmc2V0LCBk
ZXN0KTsKKyAgICAgICAgICAgICAgICBkZXN0LT5SZWxlYXNlKCk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CisKKyAgICByZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKIH0KIAotYm9v
bCBUZXh0dXJlQ3ViZU1hcDo6aXNDdWJlQ29tcGxldGUoKSBjb25zdAordm9pZCBUZXh0dXJlQ3Vi
ZU1hcDo6c3RvcmFnZShHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNp
emVpIHNpemUpCiB7Ci0gICAgaWYgKG1JbWFnZUFycmF5WzBdWzBdLndpZHRoID09IDApCisgICAg
R0xlbnVtIGZvcm1hdCA9IGdsOjpFeHRyYWN0Rm9ybWF0KGludGVybmFsZm9ybWF0KTsKKyAgICBH
TGVudW0gdHlwZSA9IGdsOjpFeHRyYWN0VHlwZShpbnRlcm5hbGZvcm1hdCk7CisgICAgRDNERk9S
TUFUIGQzZGZtdCA9IENvbnZlcnRUZXh0dXJlRm9ybWF0VHlwZShmb3JtYXQsIHR5cGUpOworICAg
IGNvbnN0IGJvb2wgcmVuZGVyVGFyZ2V0ID0gSXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZShkM2Rm
bXQpICYmIChtVXNhZ2UgPT0gR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSk7CisKKyAg
ICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRleFN0b3JhZ2UgPSBuZXcgVGV4dHVyZVN0b3Jh
Z2VDdWJlTWFwKGxldmVscywgZDNkZm10LCBzaXplLCByZW5kZXJUYXJnZXQpOworICAgIG1JbW11
dGFibGUgPSB0cnVlOworCisgICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsg
bGV2ZWwrKykKICAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yIChpbnQg
ZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbWFn
ZUFycmF5W2ZhY2VdW2xldmVsXS5yZWRlZmluZShmb3JtYXQsIHNpemUsIHNpemUsIHR5cGUsIHRy
dWUpOworICAgICAgICAgICAgc2l6ZSA9IHN0ZDo6bWF4KDEsIHNpemUgPj4gMSk7CisgICAgICAg
IH0KICAgICB9CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBmID0gMTsgZiA8IDY7IGYrKykKKyAg
ICBmb3IgKGludCBsZXZlbCA9IGxldmVsczsgbGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVY
VFVSRV9MRVZFTFM7IGxldmVsKyspCiAgICAgewotICAgICAgICBpZiAobUltYWdlQXJyYXlbZl1b
MF0ud2lkdGggIT0gbUltYWdlQXJyYXlbMF1bMF0ud2lkdGgKLSAgICAgICAgICAgIHx8IG1JbWFn
ZUFycmF5W2ZdWzBdLmZvcm1hdCAhPSBtSW1hZ2VBcnJheVswXVswXS5mb3JtYXQpCisgICAgICAg
IGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0u
cmVkZWZpbmUoR0xfTk9ORSwgMCwgMCwgR0xfVU5TSUdORURfQllURSwgdHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobVRleFN0b3JhZ2UtPmlzTWFu
YWdlZCgpKQorICAgIHsKKyAgICAgICAgaW50IGxldmVscyA9IGxldmVsQ291bnQoKTsKKworICAg
ICAgICBmb3IgKGludCBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgbGV2ZWwrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSA9
IG1UZXhTdG9yYWdlLT5nZXRDdWJlTWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1ggKyBmYWNlLCBsZXZlbCk7CisgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbZmFjZV1b
bGV2ZWxdLnNldE1hbmFnZWRTdXJmYWNlKHN1cmZhY2UpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQogfQogCiB2b2lkIFRleHR1cmVDdWJlTWFwOjpnZW5lcmF0ZU1pcG1hcHMoKQpA
QCAtMjQ3Myw0NCArMjkyNCwzMyBAQCB2b2lkIFRleHR1cmVDdWJlTWFwOjpnZW5lcmF0ZU1pcG1h
cHMoKQogCiAgICAgaWYgKCFnZXRDb250ZXh0KCktPnN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZSgp
KQogICAgIHsKLSAgICAgICAgaWYgKCFpc1BvdzIobUltYWdlQXJyYXlbMF1bMF0ud2lkdGgpKQor
ICAgICAgICBpZiAoIWlzUG93MihtSW1hZ2VBcnJheVswXVswXS5nZXRXaWR0aCgpKSkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIC8vIFB1cmdlIGFycmF5IGxldmVscyAxIHRocm91Z2ggcSBh
bmQgcmVzZXQgdGhlbSB0byByZXByZXNlbnQgdGhlIGdlbmVyYXRlZCBtaXBtYXAgbGV2ZWxzLgot
ICAgIHVuc2lnbmVkIGludCBxID0gbG9nMihtSW1hZ2VBcnJheVswXVswXS53aWR0aCk7CisgICAg
dW5zaWduZWQgaW50IHEgPSBsb2cyKG1JbWFnZUFycmF5WzBdWzBdLmdldFdpZHRoKCkpOwogICAg
IGZvciAodW5zaWduZWQgaW50IGYgPSAwOyBmIDwgNjsgZisrKQogICAgIHsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAobUltYWdlQXJyYXlbZl1baV0uc3VyZmFjZSAhPSBOVUxMKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZdW2ldLnN1cmZhY2UtPlJlbGVhc2UoKTsKLSAg
ICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtmXVtpXS5zdXJmYWNlID0gTlVMTDsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0ud2lkdGggPSBzdGQ6Om1heCht
SW1hZ2VBcnJheVtmXVswXS53aWR0aCA+PiBpLCAxKTsKLSAgICAgICAgICAgIG1JbWFnZUFycmF5
W2ZdW2ldLmhlaWdodCA9IG1JbWFnZUFycmF5W2ZdW2ldLndpZHRoOwotICAgICAgICAgICAgbUlt
YWdlQXJyYXlbZl1baV0uZm9ybWF0ID0gbUltYWdlQXJyYXlbZl1bMF0uZm9ybWF0OwotICAgICAg
ICAgICAgbUltYWdlQXJyYXlbZl1baV0udHlwZSA9IG1JbWFnZUFycmF5W2ZdWzBdLnR5cGU7Cisg
ICAgICAgICAgICByZWRlZmluZUltYWdlKGYsIGksIG1JbWFnZUFycmF5W2ZdWzBdLmdldEZvcm1h
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heChtSW1hZ2VBcnJh
eVtmXVswXS5nZXRXaWR0aCgpID4+IGksIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1heChtSW1hZ2VBcnJheVtmXVswXS5nZXRXaWR0aCgpID4+IGksIDEpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtmXVswXS5nZXRUeXBlKCkp
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1Jc1JlbmRlcmFibGUpCisgICAgaWYgKG1U
ZXhTdG9yYWdlICYmIG1UZXhTdG9yYWdlLT5pc1JlbmRlclRhcmdldCgpKQogICAgIHsKLSAgICAg
ICAgaWYgKG1UZXh0dXJlID09IE5VTEwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGYgPSAwOyBmIDwgNjsgZisr
KQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8PSBx
OyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkg
KnVwcGVyID0gZ2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
ICsgZiwgaS0xKTsKLSAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbG93ZXIgPSBn
ZXRDdWJlTWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmLCBpKTsK
KyAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqdXBwZXIgPSBtVGV4U3RvcmFnZS0+
Z2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZiwgaS0x
KTsKKyAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbG93ZXIgPSBtVGV4U3RvcmFn
ZS0+Z2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZiwg
aSk7CiAKICAgICAgICAgICAgICAgICBpZiAodXBwZXIgIT0gTlVMTCAmJiBsb3dlciAhPSBOVUxM
KQogICAgICAgICAgICAgICAgIHsKQEAgLTI1MjAsNyArMjk2MCw3IEBAIHZvaWQgVGV4dHVyZUN1
YmVNYXA6OmdlbmVyYXRlTWlwbWFwcygpCiAgICAgICAgICAgICAgICAgaWYgKHVwcGVyICE9IE5V
TEwpIHVwcGVyLT5SZWxlYXNlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGxvd2VyICE9IE5VTEwp
IGxvd2VyLT5SZWxlYXNlKCk7CiAKLSAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtmXVtpXS5k
aXJ0eSA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZdW2ldLm1hcmtDbGVh
bigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjUzMCwxOCArMjk3MCwx
NyBAQCB2b2lkIFRleHR1cmVDdWJlTWFwOjpnZW5lcmF0ZU1pcG1hcHMoKQogICAgICAgICB7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8PSBxOyBpKyspCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY3JlYXRlU3VyZmFjZSgmbUltYWdlQXJyYXlbZl1baV0p
OwotICAgICAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJheVtmXVtpXS5zdXJmYWNlID09IE5VTEwp
CisgICAgICAgICAgICAgICAgaWYgKG1JbWFnZUFycmF5W2ZdW2ldLmdldFN1cmZhY2UoKSA9PSBO
VUxMKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGlmIChGQUlMRUQoRDNEWExvYWRTdXJmYWNlRnJvbVN1cmZhY2UobUltYWdlQXJyYXlbZl1baV0u
c3VyZmFjZSwgTlVMTCwgTlVMTCwgbUltYWdlQXJyYXlbZl1baSAtIDFdLnN1cmZhY2UsIE5VTEws
IE5VTEwsIEQzRFhfRklMVEVSX0JPWCwgMCkpKQorICAgICAgICAgICAgICAgIGlmIChGQUlMRUQo
RDNEWExvYWRTdXJmYWNlRnJvbVN1cmZhY2UobUltYWdlQXJyYXlbZl1baV0uZ2V0U3VyZmFjZSgp
LCBOVUxMLCBOVUxMLCBtSW1hZ2VBcnJheVtmXVtpIC0gMV0uZ2V0U3VyZmFjZSgpLCBOVUxMLCBO
VUxMLCBEM0RYX0ZJTFRFUl9CT1gsIDApKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgIEVSUigiIGZhaWxlZCB0byBsb2FkIGZpbHRlciAlZCB0byAlZC4iLCBpIC0gMSwg
aSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1b
aV0uZGlydHkgPSB0cnVlOworICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZdW2ldLm1hcmtE
aXJ0eSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjU1OCw3ICsyOTk3
LDcgQEAgUmVuZGVyYnVmZmVyICpUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVuZGVyYnVmZmVyKEdMZW51
bSB0YXJnZXQpCiAKICAgICBpZiAobUZhY2VQcm94aWVzW2ZhY2VdLmdldCgpID09IE5VTEwpCiAg
ICAgewotICAgICAgICBtRmFjZVByb3hpZXNbZmFjZV0uc2V0KG5ldyBSZW5kZXJidWZmZXIoaWQo
KSwgbmV3IENvbG9yYnVmZmVyKHRoaXMsIHRhcmdldCkpKTsKKyAgICAgICAgbUZhY2VQcm94aWVz
W2ZhY2VdLnNldChuZXcgUmVuZGVyYnVmZmVyKGlkKCksIG5ldyBSZW5kZXJidWZmZXJUZXh0dXJl
KHRoaXMsIHRhcmdldCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbUZhY2VQcm94aWVzW2ZhY2Vd
LmdldCgpOwpAQCAtMjU2OCwyMiArMzAwNywzMiBAQCBJRGlyZWN0M0RTdXJmYWNlOSAqVGV4dHVy
ZUN1YmVNYXA6OmdldFJlbmRlclRhcmdldChHTGVudW0gdGFyZ2V0KQogewogICAgIEFTU0VSVChJ
c0N1YmVtYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpOwogCi0gICAgaWYgKCFtSXNSZW5kZXJhYmxl
KQotICAgIHsKLSAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7Ci0gICAgfQotCi0gICAg
aWYgKG1UZXh0dXJlID09IE5VTEwpCisgICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1
cmUgaXMgY3JlYXRlZAorICAgIGlmIChnZXRTdG9yYWdlKHRydWUpID09IE5VTEwpCiAgICAgewog
ICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICB1cGRhdGVUZXh0dXJlKCk7CiAgICAg
Ci0gICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdldCA9IE5VTEw7Ci0gICAgbVRleHR1
cmUtPkdldEN1YmVNYXBTdXJmYWNlKGVzMmR4OjpDb252ZXJ0Q3ViZUZhY2UodGFyZ2V0KSwgMCwg
JnJlbmRlclRhcmdldCk7Ci0KLSAgICByZXR1cm4gcmVuZGVyVGFyZ2V0OworICAgIHJldHVybiBt
VGV4U3RvcmFnZS0+Z2V0Q3ViZU1hcFN1cmZhY2UodGFyZ2V0LCAwKTsKIH0KIAorVGV4dHVyZVN0
b3JhZ2UgKlRleHR1cmVDdWJlTWFwOjpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KQorewor
ICAgIGlmICghbVRleFN0b3JhZ2UgfHwgKHJlbmRlclRhcmdldCAmJiAhbVRleFN0b3JhZ2UtPmlz
UmVuZGVyVGFyZ2V0KCkpKQorICAgIHsKKyAgICAgICAgaWYgKHJlbmRlclRhcmdldCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVUZXh0dXJlKCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbVRleFN0b3JhZ2U7CiB9CisKK30KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL1RleHR1cmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvVGV4dHVyZS5oCmluZGV4IDViZGIyZmIwZmEyYmMzOWI0ZDIwMjhjMDdiZjBhMjgwOWY3
ZTQ5MTcuLmMyZGQ3MTlmN2Y0ZWVjOWRlYWM1NTU2NzEzYmFkYmU3ZjYzODBkOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5oCkBAIC00Myw2
ICs0MywxMjkgQEAgZW51bQogICAgIElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyA9
IDE1ICAgLy8gMStsb2cyIG9mIE1BWF9URVhUVVJFX1NJWkUKIH07CiAKK2NsYXNzIEltYWdlCit7
CisgIHB1YmxpYzoKKyAgICBJbWFnZSgpOworICAgIH5JbWFnZSgpOworCisgICAgYm9vbCByZWRl
ZmluZShHTGVudW0gZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IHR5cGUsIGJvb2wgZm9yY2VSZWxlYXNlKTsKKyAgICB2b2lkIG1hcmtEaXJ0eSgpIHttRGlydHkg
PSB0cnVlO30KKyAgICB2b2lkIG1hcmtDbGVhbigpIHttRGlydHkgPSBmYWxzZTt9CisKKyAgICBI
UkVTVUxUIGxvY2soRDNETE9DS0VEX1JFQ1QgKmxvY2tlZFJlY3QsIGNvbnN0IFJFQ1QgKnJlY3Qp
OworICAgIHZvaWQgdW5sb2NrKCk7CisKKyAgICBib29sIGlzUmVuZGVyYWJsZUZvcm1hdCgpIGNv
bnN0OworICAgIEQzREZPUk1BVCBnZXREM0RGb3JtYXQoKSBjb25zdDsKKworICAgIEdMc2l6ZWkg
Z2V0V2lkdGgoKSBjb25zdCB7cmV0dXJuIG1XaWR0aDt9CisgICAgR0xzaXplaSBnZXRIZWlnaHQo
KSBjb25zdCB7cmV0dXJuIG1IZWlnaHQ7fQorICAgIEdMZW51bSBnZXRGb3JtYXQoKSBjb25zdCB7
cmV0dXJuIG1Gb3JtYXQ7fQorICAgIEdMZW51bSBnZXRUeXBlKCkgY29uc3Qge3JldHVybiBtVHlw
ZTt9CisgICAgYm9vbCBpc0RpcnR5KCkgY29uc3Qge3JldHVybiBtU3VyZmFjZSAmJiBtRGlydHk7
fQorICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRTdXJmYWNlKCk7CisKKyAgICB2b2lkIHNldE1h
bmFnZWRTdXJmYWNlKElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKTsKKyAgICB2b2lkIHVwZGF0
ZVN1cmZhY2UoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKworICAgIHZvaWQgbG9hZERh
dGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgR0xpbnQgdW5wYWNrQWxpZ25t
ZW50LCBjb25zdCB2b2lkICppbnB1dCwgc3RkOjpzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91
dHB1dCkgY29uc3Q7CisKKyAgICB2b2lkIGxvYWRBbHBoYURhdGEoR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1
dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9hZEFscGhhRmxvYXREYXRh
KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAg
IHZvaWQgbG9hZEFscGhhSGFsZkZsb2F0RGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0
UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CisgICAgdm9pZCBsb2FkTHVtaW5hbmNlRGF0YShH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lk
ICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQsIGJvb2wgbmF0aXZlKSBj
b25zdDsKKyAgICB2b2lkIGxvYWRMdW1pbmFuY2VGbG9hdERhdGEoR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6
ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9hZEx1bWlu
YW5jZUhhbGZGbG9hdERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0KSBjb25zdDsKKyAgICB2b2lkIGxvYWRMdW1pbmFuY2VBbHBoYURhdGEoR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQsIGJvb2wgbmF0aXZl
KSBjb25zdDsKKyAgICB2b2lkIGxvYWRMdW1pbmFuY2VBbHBoYUZsb2F0RGF0YShHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9p
ZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKKyAgICB2
b2lkIGxvYWRMdW1pbmFuY2VBbHBoYUhhbGZGbG9hdERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1
dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9h
ZFJHQlVCeXRlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0
Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkg
Y29uc3Q7CisgICAgdm9pZCBsb2FkUkdCNTY1RGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNo
LCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9hZFJHQkZsb2F0RGF0YShHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0
LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CisgICAgdm9pZCBsb2Fk
UkdCSGFsZkZsb2F0RGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9hZFJHQkFVQnl0ZURhdGFTU0UyKEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1
dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9h
ZFJHQkFVQnl0ZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQ
aXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0
KSBjb25zdDsKKyAgICB2b2lkIGxvYWRSR0JBNDQ0NERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1
dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9hZFJHQkE1NTUxRGF0YShH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQg
KmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CisgICAgdm9p
ZCBsb2FkUkdCQUZsb2F0RGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9hZFJHQkFIYWxmRmxvYXREYXRhKEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1
dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9h
ZEJHUkFEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0Owor
ICAgIHZvaWQgbG9hZENvbXByZXNzZWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNo
LCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9hZERYVDFEYXRhKEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90
IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9hZERYVDNEYXRh
KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICpp
bnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQg
bG9hZERYVDVEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0
OworCisgICAgdm9pZCBjb3B5KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgs
IEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBJRGlyZWN0M0RTdXJmYWNl
OSAqcmVuZGVyVGFyZ2V0KTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihJbWFnZSk7CisKKyAgICB2b2lkIGNyZWF0ZVN1cmZhY2UoKTsKKworICAgIEdMc2l6ZWkg
bVdpZHRoOworICAgIEdMc2l6ZWkgbUhlaWdodDsKKyAgICBHTGVudW0gbUZvcm1hdDsKKyAgICBH
TGVudW0gbVR5cGU7CisKKyAgICBib29sIG1EaXJ0eTsKKworICAgIEQzRFBPT0wgbUQzRFBvb2w7
ICAgLy8gY2FuIG9ubHkgYmUgRDNEUE9PTF9TWVNURU1NRU0gb3IgRDNEUE9PTF9NQU5BR0VEIHNp
bmNlIGl0IG5lZWRzIHRvIGJlIGxvY2thYmxlLgorICAgIEQzREZPUk1BVCBtRDNERm9ybWF0Owor
CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKm1TdXJmYWNlOworfTsKKworY2xhc3MgVGV4dHVyZVN0
b3JhZ2UKK3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IFRleHR1cmVTdG9yYWdlKGJvb2wgcmVu
ZGVyVGFyZ2V0KTsKKworICAgIHZpcnR1YWwgflRleHR1cmVTdG9yYWdlKCk7CisKKyAgICBib29s
IGlzUmVuZGVyVGFyZ2V0KCkgY29uc3Q7CisgICAgYm9vbCBpc01hbmFnZWQoKSBjb25zdDsKKyAg
ICBEM0RQT09MIGdldFBvb2woKSBjb25zdDsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0VGV4dHVyZVNl
cmlhbCgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlbmRlclRhcmdldFNl
cmlhbChHTGVudW0gdGFyZ2V0KSBjb25zdCA9IDA7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2UpOworCisgICAgY29uc3QgYm9vbCBtUmVu
ZGVyVGFyZ2V0OworICAgIGNvbnN0IEQzRFBPT0wgbUQzRFBvb2w7CisKKyAgICBjb25zdCB1bnNp
Z25lZCBpbnQgbVRleHR1cmVTZXJpYWw7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBpc3N1ZVRl
eHR1cmVTZXJpYWwoKTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbUN1cnJlbnRUZXh0dXJl
U2VyaWFsOworfTsKKwogY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudE9iamVjdAogewog
ICBwdWJsaWM6CkBAIC01NiwxOSArMTc5LDIxIEBAIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVm
Q291bnRPYmplY3QKICAgICBib29sIHNldE1hZ0ZpbHRlcihHTGVudW0gZmlsdGVyKTsKICAgICBi
b29sIHNldFdyYXBTKEdMZW51bSB3cmFwKTsKICAgICBib29sIHNldFdyYXBUKEdMZW51bSB3cmFw
KTsKKyAgICBib29sIHNldFVzYWdlKEdMZW51bSB1c2FnZSk7CiAKICAgICBHTGVudW0gZ2V0TWlu
RmlsdGVyKCkgY29uc3Q7CiAgICAgR0xlbnVtIGdldE1hZ0ZpbHRlcigpIGNvbnN0OwogICAgIEdM
ZW51bSBnZXRXcmFwUygpIGNvbnN0OwogICAgIEdMZW51bSBnZXRXcmFwVCgpIGNvbnN0OworICAg
IEdMZW51bSBnZXRVc2FnZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBHTHNpemVpIGdldFdpZHRo
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBHTHNpemVpIGdldFdpZHRoKEdMaW50IGxldmVsKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodChHTGludCBsZXZlbCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgR0xlbnVtIGdldFR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBEM0RGT1JNQVQgZ2V0
RDNERm9ybWF0KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGlzQ29tcGxldGUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2FtcGxlckNvbXBsZXRlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0NvbXByZXNzZWQoKSBjb25zdCA9IDA7CiAKICAgICBJRGly
ZWN0M0RCYXNlVGV4dHVyZTkgKmdldFRleHR1cmUoKTsKQEAgLTc3LDQzICsyMDIsMjYgQEAgY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudE9iamVjdAogICAgIHZpcnR1YWwgdm9pZCBnZW5l
cmF0ZU1pcG1hcHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvcHlTdWJJbWFnZShHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQg
eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEZyYW1lYnVmZmVyICpz
b3VyY2UpID0gMDsKIAotICAgIGJvb2wgaXNEaXJ0eVBhcmFtZXRlcigpIGNvbnN0OwotICAgIGJv
b2wgaXNEaXJ0eUltYWdlKCkgY29uc3Q7CisgICAgYm9vbCBoYXNEaXJ0eVBhcmFtZXRlcnMoKSBj
b25zdDsKKyAgICBib29sIGhhc0RpcnR5SW1hZ2VzKCkgY29uc3Q7CiAgICAgdm9pZCByZXNldERp
cnR5KCk7Ci0gICAgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OworICAgIHVuc2lnbmVk
IGludCBnZXRUZXh0dXJlU2VyaWFsKCk7CisgICAgdW5zaWduZWQgaW50IGdldFJlbmRlclRhcmdl
dFNlcmlhbChHTGVudW0gdGFyZ2V0KTsKKworICAgIGJvb2wgaXNJbW11dGFibGUoKSBjb25zdDsK
IAogICAgIHN0YXRpYyBjb25zdCBHTHVpbnQgSU5DT01QTEVURV9URVhUVVJFX0lEID0gc3RhdGlj
X2Nhc3Q8R0x1aW50PigtMSk7ICAgLy8gRXZlcnkgdGV4dHVyZSB0YWtlcyBhbiBpZCBhdCBjcmVh
dGlvbiB0aW1lLiBUaGUgdmFsdWUgaXMgYXJiaXRyYXJ5IGJlY2F1c2UgaXQgaXMgbmV2ZXIgcmVn
aXN0ZXJlZCB3aXRoIHRoZSByZXNvdXJjZSBtYW5hZ2VyLgogCiAgIHByb3RlY3RlZDoKLSAgICBm
cmllbmQgY2xhc3MgQ29sb3JidWZmZXI7Ci0KLSAgICAvLyBIZWxwZXIgc3RydWN0dXJlIHJlcHJl
c2VudGluZyBhIHNpbmdsZSBpbWFnZSBsYXllcgotICAgIHN0cnVjdCBJbWFnZQotICAgIHsKLSAg
ICAgICAgSW1hZ2UoKTsKLSAgICAgICAgfkltYWdlKCk7Ci0KLSAgICAgICAgYm9vbCBpc1JlbmRl
cmFibGUoKSBjb25zdDsKLSAgICAgICAgRDNERk9STUFUIGdldEQzREZvcm1hdCgpIGNvbnN0Owot
Ci0gICAgICAgIEdMc2l6ZWkgd2lkdGg7Ci0gICAgICAgIEdMc2l6ZWkgaGVpZ2h0OwotICAgICAg
ICBHTGVudW0gZm9ybWF0OwotICAgICAgICBHTGVudW0gdHlwZTsKLQotICAgICAgICBib29sIGRp
cnR5OwotCi0gICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlOwotICAgIH07CisgICAg
ZnJpZW5kIGNsYXNzIFJlbmRlcmJ1ZmZlclRleHR1cmU7CiAKICAgICB2b2lkIHNldEltYWdlKEdM
aW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzLCBJbWFnZSAqaW1hZ2UpOwog
ICAgIGJvb2wgc3ViSW1hZ2UoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1
bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscywgSW1hZ2UgKmltYWdlKTsKICAgICB2
b2lkIHNldENvbXByZXNzZWRJbWFnZShHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4
ZWxzLCBJbWFnZSAqaW1hZ2UpOwogICAgIGJvb2wgc3ViSW1hZ2VDb21wcmVzc2VkKEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVu
dW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzLCBJbWFnZSAq
aW1hZ2UpOwotICAgIHZvaWQgY29weVRvSW1hZ2UoSW1hZ2UgKmltYWdlLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdldCk7CiAKLSAgICBHTGludCBj
cmVhdGlvbkxldmVscyhHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgbWF4bGV2
ZWwpIGNvbnN0OwotICAgIEdMaW50IGNyZWF0aW9uTGV2ZWxzKEdMc2l6ZWkgc2l6ZSwgR0xpbnQg
bWF4bGV2ZWwpIGNvbnN0OworICAgIEdMaW50IGNyZWF0aW9uTGV2ZWxzKEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KSBjb25zdDsKKyAgICBHTGludCBjcmVhdGlvbkxldmVscyhHTHNpemVp
IHNpemUpIGNvbnN0OwogCiAgICAgdmlydHVhbCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKmdldEJh
c2VUZXh0dXJlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlKCkg
PSAwOwpAQCAtMTIxLDc2ICsyMjksNDYgQEAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3Vu
dE9iamVjdAogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKSA9IDA7CiAg
ICAgdmlydHVhbCBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0UmVuZGVyVGFyZ2V0KEdMZW51bSB0YXJn
ZXQpID0gMDsKIAotICAgIHZvaWQgY3JlYXRlU3VyZmFjZShJbWFnZSAqaW1hZ2UpOwotCi0gICAg
QmxpdCAqZ2V0QmxpdHRlcigpOwotCiAgICAgaW50IGxldmVsQ291bnQoKSBjb25zdDsKIAorICAg
IHN0YXRpYyBCbGl0ICpnZXRCbGl0dGVyKCk7CisgICAgc3RhdGljIGJvb2wgY29weVRvUmVuZGVy
VGFyZ2V0KElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0LCBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNl
LCBib29sIGZyb21NYW5hZ2VkKTsKKwogICAgIEdMZW51bSBtTWluRmlsdGVyOwogICAgIEdMZW51
bSBtTWFnRmlsdGVyOwogICAgIEdMZW51bSBtV3JhcFM7CiAgICAgR0xlbnVtIG1XcmFwVDsKLSAg
ICBib29sIG1EaXJ0eVBhcmFtZXRlcjsKKyAgICBib29sIG1EaXJ0eVBhcmFtZXRlcnM7CisgICAg
R0xlbnVtIG1Vc2FnZTsKIAotICAgIGJvb2wgbURpcnR5SW1hZ2U7CisgICAgYm9vbCBtRGlydHlJ
bWFnZXM7CiAKLSAgICBib29sIG1Jc1JlbmRlcmFibGU7CisgICAgYm9vbCBtSW1tdXRhYmxlOwog
CiAgIHByaXZhdGU6CiAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmUpOwogCi0g
ICAgdm9pZCBsb2FkSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpp
bnB1dCwgc3RkOjpzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCwgRDNEU1VSRkFDRV9E
RVNDICpkZXNjcmlwdGlvbikgY29uc3Q7CisgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqZ2V0
U3RvcmFnZShib29sIHJlbmRlclRhcmdldCkgPSAwOworfTsKIAotICAgIHZvaWQgbG9hZEFscGhh
SW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNv
bnN0OwotICAgIHZvaWQgbG9hZEFscGhhRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNp
emVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRBbHBo
YUhhbGZGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRj
aCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRMdW1pbmFuY2VJbWFnZURhdGEo
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQsIGJvb2wgbmF0
aXZlKSBjb25zdDsKLSAgICB2b2lkIGxvYWRMdW1pbmFuY2VGbG9hdEltYWdlRGF0YShHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qg
dm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAg
ICB2b2lkIGxvYWRMdW1pbmFuY2VIYWxmRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICpp
bnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwotICAgIHZvaWQg
bG9hZEx1bWluYW5jZUFscGhhSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91
dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQsIGJvb2wgbmF0aXZlKSBjb25zdDsKLSAgICB2b2lkIGxv
YWRMdW1pbmFuY2VBbHBoYUZsb2F0SW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBz
aXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7Ci0gICAgdm9pZCBsb2FkTHVt
aW5hbmNlQWxwaGFIYWxmRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNl
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0
LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7Ci0gICAgdm9pZCBsb2Fk
UkdCVUJ5dGVJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCkgY29uc3Q7Ci0gICAgdm9pZCBsb2FkUkdCNTY1SW1hZ2VEYXRhKEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQs
IHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRS
R0JGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAq
b3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRSR0JIYWxmRmxvYXRJbWFnZURhdGEoR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwotICAg
IHZvaWQgbG9hZFJHQkFVQnl0ZUltYWdlRGF0YVNTRTIoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVf
dCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2b2lkIGxvYWRSR0JBVUJ5
dGVJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQpIGNvbnN0OwotICAgIHZvaWQgbG9hZFJHQkE0NDQ0SW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwg
c2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwotICAgIHZvaWQgbG9hZFJH
QkE1NTUxSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQpIGNvbnN0OwotICAgIHZvaWQgbG9hZFJHQkFGbG9hdEltYWdlRGF0YShHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlu
cHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7Ci0gICAgdm9pZCBs
b2FkUkdCQUhhbGZGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1
dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwotICAgIHZvaWQgbG9hZEJHUkFJbWFnZURhdGEo
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9p
ZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKLSAgICB2
b2lkIGxvYWRDb21wcmVzc2VkSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0
UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CitjbGFzcyBUZXh0dXJlU3RvcmFnZTJEIDogcHVi
bGljIFRleHR1cmVTdG9yYWdlCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBUZXh0dXJlU3Rv
cmFnZTJEKElEaXJlY3QzRFRleHR1cmU5ICpzdXJmYWNlVGV4dHVyZSk7CisgICAgVGV4dHVyZVN0
b3JhZ2UyRChpbnQgbGV2ZWxzLCBEM0RGT1JNQVQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWln
aHQsIGJvb2wgcmVuZGVyVGFyZ2V0KTsKKworICAgIHZpcnR1YWwgflRleHR1cmVTdG9yYWdlMkQo
KTsKIAotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVTZXJpYWwoKTsKKyAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqZ2V0U3VyZmFjZUxldmVsKGludCBsZXZlbCk7CisgICAgSURpcmVjdDNEQmFz
ZVRleHR1cmU5ICpnZXRCYXNlVGV4dHVyZSgpIGNvbnN0OwogCi0gICAgY29uc3QgdW5zaWduZWQg
aW50IG1TZXJpYWw7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVuZGVyVGFyZ2V0U2Vy
aWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0OwogCi0gICAgc3RhdGljIHVuc2lnbmVkIGludCBtQ3Vy
cmVudFNlcmlhbDsKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4
dHVyZVN0b3JhZ2UyRCk7CisKKyAgICBJRGlyZWN0M0RUZXh0dXJlOSAqbVRleHR1cmU7CisgICAg
Y29uc3QgdW5zaWduZWQgaW50IG1SZW5kZXJUYXJnZXRTZXJpYWw7CiB9OwogCiBjbGFzcyBUZXh0
dXJlMkQgOiBwdWJsaWMgVGV4dHVyZQpAQCAtMjAyLDggKzI4MCw4IEBAIGNsYXNzIFRleHR1cmUy
RCA6IHB1YmxpYyBUZXh0dXJlCiAKICAgICB2aXJ0dWFsIEdMZW51bSBnZXRUYXJnZXQoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgR0xzaXplaSBnZXRXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
R0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0V2lkdGgo
R0xpbnQgbGV2ZWwpIGNvbnN0OworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRIZWlnaHQoR0xpbnQg
bGV2ZWwpIGNvbnN0OwogICAgIHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29u
c3Q7CiAgICAgdmlydHVhbCBHTGVudW0gZ2V0VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgRDNE
Rk9STUFUIGdldEQzREZvcm1hdCgpIGNvbnN0OwpAQCAtMjEzLDkgKzI5MSwxMCBAQCBjbGFzcyBU
ZXh0dXJlMkQgOiBwdWJsaWMgVGV4dHVyZQogICAgIHZvaWQgc3ViSW1hZ2UoR0xpbnQgbGV2ZWws
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBj
b25zdCB2b2lkICpwaXhlbHMpOwogICAgIHZvaWQgc3ViSW1hZ2VDb21wcmVzc2VkKEdMaW50IGxl
dmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBp
eGVscyk7CiAgICAgdm9pZCBjb3B5SW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZl
ciAqc291cmNlKTsKLSAgICB2b2lkIGNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEZyYW1lYnVmZmVyICpzb3VyY2UpOworICAgIHZp
cnR1YWwgdm9pZCBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKTsKKyAgICB2b2lkIHN0b3JhZ2Uo
R0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpOwogCi0gICAgdmlydHVhbCBib29sIGlzQ29tcGxldGUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNTYW1wbGVyQ29tcGxldGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNDb21wcmVzc2VkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRUZXhJbWFnZShl
Z2w6OlN1cmZhY2UgKnN1cmZhY2UpOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlVGV4SW1hZ2Uo
KTsKQEAgLTIzMiwxOCArMzExLDQwIEBAIGNsYXNzIFRleHR1cmUyRCA6IHB1YmxpYyBUZXh0dXJl
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29u
dmVydFRvUmVuZGVyVGFyZ2V0KCk7CiAgICAgdmlydHVhbCBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0
UmVuZGVyVGFyZ2V0KEdMZW51bSB0YXJnZXQpOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2Ug
KmdldFN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQpOworCisgICAgYm9vbCBpc01pcG1hcENvbXBs
ZXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHJlZGVmaW5lVGV4dHVyZShHTGludCBsZXZlbCwgR0xl
bnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSB0eXBlLCBi
b29sIGZvcmNlKTsKKyAgICB2b2lkIHJlZGVmaW5lSW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51bSBm
b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gdHlwZSk7CiAgICAg
dm9pZCBjb21taXRSZWN0KEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CiAKICAgICBJbWFnZSBtSW1hZ2VBcnJh
eVtJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFNdOwogCi0gICAgSURpcmVjdDNEVGV4
dHVyZTkgKm1UZXh0dXJlOworICAgIFRleHR1cmVTdG9yYWdlMkQgKm1UZXhTdG9yYWdlOwogICAg
IGVnbDo6U3VyZmFjZSAqbVN1cmZhY2U7CiAKICAgICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJidWZm
ZXI+IG1Db2xvcmJ1ZmZlclByb3h5OwogfTsKIAorY2xhc3MgVGV4dHVyZVN0b3JhZ2VDdWJlTWFw
IDogcHVibGljIFRleHR1cmVTdG9yYWdlCit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFn
ZUN1YmVNYXAoaW50IGxldmVscywgRDNERk9STUFUIGZvcm1hdCwgaW50IHNpemUsIGJvb2wgcmVu
ZGVyVGFyZ2V0KTsKKworICAgIHZpcnR1YWwgflRleHR1cmVTdG9yYWdlQ3ViZU1hcCgpOworCisg
ICAgSURpcmVjdDNEU3VyZmFjZTkgKmdldEN1YmVNYXBTdXJmYWNlKEdMZW51bSBmYWNlVGFyZ2V0
LCBpbnQgbGV2ZWwpOworICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqZ2V0QmFzZVRleHR1cmUo
KSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlbmRlclRhcmdldFNlcmlh
bChHTGVudW0gdGFyZ2V0KSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihUZXh0dXJlU3RvcmFnZUN1YmVNYXApOworCisgICAgSURpcmVjdDNEQ3ViZVRl
eHR1cmU5ICptVGV4dHVyZTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbUZpcnN0UmVuZGVyVGFy
Z2V0U2VyaWFsOworfTsKKwogY2xhc3MgVGV4dHVyZUN1YmVNYXAgOiBwdWJsaWMgVGV4dHVyZQog
ewogICBwdWJsaWM6CkBAIC0yNTMsOCArMzU0LDggQEAgY2xhc3MgVGV4dHVyZUN1YmVNYXAgOiBw
dWJsaWMgVGV4dHVyZQogCiAgICAgdmlydHVhbCBHTGVudW0gZ2V0VGFyZ2V0KCkgY29uc3Q7CiAg
ICAgCi0gICAgdmlydHVhbCBHTHNpemVpIGdldFdpZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBH
THNpemVpIGdldEhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRXaWR0aChH
TGludCBsZXZlbCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodChHTGludCBs
ZXZlbCkgY29uc3Q7CiAgICAgdmlydHVhbCBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIEdMZW51bSBnZXRUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBEM0RG
T1JNQVQgZ2V0RDNERm9ybWF0KCkgY29uc3Q7CkBAIC0yNzIsMTQgKzM3MywxNyBAQCBjbGFzcyBU
ZXh0dXJlQ3ViZU1hcCA6IHB1YmxpYyBUZXh0dXJlCiAgICAgdm9pZCBzdWJJbWFnZUNvbXByZXNz
ZWQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVp
IGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKICAgICB2b2lkIGNvcHlJbWFnZShHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEZyYW1lYnVmZmVyICpzb3VyY2UpOwogICAg
IHZpcnR1YWwgdm9pZCBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKTsKKyAgICB2b2lkIHN0b3Jh
Z2UoR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSBzaXplKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBsZXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGlzU2FtcGxlckNvbXBsZXRlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzQ29tcHJlc3Nl
ZCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwcygpOwogCiAgICAg
dmlydHVhbCBSZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0KTsKIAor
ICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgZmFjZUluZGV4KEdMZW51bSBmYWNlKTsKKwogICBwcml2
YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0dXJlQ3ViZU1hcCk7CiAKQEAg
LTI4OCwyNSArMzkyLDIxIEBAIGNsYXNzIFRleHR1cmVDdWJlTWFwIDogcHVibGljIFRleHR1cmUK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjb252
ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKICAgICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRS
ZW5kZXJUYXJnZXQoR0xlbnVtIHRhcmdldCk7Ci0KLSAgICAvLyBmYWNlIGlzIG9uZSBvZiB0aGUg
R0xfVEVYVFVSRV9DVUJFX01BUF8qIGVudW1lcmFudHMuCi0gICAgLy8gUmV0dXJucyBOVUxMIGlm
IHRoZSBjYWxsIHVuZGVybHlpbmcgRGlyZWN0M0QgY2FsbCBmYWlscy4KLSAgICBJRGlyZWN0M0RT
dXJmYWNlOSAqZ2V0Q3ViZU1hcFN1cmZhY2UoR0xlbnVtIGZhY2UsIHVuc2lnbmVkIGludCBsZXZl
bCk7Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IGZhY2VJbmRleChHTGVudW0gZmFjZSk7Cisg
ICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqZ2V0U3RvcmFnZShib29sIHJlbmRlclRhcmdldCk7
CiAKICAgICBib29sIGlzQ3ViZUNvbXBsZXRlKCkgY29uc3Q7CisgICAgYm9vbCBpc01pcG1hcEN1
YmVDb21wbGV0ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJbWFnZShpbnQgZmFjZUluZGV4LCBH
TGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7
Ci0gICAgdm9pZCBjb21taXRSZWN0KEdMZW51bSBmYWNlVGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OwotICAgIHZvaWQgcmVkZWZpbmVUZXh0dXJlKGludCBmYWNlSW5kZXgsIEdMaW50IGxldmVsLCBH
TGVudW0gZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIHR5cGUp
OworICAgIHZvaWQgY29tbWl0UmVjdChpbnQgZmFjZUluZGV4LCBHTGludCBsZXZlbCwgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwor
ICAgIHZvaWQgcmVkZWZpbmVJbWFnZShpbnQgZmFjZUluZGV4LCBHTGludCBsZXZlbCwgR0xlbnVt
IGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSB0eXBlKTsKIAog
ICAgIEltYWdlIG1JbWFnZUFycmF5WzZdW0lNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVM
U107CiAKLSAgICBJRGlyZWN0M0RDdWJlVGV4dHVyZTkgKm1UZXh0dXJlOworICAgIFRleHR1cmVT
dG9yYWdlQ3ViZU1hcCAqbVRleFN0b3JhZ2U7CiAKICAgICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJi
dWZmZXI+IG1GYWNlUHJveGllc1s2XTsKIH07CiB9CiAKLSNlbmRpZiAgIC8vIExJQkdMRVNWMl9U
RVhUVVJFX0hfCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfVEVYVFVSRV9IXwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvVmVydGV4RGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAKaW5kZXggYTc3MTZjZWUwMGVlNTRh
MDRhNDZlZWRhYTNlMTA2ODM3MDI5ZTMyOC4uNjk4ZDhiOWJkNDVhNDc3YTQzMTNhYzBkMjU4NGYx
ZjdmMTQxOGQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTIxLDEwICsyMSwxOSBAQAogbmFt
ZXNwYWNlCiB7CiAgICAgZW51bSB7IElOSVRJQUxfU1RSRUFNX0JVRkZFUl9TSVpFID0gMTAyNCox
MDI0IH07CisgICAgLy8gVGhpcyBoYXMgdG8gYmUgYXQgbGVhc3QgNGsgb3IgZWxzZSBpdCBmYWls
cyBvbiBBVEkgY2FyZHMuCisgICAgZW51bSB7IENPTlNUQU5UX1ZFUlRFWF9CVUZGRVJfU0laRSA9
IDQwOTYgfTsKIH0KIAogbmFtZXNwYWNlIGdsCiB7Cit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVy
OjptQ3VycmVudFNlcmlhbCA9IDE7CisKK2ludCBlbGVtZW50c0luQnVmZmVyKGNvbnN0IFZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBpbnQgc2l6ZSkKK3sKKyAgICBpbnQgc3RyaWRlID0gYXR0
cmlidXRlLnN0cmlkZSgpOworICAgIHJldHVybiAoc2l6ZSAtIGF0dHJpYnV0ZS5tT2Zmc2V0ICUg
c3RyaWRlICsgKHN0cmlkZSAtIGF0dHJpYnV0ZS50eXBlU2l6ZSgpKSkgLyBzdHJpZGU7Cit9CiAK
IFZlcnRleERhdGFNYW5hZ2VyOjpWZXJ0ZXhEYXRhTWFuYWdlcihDb250ZXh0ICpjb250ZXh0LCBJ
RGlyZWN0M0REZXZpY2U5ICpkZXZpY2UpIDogbUNvbnRleHQoY29udGV4dCksIG1EZXZpY2UoZGV2
aWNlKQogewpAQCAtMzIsNiArNDEsNyBAQCBWZXJ0ZXhEYXRhTWFuYWdlcjo6VmVydGV4RGF0YU1h
bmFnZXIoQ29udGV4dCAqY29udGV4dCwgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlKQogICAgIHsK
ICAgICAgICAgbURpcnR5Q3VycmVudFZhbHVlW2ldID0gdHJ1ZTsKICAgICAgICAgbUN1cnJlbnRW
YWx1ZUJ1ZmZlcltpXSA9IE5VTEw7CisgICAgICAgIG1DdXJyZW50VmFsdWVPZmZzZXRzW2ldID0g
MDsKICAgICB9CiAKICAgICBjb25zdCBEM0RDQVBTOSAmY2FwcyA9IGNvbnRleHQtPmdldERldmlj
ZUNhcHMoKTsKQEAgLTU1LDE0ICs2NSwxNCBAQCBWZXJ0ZXhEYXRhTWFuYWdlcjo6flZlcnRleERh
dGFNYW5hZ2VyKCkKICAgICB9CiB9CiAKLVVJTlQgVmVydGV4RGF0YU1hbmFnZXI6OndyaXRlQXR0
cmlidXRlRGF0YShBcnJheVZlcnRleEJ1ZmZlciAqdmVydGV4QnVmZmVyLCBHTGludCBzdGFydCwg
R0xzaXplaSBjb3VudCwgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUpCitzdGQ6OnNp
emVfdCBWZXJ0ZXhEYXRhTWFuYWdlcjo6d3JpdGVBdHRyaWJ1dGVEYXRhKEFycmF5VmVydGV4QnVm
ZmVyICp2ZXJ0ZXhCdWZmZXIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBjb25zdCBWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkKIHsKICAgICBCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnV0
ZS5tQm91bmRCdWZmZXIuZ2V0KCk7CiAKICAgICBpbnQgaW5wdXRTdHJpZGUgPSBhdHRyaWJ1dGUu
c3RyaWRlKCk7CiAgICAgaW50IGVsZW1lbnRTaXplID0gYXR0cmlidXRlLnR5cGVTaXplKCk7CiAg
ICAgY29uc3QgRm9ybWF0Q29udmVydGVyICZjb252ZXJ0ZXIgPSBmb3JtYXRDb252ZXJ0ZXIoYXR0
cmlidXRlKTsKLSAgICBVSU5UIHN0cmVhbU9mZnNldCA9IDA7CisgICAgc3RkOjpzaXplX3Qgc3Ry
ZWFtT2Zmc2V0ID0gMDsKIAogICAgIHZvaWQgKm91dHB1dCA9IE5VTEw7CiAgICAgCkBAIC0xMzMs
MTYgKzE0MywzMCBAQCBHTGVudW0gVmVydGV4RGF0YU1hbmFnZXI6OnByZXBhcmVWZXJ0ZXhEYXRh
KEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBUcmFuc2xhdAogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIGlmIChzdGF0aWNCdWZmZXItPnNpemUoKSA9PSAwKQogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsQ291bnQgPSBidWZmZXItPnNpemUo
KSAvIGF0dHJpYnNbaV0uc3RyaWRlKCk7CisgICAgICAgICAgICAgICAgICAgIGludCB0b3RhbENv
dW50ID0gZWxlbWVudHNJbkJ1ZmZlcihhdHRyaWJzW2ldLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY0J1ZmZlci0+YWRkUmVxdWlyZWRTcGFjZShzcGFjZVJlcXVp
cmVkKGF0dHJpYnNbaV0sIHRvdGFsQ291bnQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoc3RhdGljQnVmZmVyLT5sb29rdXBBdHRyaWJ1dGUoYXR0cmlic1tp
XSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlz
IHN0YXRpYyBidWZmZXIgZG9lc24ndCBoYXZlIG1hdGNoaW5nIGF0dHJpYnV0ZXMsIHNvIGZhbGwg
YmFjayB0byB1c2luZyB0aGUgc3RyZWFtaW5nIGJ1ZmZlcgotICAgICAgICAgICAgICAgICAgICBt
U3RyZWFtaW5nQnVmZmVyLT5hZGRSZXF1aXJlZFNwYWNlRm9yKHN0YXRpY0J1ZmZlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGJ1ZmZlci0+aW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gQWRkIHRoZSBzcGFjZSBvZiBhbGwgcHJldmlvdXMgYXR0cmlidXRlcyBi
ZWxvbmdpbmcgdG8gdGhlIGludmFsaWRhdGVkIHN0YXRpYyBidWZmZXIgdG8gdGhlIHN0cmVhbWlu
ZyBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgcHJldmlvdXMgPSAwOyBwcmV2
aW91cyA8IGk7IHByZXZpb3VzKyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkW3ByZXZpb3VzXS5hY3RpdmUgJiYgYXR0cmlic1tw
cmV2aW91c10ubUFycmF5RW5hYmxlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIgKnByZXZpb3VzQnVmZmVyID0gYXR0cmlic1tw
cmV2aW91c10ubUJvdW5kQnVmZmVyLmdldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0YXRpY1ZlcnRleEJ1ZmZlciAqcHJldmlvdXNTdGF0aWNCdWZmZXIgPSBwcmV2aW91c0J1ZmZl
ciA/IHByZXZpb3VzQnVmZmVyLT5nZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoKSA6IE5VTEw7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGljQnVmZmVyID09IHByZXZpb3VzU3Rh
dGljQnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbVN0cmVhbWluZ0J1ZmZlci0+YWRkUmVxdWlyZWRTcGFjZShzcGFj
ZVJlcXVpcmVkKGF0dHJpYnNbcHJldmlvdXNdLCBjb3VudCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG1TdHJlYW1pbmdCdWZmZXItPmFkZFJlcXVpcmVk
U3BhY2Uoc3BhY2VSZXF1aXJlZChhdHRyaWJzW2ldLCBjb3VudCkpOworCisgICAgICAgICAgICAg
ICAgICAgIGJ1ZmZlci0+aW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsKICAgICAgICAgICAgICAgICB9
ICAgIAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQpAQCAtMTg5LDcgKzIxMyw3IEBA
IEdMZW51bSBWZXJ0ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleERhdGEoR0xpbnQgc3RhcnQs
IEdMc2l6ZWkgY291bnQsIFRyYW5zbGF0CiAgICAgICAgICAgICAgICAgU3RhdGljVmVydGV4QnVm
ZmVyICpzdGF0aWNCdWZmZXIgPSBidWZmZXIgPyBidWZmZXItPmdldFN0YXRpY1ZlcnRleEJ1ZmZl
cigpIDogTlVMTDsKICAgICAgICAgICAgICAgICBBcnJheVZlcnRleEJ1ZmZlciAqdmVydGV4QnVm
ZmVyID0gc3RhdGljQnVmZmVyID8gc3RhdGljQnVmZmVyIDogc3RhdGljX2Nhc3Q8QXJyYXlWZXJ0
ZXhCdWZmZXIqPihtU3RyZWFtaW5nQnVmZmVyKTsKIAotICAgICAgICAgICAgICAgIFVJTlQgc3Ry
ZWFtT2Zmc2V0ID0gLTE7CisgICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgc3RyZWFtT2Zmc2V0
ID0gLTE7CiAKICAgICAgICAgICAgICAgICBpZiAoc3RhdGljQnVmZmVyKQogICAgICAgICAgICAg
ICAgIHsKQEAgLTE5OCw3ICsyMjIsNyBAQCBHTGVudW0gVmVydGV4RGF0YU1hbmFnZXI6OnByZXBh
cmVWZXJ0ZXhEYXRhKEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBUcmFuc2xhdAogICAgICAg
ICAgICAgICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ID09IC0xKQogICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBlbnRpcmUgYnVmZmVy
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG90YWxDb3VudCA9IGJ1ZmZlci0+c2l6ZSgp
IC8gYXR0cmlic1tpXS5zdHJpZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB0b3Rh
bENvdW50ID0gZWxlbWVudHNJbkJ1ZmZlcihhdHRyaWJzW2ldLCBidWZmZXItPnNpemUoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRJbmRleCA9IGF0dHJpYnNbaV0ubU9mZnNl
dCAvIGF0dHJpYnNbaV0uc3RyaWRlKCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bU9mZnNldCA9IHdyaXRlQXR0cmlidXRlRGF0YShzdGF0aWNCdWZmZXIsIC1zdGFydEluZGV4LCB0
b3RhbENvdW50LCBhdHRyaWJzW2ldKTsKQEAgLTIyMCwyNCArMjQ0LDQzIEBAIEdMZW51bSBWZXJ0
ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleERhdGEoR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291
bnQsIFRyYW5zbGF0CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgdHJhbnNs
YXRlZFtpXS52ZXJ0ZXhCdWZmZXIgPSB2ZXJ0ZXhCdWZmZXItPmdldEJ1ZmZlcigpOworICAgICAg
ICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uc2VyaWFsID0gdmVydGV4QnVmZmVyLT5nZXRTZXJpYWwo
KTsKICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnR5cGUgPSBjb252ZXJ0ZXIuZDNkRGVj
bFR5cGU7CiAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5zdHJpZGUgPSBjb252ZXJ0ZXIu
b3V0cHV0RWxlbWVudFNpemU7CiAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5vZmZzZXQg
PSBzdHJlYW1PZmZzZXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFtQ3VycmVudFZhbHVlQnVmZmVyW2ldKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRWYWx1ZUJ1ZmZlcltp
XSA9IG5ldyBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXIobURldmljZSwgQ09OU1RBTlRfVkVSVEVYX0JV
RkZFUl9TSVpFKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBTdHJlYW1p
bmdWZXJ0ZXhCdWZmZXIgKmJ1ZmZlciA9IG1DdXJyZW50VmFsdWVCdWZmZXJbaV07CisKICAgICAg
ICAgICAgICAgICBpZiAobURpcnR5Q3VycmVudFZhbHVlW2ldKQogICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG1DdXJyZW50VmFsdWVCdWZmZXJbaV07Ci0gICAg
ICAgICAgICAgICAgICAgIG1DdXJyZW50VmFsdWVCdWZmZXJbaV0gPSBuZXcgQ29uc3RhbnRWZXJ0
ZXhCdWZmZXIobURldmljZSwgYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlWzBdLCBhdHRyaWJzW2ld
Lm1DdXJyZW50VmFsdWVbMV0sIGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVsyXSwgYXR0cmlic1tp
XS5tQ3VycmVudFZhbHVlWzNdKTsKLSAgICAgICAgICAgICAgICAgICAgbURpcnR5Q3VycmVudFZh
bHVlW2ldID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCByZXF1aXJlZFNw
YWNlID0gNCAqIHNpemVvZihmbG9hdCk7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci0+YWRk
UmVxdWlyZWRTcGFjZShyZXF1aXJlZFNwYWNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVy
LT5yZXNlcnZlUmVxdWlyZWRTcGFjZSgpOworICAgICAgICAgICAgICAgICAgICBmbG9hdCAqZGF0
YSA9IHN0YXRpY19jYXN0PGZsb2F0Kj4oYnVmZmVyLT5tYXAoVmVydGV4QXR0cmlidXRlKCksIHJl
cXVpcmVkU3BhY2UsICZtQ3VycmVudFZhbHVlT2Zmc2V0c1tpXSkpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YVswXSA9IGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVswXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFbMV0gPSBhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWVbMV07CisgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhWzJdID0gYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlWzJd
OworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVszXSA9IGF0dHJpYnNbaV0ubUN1cnJlbnRW
YWx1ZVszXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci0+dW5tYXAoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1EaXJ0eUN1cnJlbnRWYWx1ZVtpXSA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgdHJh
bnNsYXRlZFtpXS52ZXJ0ZXhCdWZmZXIgPSBtQ3VycmVudFZhbHVlQnVmZmVyW2ldLT5nZXRCdWZm
ZXIoKTsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnNlcmlhbCA9IG1DdXJyZW50VmFs
dWVCdWZmZXJbaV0tPmdldFNlcmlhbCgpOwogCiAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtp
XS50eXBlID0gRDNEREVDTFRZUEVfRkxPQVQ0OwogICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRb
aV0uc3RyaWRlID0gMDsKLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLm9mZnNldCA9IDA7
CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5vZmZzZXQgPSBtQ3VycmVudFZhbHVlT2Zm
c2V0c1tpXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTUwNyw2ICs1NTAs
NyBAQCBWZXJ0ZXhCdWZmZXI6OlZlcnRleEJ1ZmZlcihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2Us
IHN0ZDo6c2l6ZV90IHNpemUsIERXT1JEIHVzYQogICAgIHsKICAgICAgICAgRDNEUE9PTCBwb29s
ID0gZ2V0RGlzcGxheSgpLT5nZXRCdWZmZXJQb29sKHVzYWdlRmxhZ3MpOwogICAgICAgICBIUkVT
VUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVmVydGV4QnVmZmVyKHNpemUsIHVzYWdlRmxhZ3Ms
IDAsIHBvb2wsICZtVmVydGV4QnVmZmVyLCBOVUxMKTsKKyAgICAgICAgbVNlcmlhbCA9IGlzc3Vl
U2VyaWFsKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAg
IHsKQEAgLTUzNiwzNSArNTgwLDE0IEBAIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKlZlcnRleEJ1
ZmZlcjo6Z2V0QnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gbVZlcnRleEJ1ZmZlcjsKIH0KIAot
Q29uc3RhbnRWZXJ0ZXhCdWZmZXI6OkNvbnN0YW50VmVydGV4QnVmZmVyKElEaXJlY3QzRERldmlj
ZTkgKmRldmljZSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykgOiBWZXJ0ZXhC
dWZmZXIoZGV2aWNlLCA0ICogc2l6ZW9mKGZsb2F0KSwgRDNEVVNBR0VfV1JJVEVPTkxZKQordW5z
aWduZWQgaW50IFZlcnRleEJ1ZmZlcjo6Z2V0U2VyaWFsKCkgY29uc3QKIHsKLSAgICB2b2lkICpi
dWZmZXIgPSBOVUxMOwotCi0gICAgaWYgKG1WZXJ0ZXhCdWZmZXIpCi0gICAgewotICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IG1WZXJ0ZXhCdWZmZXItPkxvY2soMCwgMCwgJmJ1ZmZlciwgMCk7Ci0g
ICAgIAotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEVSUigiTG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKGJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIGZsb2F0ICp2ZWN0b3Ig
PSAoZmxvYXQqKWJ1ZmZlcjsKLQotICAgICAgICB2ZWN0b3JbMF0gPSB4OwotICAgICAgICB2ZWN0
b3JbMV0gPSB5OwotICAgICAgICB2ZWN0b3JbMl0gPSB6OwotICAgICAgICB2ZWN0b3JbM10gPSB3
OwotCi0gICAgICAgIG1WZXJ0ZXhCdWZmZXItPlVubG9jaygpOwotICAgIH0KKyAgICByZXR1cm4g
bVNlcmlhbDsKIH0KIAotQ29uc3RhbnRWZXJ0ZXhCdWZmZXI6On5Db25zdGFudFZlcnRleEJ1ZmZl
cigpCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOjppc3N1ZVNlcmlhbCgpCiB7CisgICAgcmV0
dXJuIG1DdXJyZW50U2VyaWFsKys7CiB9CiAKIEFycmF5VmVydGV4QnVmZmVyOjpBcnJheVZlcnRl
eEJ1ZmZlcihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIHN0ZDo6c2l6ZV90IHNpemUsIERXT1JE
IHVzYWdlRmxhZ3MpIDogVmVydGV4QnVmZmVyKGRldmljZSwgc2l6ZSwgdXNhZ2VGbGFncykKQEAg
LTU4MywxMSArNjA2LDYgQEAgdm9pZCBBcnJheVZlcnRleEJ1ZmZlcjo6YWRkUmVxdWlyZWRTcGFj
ZShVSU5UIHJlcXVpcmVkU3BhY2UpCiAgICAgbVJlcXVpcmVkU3BhY2UgKz0gcmVxdWlyZWRTcGFj
ZTsKIH0KIAotdm9pZCBBcnJheVZlcnRleEJ1ZmZlcjo6YWRkUmVxdWlyZWRTcGFjZUZvcihBcnJh
eVZlcnRleEJ1ZmZlciAqYnVmZmVyKQotewotICAgIG1SZXF1aXJlZFNwYWNlICs9IGJ1ZmZlci0+
bVJlcXVpcmVkU3BhY2U7Ci19Ci0KIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlcjo6U3RyZWFtaW5nVmVy
dGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgc3RkOjpzaXplX3QgaW5pdGlhbFNp
emUpIDogQXJyYXlWZXJ0ZXhCdWZmZXIoZGV2aWNlLCBpbml0aWFsU2l6ZSwgRDNEVVNBR0VfRFlO
QU1JQyB8IEQzRFVTQUdFX1dSSVRFT05MWSkKIHsKIH0KQEAgLTYzMSw2ICs2NDksNyBAQCB2b2lk
IFN0cmVhbWluZ1ZlcnRleEJ1ZmZlcjo6cmVzZXJ2ZVJlcXVpcmVkU3BhY2UoKQogCiAgICAgICAg
IEQzRFBPT0wgcG9vbCA9IGdldERpc3BsYXkoKS0+Z2V0QnVmZmVyUG9vbChEM0RVU0FHRV9EWU5B
TUlDIHwgRDNEVVNBR0VfV1JJVEVPTkxZKTsKICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2
aWNlLT5DcmVhdGVWZXJ0ZXhCdWZmZXIobUJ1ZmZlclNpemUsIEQzRFVTQUdFX0RZTkFNSUMgfCBE
M0RVU0FHRV9XUklURU9OTFksIDAsIHBvb2wsICZtVmVydGV4QnVmZmVyLCBOVUxMKTsKKyAgICAg
ICAgbVNlcmlhbCA9IGlzc3VlU2VyaWFsKCk7CiAgICAgCiAgICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKICAgICAgICAgewpAQCAtNjYyLDcgKzY4MSw3IEBAIFN0YXRpY1ZlcnRleEJ1ZmZlcjo6
flN0YXRpY1ZlcnRleEJ1ZmZlcigpCiB7CiB9CiAKLXZvaWQgKlN0YXRpY1ZlcnRleEJ1ZmZlcjo6
bWFwKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBzdGQ6OnNpemVfdCByZXF1aXJl
ZFNwYWNlLCBVSU5UICpzdHJlYW1PZmZzZXQpCit2b2lkICpTdGF0aWNWZXJ0ZXhCdWZmZXI6Om1h
cChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgc3RkOjpzaXplX3QgcmVxdWlyZWRT
cGFjZSwgc3RkOjpzaXplX3QgKnN0cmVhbU9mZnNldCkKIHsKICAgICB2b2lkICptYXBQdHIgPSBO
VUxMOwogCkBAIC02NzcsNyArNjk2LDcgQEAgdm9pZCAqU3RhdGljVmVydGV4QnVmZmVyOjptYXAo
Y29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIHN0ZDo6c2l6ZV90IHJlcXUKICAgICAg
ICAgfQogCiAgICAgICAgIGludCBhdHRyaWJ1dGVPZmZzZXQgPSBhdHRyaWJ1dGUubU9mZnNldCAl
IGF0dHJpYnV0ZS5zdHJpZGUoKTsKLSAgICAgICAgVmVydGV4RWxlbWVudCBlbGVtZW50ID0ge2F0
dHJpYnV0ZS5tVHlwZSwgYXR0cmlidXRlLm1TaXplLCBhdHRyaWJ1dGUubU5vcm1hbGl6ZWQsIGF0
dHJpYnV0ZU9mZnNldCwgbVdyaXRlUG9zaXRpb259OworICAgICAgICBWZXJ0ZXhFbGVtZW50IGVs
ZW1lbnQgPSB7YXR0cmlidXRlLm1UeXBlLCBhdHRyaWJ1dGUubVNpemUsIGF0dHJpYnV0ZS5zdHJp
ZGUoKSwgYXR0cmlidXRlLm1Ob3JtYWxpemVkLCBhdHRyaWJ1dGVPZmZzZXQsIG1Xcml0ZVBvc2l0
aW9ufTsKICAgICAgICAgbUNhY2hlLnB1c2hfYmFjayhlbGVtZW50KTsKIAogICAgICAgICAqc3Ry
ZWFtT2Zmc2V0ID0gbVdyaXRlUG9zaXRpb247CkBAIC02OTMsNyArNzEyLDggQEAgdm9pZCBTdGF0
aWNWZXJ0ZXhCdWZmZXI6OnJlc2VydmVSZXF1aXJlZFNwYWNlKCkKICAgICB7CiAgICAgICAgIEQz
RFBPT0wgcG9vbCA9IGdldERpc3BsYXkoKS0+Z2V0QnVmZmVyUG9vbChEM0RVU0FHRV9XUklURU9O
TFkpOwogICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVZlcnRleEJ1ZmZl
cihtUmVxdWlyZWRTcGFjZSwgRDNEVVNBR0VfV1JJVEVPTkxZLCAwLCBwb29sLCAmbVZlcnRleEJ1
ZmZlciwgTlVMTCk7Ci0gICAgCisgICAgICAgIG1TZXJpYWwgPSBpc3N1ZVNlcmlhbCgpOworCiAg
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewogICAgICAgICAgICAgRVJSKCJP
dXQgb2YgbWVtb3J5IGFsbG9jYXRpbmcgYSB2ZXJ0ZXggYnVmZmVyIG9mIHNpemUgJWx1LiIsIG1S
ZXF1aXJlZFNwYWNlKTsKQEAgLTcxMCwxMSArNzMwLDE0IEBAIHZvaWQgU3RhdGljVmVydGV4QnVm
ZmVyOjpyZXNlcnZlUmVxdWlyZWRTcGFjZSgpCiAgICAgbVJlcXVpcmVkU3BhY2UgPSAwOwogfQog
Ci1VSU5UIFN0YXRpY1ZlcnRleEJ1ZmZlcjo6bG9va3VwQXR0cmlidXRlKGNvbnN0IFZlcnRleEF0
dHJpYnV0ZSAmYXR0cmlidXRlKQorc3RkOjpzaXplX3QgU3RhdGljVmVydGV4QnVmZmVyOjpsb29r
dXBBdHRyaWJ1dGUoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUpCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgZWxlbWVudCA9IDA7IGVsZW1lbnQgPCBtQ2FjaGUuc2l6ZSgpOyBlbGVt
ZW50KyspCiAgICAgewotICAgICAgICBpZiAobUNhY2hlW2VsZW1lbnRdLnR5cGUgPT0gYXR0cmli
dXRlLm1UeXBlICYmICBtQ2FjaGVbZWxlbWVudF0uc2l6ZSA9PSBhdHRyaWJ1dGUubVNpemUgJiYg
bUNhY2hlW2VsZW1lbnRdLm5vcm1hbGl6ZWQgPT0gYXR0cmlidXRlLm1Ob3JtYWxpemVkKQorICAg
ICAgICBpZiAobUNhY2hlW2VsZW1lbnRdLnR5cGUgPT0gYXR0cmlidXRlLm1UeXBlICYmCisgICAg
ICAgICAgICBtQ2FjaGVbZWxlbWVudF0uc2l6ZSA9PSBhdHRyaWJ1dGUubVNpemUgJiYKKyAgICAg
ICAgICAgIG1DYWNoZVtlbGVtZW50XS5zdHJpZGUgPT0gYXR0cmlidXRlLnN0cmlkZSgpICYmCisg
ICAgICAgICAgICBtQ2FjaGVbZWxlbWVudF0ubm9ybWFsaXplZCA9PSBhdHRyaWJ1dGUubU5vcm1h
bGl6ZWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtQ2FjaGVbZWxlbWVudF0uYXR0cmli
dXRlT2Zmc2V0ID09IGF0dHJpYnV0ZS5tT2Zmc2V0ICUgYXR0cmlidXRlLnN0cmlkZSgpKQogICAg
ICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5oCmluZGV4IDFiZDgzNTFkOGEwNjEyNWVmYjEyMTM2
YTkxNTJiMTlkNThmNWY0ZWYuLjllZGZlNjVmM2ZmYWIzYzI4ZjNkYzAwN2Y0ZDhiNmQ4YmUyMmVl
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVmVy
dGV4RGF0YU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL1ZlcnRleERhdGFNYW5hZ2VyLmgKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTMwLDU4ICszMCw1NiBAQCBzdHJ1Y3QgVHJhbnNsYXRl
ZEF0dHJpYnV0ZQogICAgIFVJTlQgc3RyaWRlOyAgIC8vIDAgbWVhbnMgbm90IHRvIGFkdmFuY2Ug
dGhlIHJlYWQgcG9pbnRlciBhdCBhbGwKIAogICAgIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKnZl
cnRleEJ1ZmZlcjsKKyAgICB1bnNpZ25lZCBpbnQgc2VyaWFsOwogfTsKIAogY2xhc3MgVmVydGV4
QnVmZmVyCiB7CiAgIHB1YmxpYzoKLSAgICBWZXJ0ZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAq
ZGV2aWNlLCBVSU5UIHNpemUsIERXT1JEIHVzYWdlRmxhZ3MpOworICAgIFZlcnRleEJ1ZmZlcihJ
RGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIHN0ZDo6c2l6ZV90IHNpemUsIERXT1JEIHVzYWdlRmxh
Z3MpOwogICAgIHZpcnR1YWwgflZlcnRleEJ1ZmZlcigpOwogCiAgICAgdm9pZCB1bm1hcCgpOwog
CiAgICAgSURpcmVjdDNEVmVydGV4QnVmZmVyOSAqZ2V0QnVmZmVyKCkgY29uc3Q7CisgICAgdW5z
aWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OwogCiAgIHByb3RlY3RlZDoKICAgICBJRGlyZWN0
M0REZXZpY2U5ICpjb25zdCBtRGV2aWNlOwogICAgIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKm1W
ZXJ0ZXhCdWZmZXI7CiAKKyAgICB1bnNpZ25lZCBpbnQgbVNlcmlhbDsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaW50IGlzc3VlU2VyaWFsKCk7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBtQ3VycmVu
dFNlcmlhbDsKKwogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihWZXJ0
ZXhCdWZmZXIpOwogfTsKIAotY2xhc3MgQ29uc3RhbnRWZXJ0ZXhCdWZmZXIgOiBwdWJsaWMgVmVy
dGV4QnVmZmVyCi17Ci0gIHB1YmxpYzoKLSAgICBDb25zdGFudFZlcnRleEJ1ZmZlcihJRGlyZWN0
M0REZXZpY2U5ICpkZXZpY2UsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpOwot
ICAgIH5Db25zdGFudFZlcnRleEJ1ZmZlcigpOwotfTsKLQogY2xhc3MgQXJyYXlWZXJ0ZXhCdWZm
ZXIgOiBwdWJsaWMgVmVydGV4QnVmZmVyCiB7CiAgIHB1YmxpYzoKLSAgICBBcnJheVZlcnRleEJ1
ZmZlcihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIFVJTlQgc2l6ZSwgRFdPUkQgdXNhZ2VGbGFn
cyk7CisgICAgQXJyYXlWZXJ0ZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBzdGQ6
OnNpemVfdCBzaXplLCBEV09SRCB1c2FnZUZsYWdzKTsKICAgICB+QXJyYXlWZXJ0ZXhCdWZmZXIo
KTsKIAotICAgIFVJTlQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1CdWZmZXJTaXplOyB9Ci0gICAg
dmlydHVhbCB2b2lkICptYXAoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIFVJTlQg
cmVxdWlyZWRTcGFjZSwgVUlOVCAqc3RyZWFtT2Zmc2V0KSA9IDA7CisgICAgc3RkOjpzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1CdWZmZXJTaXplOyB9CisgICAgdmlydHVhbCB2b2lkICpt
YXAoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIHN0ZDo6c2l6ZV90IHJlcXVpcmVk
U3BhY2UsIHN0ZDo6c2l6ZV90ICpzdHJlYW1PZmZzZXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzZXJ2ZVJlcXVpcmVkU3BhY2UoKSA9IDA7CiAgICAgdm9pZCBhZGRSZXF1aXJlZFNwYWNlKFVJ
TlQgcmVxdWlyZWRTcGFjZSk7Ci0gICAgdm9pZCBhZGRSZXF1aXJlZFNwYWNlRm9yKEFycmF5VmVy
dGV4QnVmZmVyICpidWZmZXIpOwogCiAgIHByb3RlY3RlZDoKLSAgICBVSU5UIG1CdWZmZXJTaXpl
OwotICAgIFVJTlQgbVdyaXRlUG9zaXRpb247Ci0gICAgVUlOVCBtUmVxdWlyZWRTcGFjZTsKKyAg
ICBzdGQ6OnNpemVfdCBtQnVmZmVyU2l6ZTsKKyAgICBzdGQ6OnNpemVfdCBtV3JpdGVQb3NpdGlv
bjsKKyAgICBzdGQ6OnNpemVfdCBtUmVxdWlyZWRTcGFjZTsKIH07CiAKIGNsYXNzIFN0cmVhbWlu
Z1ZlcnRleEJ1ZmZlciA6IHB1YmxpYyBBcnJheVZlcnRleEJ1ZmZlcgogewogICBwdWJsaWM6Ci0g
ICAgU3RyZWFtaW5nVmVydGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgVUlOVCBp
bml0aWFsU2l6ZSk7CisgICAgU3RyZWFtaW5nVmVydGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkg
KmRldmljZSwgc3RkOjpzaXplX3QgaW5pdGlhbFNpemUpOwogICAgIH5TdHJlYW1pbmdWZXJ0ZXhC
dWZmZXIoKTsKIAotICAgIHZvaWQgKm1hcChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0
ZSwgVUlOVCByZXF1aXJlZFNwYWNlLCBVSU5UICpzdHJlYW1PZmZzZXQpOworICAgIHZvaWQgKm1h
cChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgc3RkOjpzaXplX3QgcmVxdWlyZWRT
cGFjZSwgc3RkOjpzaXplX3QgKnN0cmVhbU9mZnNldCk7CiAgICAgdm9pZCByZXNlcnZlUmVxdWly
ZWRTcGFjZSgpOwogfTsKIApAQCAtOTEsMjAgKzg5LDIxIEBAIGNsYXNzIFN0YXRpY1ZlcnRleEJ1
ZmZlciA6IHB1YmxpYyBBcnJheVZlcnRleEJ1ZmZlcgogICAgIGV4cGxpY2l0IFN0YXRpY1ZlcnRl
eEJ1ZmZlcihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UpOwogICAgIH5TdGF0aWNWZXJ0ZXhCdWZm
ZXIoKTsKIAotICAgIHZvaWQgKm1hcChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwg
VUlOVCByZXF1aXJlZFNwYWNlLCBVSU5UICpzdHJlYW1PZmZzZXQpOworICAgIHZvaWQgKm1hcChj
b25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgc3RkOjpzaXplX3QgcmVxdWlyZWRTcGFj
ZSwgc3RkOjpzaXplX3QgKnN0cmVhbU9mZnNldCk7CiAgICAgdm9pZCByZXNlcnZlUmVxdWlyZWRT
cGFjZSgpOwogCi0gICAgVUlOVCBsb29rdXBBdHRyaWJ1dGUoY29uc3QgVmVydGV4QXR0cmlidXRl
ICZhdHRyaWJ1dGUpOyAgIC8vIFJldHVybnMgdGhlIG9mZnNldCBpbnRvIHRoZSB2ZXJ0ZXggYnVm
ZmVyLCBvciAtMSBpZiBub3QgZm91bmQKKyAgICBzdGQ6OnNpemVfdCBsb29rdXBBdHRyaWJ1dGUo
Y29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUpOyAgIC8vIFJldHVybnMgdGhlIG9mZnNl
dCBpbnRvIHRoZSB2ZXJ0ZXggYnVmZmVyLCBvciAtMSBpZiBub3QgZm91bmQKIAogICBwcml2YXRl
OgogICAgIHN0cnVjdCBWZXJ0ZXhFbGVtZW50CiAgICAgewogICAgICAgICBHTGVudW0gdHlwZTsK
ICAgICAgICAgR0xpbnQgc2l6ZTsKKyAgICAgICAgR0xzaXplaSBzdHJpZGU7CiAgICAgICAgIGJv
b2wgbm9ybWFsaXplZDsKICAgICAgICAgaW50IGF0dHJpYnV0ZU9mZnNldDsKIAotICAgICAgICBV
SU5UIHN0cmVhbU9mZnNldDsKKyAgICAgICAgc3RkOjpzaXplX3Qgc3RyZWFtT2Zmc2V0OwogICAg
IH07CiAKICAgICBzdGQ6OnZlY3RvcjxWZXJ0ZXhFbGVtZW50PiBtQ2FjaGU7CkBAIC0xMjMsOCAr
MTIyLDggQEAgY2xhc3MgVmVydGV4RGF0YU1hbmFnZXIKICAgcHJpdmF0ZToKICAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oVmVydGV4RGF0YU1hbmFnZXIpOwogCi0gICAgVUlOVCBzcGFjZVJl
cXVpcmVkKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3VudCkg
Y29uc3Q7Ci0gICAgVUlOVCB3cml0ZUF0dHJpYnV0ZURhdGEoQXJyYXlWZXJ0ZXhCdWZmZXIgKnZl
cnRleEJ1ZmZlciwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIGNvbnN0IFZlcnRleEF0dHJp
YnV0ZSAmYXR0cmlidXRlKTsKKyAgICBzdGQ6OnNpemVfdCBzcGFjZVJlcXVpcmVkKGNvbnN0IFZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3VudCkgY29uc3Q7CisgICAgc3Rk
OjpzaXplX3Qgd3JpdGVBdHRyaWJ1dGVEYXRhKEFycmF5VmVydGV4QnVmZmVyICp2ZXJ0ZXhCdWZm
ZXIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYnV0ZSk7CiAKICAgICBDb250ZXh0ICpjb25zdCBtQ29udGV4dDsKICAgICBJRGlyZWN0M0RE
ZXZpY2U5ICpjb25zdCBtRGV2aWNlOwpAQCAtMTMyLDcgKzEzMSw4IEBAIGNsYXNzIFZlcnRleERh
dGFNYW5hZ2VyCiAgICAgU3RyZWFtaW5nVmVydGV4QnVmZmVyICptU3RyZWFtaW5nQnVmZmVyOwog
CiAgICAgYm9vbCBtRGlydHlDdXJyZW50VmFsdWVbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKLSAgICBD
b25zdGFudFZlcnRleEJ1ZmZlciAqbUN1cnJlbnRWYWx1ZUJ1ZmZlcltNQVhfVkVSVEVYX0FUVFJJ
QlNdOworICAgIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlciAqbUN1cnJlbnRWYWx1ZUJ1ZmZlcltNQVhf
VkVSVEVYX0FUVFJJQlNdOworICAgIHN0ZDo6c2l6ZV90IG1DdXJyZW50VmFsdWVPZmZzZXRzW01B
WF9WRVJURVhfQVRUUklCU107CiAKICAgICAvLyBBdHRyaWJ1dGUgZm9ybWF0IGNvbnZlcnNpb24K
ICAgICBzdHJ1Y3QgRm9ybWF0Q29udmVydGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dlb21ldHJ5L0luZGV4RGF0YU1hbmFnZXIuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9nZW9tZXRyeS9JbmRleERhdGFNYW5h
Z2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc5ZDYwNjc3MTU3MjhlYjYx
NDI1YmVhYTczMTdkOGE0ODYxZmZhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dlb21l
dHJ5L0luZGV4RGF0YU1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzgyICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIGdlb21ldHJ5L0luZGV4RGF0YU1hbmFnZXIuY3BwOiBE
ZWZpbmVzIHRoZSBJbmRleERhdGFNYW5hZ2VyLCBhIGNsYXNzIHRoYXQKLS8vIHJ1bnMgdGhlIEJ1
ZmZlciB0cmFuc2xhdGlvbiBwcm9jZXNzIGZvciBpbmRleCBidWZmZXJzLgotCi0jaW5jbHVkZSAi
bGliR0xFU3YyL2dlb21ldHJ5L0luZGV4RGF0YU1hbmFnZXIuaCIKLQotI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgotCi0jaW5jbHVkZSAibGliR0xFU3YyL0J1ZmZlci5oIgotI2luY2x1ZGUgImxp
YkdMRVN2Mi9tYXRodXRpbC5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCi0KLW5hbWVz
cGFjZQotewotICAgIGVudW0geyBJTklUSUFMX0lOREVYX0JVRkZFUl9TSVpFID0gNDA5NiAqIHNp
emVvZihHTHVpbnQpIH07Ci19Ci0KLW5hbWVzcGFjZSBnbAotewotCi1JbmRleERhdGFNYW5hZ2Vy
OjpJbmRleERhdGFNYW5hZ2VyKENvbnRleHQgKmNvbnRleHQsIElEaXJlY3QzRERldmljZTkgKmRl
dmljZSkgOiBtRGV2aWNlKGRldmljZSkKLXsKLSAgICBtU3RyZWFtaW5nQnVmZmVyU2hvcnQgPSBu
ZXcgU3RyZWFtaW5nSW5kZXhCdWZmZXIobURldmljZSwgSU5JVElBTF9JTkRFWF9CVUZGRVJfU0la
RSwgRDNERk1UX0lOREVYMTYpOwotCi0gICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzMzJiaXRJbmRp
Y2VzKCkpCi0gICAgewotICAgICAgICBtU3RyZWFtaW5nQnVmZmVySW50ID0gbmV3IFN0cmVhbWlu
Z0luZGV4QnVmZmVyKG1EZXZpY2UsIElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUsIEQzREZNVF9J
TkRFWDMyKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgbVN0cmVhbWluZ0J1ZmZl
ckludCA9IE5VTEw7Ci0gICAgfQotfQotCi1JbmRleERhdGFNYW5hZ2VyOjp+SW5kZXhEYXRhTWFu
YWdlcigpCi17Ci0gICAgZGVsZXRlIG1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKLSAgICBkZWxldGUg
bVN0cmVhbWluZ0J1ZmZlckludDsKLX0KLQotdm9pZCBjb252ZXJ0SW5kaWNlcyhHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCAqaW5wdXQsIEdMc2l6ZWkgY291bnQsIHZvaWQgKm91dHB1dCkKLXsKLSAg
ICBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQotICAgIHsKLSAgICAgICAgY29uc3QgR0x1
Ynl0ZSAqaW4gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5wdXQpOwotICAgICAgICBH
THVzaG9ydCAqb3V0ID0gc3RhdGljX2Nhc3Q8R0x1c2hvcnQqPihvdXRwdXQpOwotCi0gICAgICAg
IGZvciAoR0xzaXplaSBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG91dFtpXSA9IGluW2ldOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKHR5cGUg
PT0gR0xfVU5TSUdORURfSU5UKQotICAgIHsKLSAgICAgICAgbWVtY3B5KG91dHB1dCwgaW5wdXQs
IGNvdW50ICogc2l6ZW9mKEdMdWludCkpOwotICAgIH0KLSAgICBlbHNlIGlmICh0eXBlID09IEdM
X1VOU0lHTkVEX1NIT1JUKQotICAgIHsKLSAgICAgICAgbWVtY3B5KG91dHB1dCwgaW5wdXQsIGNv
dW50ICogc2l6ZW9mKEdMdXNob3J0KSk7Ci0gICAgfQotICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsK
LX0KLQotdGVtcGxhdGUgPGNsYXNzIEluZGV4VHlwZT4KLXZvaWQgY29tcHV0ZVJhbmdlKGNvbnN0
IEluZGV4VHlwZSAqaW5kaWNlcywgR0xzaXplaSBjb3VudCwgR0x1aW50ICptaW5JbmRleCwgR0x1
aW50ICptYXhJbmRleCkKLXsKLSAgICAqbWluSW5kZXggPSBpbmRpY2VzWzBdOwotICAgICptYXhJ
bmRleCA9IGluZGljZXNbMF07Ci0KLSAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKQotICAgIHsKLSAgICAgICAgaWYgKCptaW5JbmRleCA+IGluZGljZXNbaV0pICptaW5JbmRl
eCA9IGluZGljZXNbaV07Ci0gICAgICAgIGlmICgqbWF4SW5kZXggPCBpbmRpY2VzW2ldKSAqbWF4
SW5kZXggPSBpbmRpY2VzW2ldOwotICAgIH0KLX0KLQotdm9pZCBjb21wdXRlUmFuZ2UoR0xlbnVt
IHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgY291bnQsIEdMdWludCAqbWluSW5k
ZXgsIEdMdWludCAqbWF4SW5kZXgpCi17Ci0gICAgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfQllU
RSkKLSAgICB7Ci0gICAgICAgIGNvbXB1dGVSYW5nZShzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRl
Kj4oaW5kaWNlcyksIGNvdW50LCBtaW5JbmRleCwgbWF4SW5kZXgpOwotICAgIH0KLSAgICBlbHNl
IGlmICh0eXBlID09IEdMX1VOU0lHTkVEX0lOVCkKLSAgICB7Ci0gICAgICAgIGNvbXB1dGVSYW5n
ZShzdGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRpY2VzKSwgY291bnQsIG1pbkluZGV4LCBt
YXhJbmRleCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfU0hPUlQp
Ci0gICAgewotICAgICAgICBjb21wdXRlUmFuZ2Uoc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQq
PihpbmRpY2VzKSwgY291bnQsIG1pbkluZGV4LCBtYXhJbmRleCk7Ci0gICAgfQotICAgIGVsc2Ug
VU5SRUFDSEFCTEUoKTsKLX0KLQotR0xlbnVtIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRl
eERhdGEoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgY291bnQsIEJ1ZmZlciAqYnVmZmVyLCBjb25zdCB2
b2lkICppbmRpY2VzLCBUcmFuc2xhdGVkSW5kZXhEYXRhICp0cmFuc2xhdGVkKQotewotICAgIEQz
REZPUk1BVCBmb3JtYXQgPSAodHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpID8gRDNERk1UX0lOREVY
MzIgOiBEM0RGTVRfSU5ERVgxNjsKLSAgICBpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9j
YXN0PGludHB0cl90PihpbmRpY2VzKTsKLSAgICBib29sIGFsaWduZWRPZmZzZXQgPSBmYWxzZTsK
LQotICAgIGlmIChidWZmZXIgIT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkK
LSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURTogIGFsaWduZWRPZmZz
ZXQgPSAob2Zmc2V0ICUgc2l6ZW9mKEdMdWJ5dGUpID09IDApOyAgYnJlYWs7Ci0gICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9TSE9SVDogYWxpZ25lZE9mZnNldCA9IChvZmZzZXQgJSBzaXplb2Yo
R0x1c2hvcnQpID09IDApOyBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDog
ICBhbGlnbmVkT2Zmc2V0ID0gKG9mZnNldCAlIHNpemVvZihHTHVpbnQpID09IDApOyAgIGJyZWFr
OwotICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IGFsaWduZWRPZmZzZXQgPSBmYWxz
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0eXBlU2l6ZSh0eXBlKSAqIGNvdW50ICsgb2Zm
c2V0ID4gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KGJ1ZmZlci0+c2l6ZSgpKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOwotICAgICAgICB9Ci0K
LSAgICAgICAgaW5kaWNlcyA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihidWZmZXItPmRh
dGEoKSkgKyBvZmZzZXQ7Ci0gICAgfQotCi0gICAgU3RyZWFtaW5nSW5kZXhCdWZmZXIgKnN0cmVh
bWluZ0J1ZmZlciA9ICh0eXBlID09IEdMX1VOU0lHTkVEX0lOVCkgPyBtU3RyZWFtaW5nQnVmZmVy
SW50IDogbVN0cmVhbWluZ0J1ZmZlclNob3J0OwotCi0gICAgU3RhdGljSW5kZXhCdWZmZXIgKnN0
YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0SW5kZXhCdWZmZXIoKSA6IE5VTEw7Ci0g
ICAgSW5kZXhCdWZmZXIgKmluZGV4QnVmZmVyID0gc3RyZWFtaW5nQnVmZmVyOwotICAgIFVJTlQg
c3RyZWFtT2Zmc2V0ID0gMDsKLQotICAgIGlmIChzdGF0aWNCdWZmZXIgJiYgc3RhdGljQnVmZmVy
LT5sb29rdXBUeXBlKHR5cGUpICYmIGFsaWduZWRPZmZzZXQpCi0gICAgewotICAgICAgICBpbmRl
eEJ1ZmZlciA9IHN0YXRpY0J1ZmZlcjsKLSAgICAgICAgc3RyZWFtT2Zmc2V0ID0gc3RhdGljQnVm
ZmVyLT5sb29rdXBSYW5nZShvZmZzZXQsIGNvdW50LCAmdHJhbnNsYXRlZC0+bWluSW5kZXgsICZ0
cmFuc2xhdGVkLT5tYXhJbmRleCk7Ci0KLSAgICAgICAgaWYgKHN0cmVhbU9mZnNldCA9PSAtMSkK
LSAgICAgICAgewotICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gKG9mZnNldCAvIHR5cGVTaXpl
KHR5cGUpKSAqIGluZGV4U2l6ZShmb3JtYXQpOwotICAgICAgICAgICAgY29tcHV0ZVJhbmdlKHR5
cGUsIGluZGljZXMsIGNvdW50LCAmdHJhbnNsYXRlZC0+bWluSW5kZXgsICZ0cmFuc2xhdGVkLT5t
YXhJbmRleCk7Ci0gICAgICAgICAgICBzdGF0aWNCdWZmZXItPmFkZFJhbmdlKG9mZnNldCwgY291
bnQsIHRyYW5zbGF0ZWQtPm1pbkluZGV4LCB0cmFuc2xhdGVkLT5tYXhJbmRleCwgc3RyZWFtT2Zm
c2V0KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBpbnQgY29u
dmVydENvdW50ID0gY291bnQ7Ci0KLSAgICAgICAgaWYgKHN0YXRpY0J1ZmZlcikKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKHN0YXRpY0J1ZmZlci0+c2l6ZSgpID09IDAgJiYgYWxpZ25lZE9m
ZnNldCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbmRleEJ1ZmZlciA9IHN0YXRp
Y0J1ZmZlcjsKLSAgICAgICAgICAgICAgICBjb252ZXJ0Q291bnQgPSBidWZmZXItPnNpemUoKSAv
IHR5cGVTaXplKHR5cGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGJ1ZmZlci0+aW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsK
LSAgICAgICAgICAgICAgICBzdGF0aWNCdWZmZXIgPSBOVUxMOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgdm9pZCAqb3V0cHV0ID0gTlVMTDsKLSAgICAgICAgCi0gICAgICAg
IGlmIChpbmRleEJ1ZmZlcikKLSAgICAgICAgewotICAgICAgICAgICAgaW5kZXhCdWZmZXItPnJl
c2VydmVTcGFjZShjb252ZXJ0Q291bnQgKiBpbmRleFNpemUoZm9ybWF0KSwgdHlwZSk7Ci0gICAg
ICAgICAgICBvdXRwdXQgPSBpbmRleEJ1ZmZlci0+bWFwKGluZGV4U2l6ZShmb3JtYXQpICogY29u
dmVydENvdW50LCAmc3RyZWFtT2Zmc2V0KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
aWYgKG91dHB1dCA9PSBOVUxMKQotICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIkZhaWxlZCB0
byBtYXAgaW5kZXggYnVmZmVyLiIpOwotICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1P
Ulk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb252ZXJ0SW5kaWNlcyh0eXBlLCBzdGF0aWNCdWZm
ZXIgPyBidWZmZXItPmRhdGEoKSA6IGluZGljZXMsIGNvbnZlcnRDb3VudCwgb3V0cHV0KTsKLSAg
ICAgICAgaW5kZXhCdWZmZXItPnVubWFwKCk7Ci0KLSAgICAgICAgY29tcHV0ZVJhbmdlKHR5cGUs
IGluZGljZXMsIGNvdW50LCAmdHJhbnNsYXRlZC0+bWluSW5kZXgsICZ0cmFuc2xhdGVkLT5tYXhJ
bmRleCk7Ci0KLSAgICAgICAgaWYgKHN0YXRpY0J1ZmZlcikKLSAgICAgICAgewotICAgICAgICAg
ICAgc3RyZWFtT2Zmc2V0ID0gKG9mZnNldCAvIHR5cGVTaXplKHR5cGUpKSAqIGluZGV4U2l6ZShm
b3JtYXQpOwotICAgICAgICAgICAgc3RhdGljQnVmZmVyLT5hZGRSYW5nZShvZmZzZXQsIGNvdW50
LCB0cmFuc2xhdGVkLT5taW5JbmRleCwgdHJhbnNsYXRlZC0+bWF4SW5kZXgsIHN0cmVhbU9mZnNl
dCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0cmFuc2xhdGVkLT5pbmRleEJ1ZmZlciA9IGlu
ZGV4QnVmZmVyLT5nZXRCdWZmZXIoKTsKLSAgICB0cmFuc2xhdGVkLT5zdGFydEluZGV4ID0gc3Ry
ZWFtT2Zmc2V0IC8gaW5kZXhTaXplKGZvcm1hdCk7Ci0KLSAgICByZXR1cm4gR0xfTk9fRVJST1I7
Ci19Ci0KLXN0ZDo6c2l6ZV90IEluZGV4RGF0YU1hbmFnZXI6OmluZGV4U2l6ZShEM0RGT1JNQVQg
Zm9ybWF0KSBjb25zdAotewotICAgIHJldHVybiAoZm9ybWF0ID09IEQzREZNVF9JTkRFWDMyKSA/
IHNpemVvZih1bnNpZ25lZCBpbnQpIDogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKLX0KLQotc3Rk
OjpzaXplX3QgSW5kZXhEYXRhTWFuYWdlcjo6dHlwZVNpemUoR0xlbnVtIHR5cGUpIGNvbnN0Ci17
Ci0gICAgc3dpdGNoICh0eXBlKQotICAgIHsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOiAg
IHJldHVybiBzaXplb2YoR0x1aW50KTsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IHJl
dHVybiBzaXplb2YoR0x1c2hvcnQpOwotICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgcmV0
dXJuIHNpemVvZihHTHVieXRlKTsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVy
biBzaXplb2YoR0x1c2hvcnQpOwotICAgIH0KLX0KLQotSW5kZXhCdWZmZXI6OkluZGV4QnVmZmVy
KElEaXJlY3QzRERldmljZTkgKmRldmljZSwgVUlOVCBzaXplLCBEM0RGT1JNQVQgZm9ybWF0KSA6
IG1EZXZpY2UoZGV2aWNlKSwgbUJ1ZmZlclNpemUoc2l6ZSksIG1JbmRleEJ1ZmZlcihOVUxMKQot
ewotICAgIGlmIChzaXplID4gMCkKLSAgICB7Ci0gICAgICAgIEQzRFBPT0wgcG9vbCA9IGdldERp
c3BsYXkoKS0+Z2V0QnVmZmVyUG9vbChEM0RVU0FHRV9EWU5BTUlDIHwgRDNEVVNBR0VfV1JJVEVP
TkxZKTsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUluZGV4QnVmZmVy
KHNpemUsIEQzRFVTQUdFX0RZTkFNSUMgfCBEM0RVU0FHRV9XUklURU9OTFksIGZvcm1hdCwgcG9v
bCwgJm1JbmRleEJ1ZmZlciwgTlVMTCk7Ci0KLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIk91dCBvZiBtZW1vcnkgYWxsb2NhdGluZyBhbiBp
bmRleCBidWZmZXIgb2Ygc2l6ZSAlbHUuIiwgc2l6ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LUluZGV4QnVmZmVyOjp+SW5kZXhCdWZmZXIoKQotewotICAgIGlmIChtSW5kZXhCdWZmZXIpCi0g
ICAgewotICAgICAgICBtSW5kZXhCdWZmZXItPlJlbGVhc2UoKTsKLSAgICB9Ci19Ci0KLUlEaXJl
Y3QzREluZGV4QnVmZmVyOSAqSW5kZXhCdWZmZXI6OmdldEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1JbmRleEJ1ZmZlcjsKLX0KLQotdm9pZCBJbmRleEJ1ZmZlcjo6dW5tYXAoKQotewot
ICAgIGlmIChtSW5kZXhCdWZmZXIpCi0gICAgewotICAgICAgICBtSW5kZXhCdWZmZXItPlVubG9j
aygpOwotICAgIH0KLX0KLQotU3RyZWFtaW5nSW5kZXhCdWZmZXI6OlN0cmVhbWluZ0luZGV4QnVm
ZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgVUlOVCBpbml0aWFsU2l6ZSwgRDNERk9STUFU
IGZvcm1hdCkgOiBJbmRleEJ1ZmZlcihkZXZpY2UsIGluaXRpYWxTaXplLCBmb3JtYXQpCi17Ci0g
ICAgbVdyaXRlUG9zaXRpb24gPSAwOwotfQotCi1TdHJlYW1pbmdJbmRleEJ1ZmZlcjo6flN0cmVh
bWluZ0luZGV4QnVmZmVyKCkKLXsKLX0KLQotdm9pZCAqU3RyZWFtaW5nSW5kZXhCdWZmZXI6Om1h
cChVSU5UIHJlcXVpcmVkU3BhY2UsIFVJTlQgKm9mZnNldCkKLXsKLSAgICB2b2lkICptYXBQdHIg
PSBOVUxMOwotCi0gICAgaWYgKG1JbmRleEJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gbUluZGV4QnVmZmVyLT5Mb2NrKG1Xcml0ZVBvc2l0aW9uLCByZXF1aXJlZFNwYWNl
LCAmbWFwUHRyLCBEM0RMT0NLX05PT1ZFUldSSVRFKTsKLSAgICAgCi0gICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgRVJSKCIgTG9jayBmYWlsZWQgd2l0
aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAg
ICAgIH0KLQotICAgICAgICAqb2Zmc2V0ID0gbVdyaXRlUG9zaXRpb247Ci0gICAgICAgIG1Xcml0
ZVBvc2l0aW9uICs9IHJlcXVpcmVkU3BhY2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1hcFB0cjsK
LX0KLQotdm9pZCBTdHJlYW1pbmdJbmRleEJ1ZmZlcjo6cmVzZXJ2ZVNwYWNlKFVJTlQgcmVxdWly
ZWRTcGFjZSwgR0xlbnVtIHR5cGUpCi17Ci0gICAgaWYgKHJlcXVpcmVkU3BhY2UgPiBtQnVmZmVy
U2l6ZSkKLSAgICB7Ci0gICAgICAgIGlmIChtSW5kZXhCdWZmZXIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIG1JbmRleEJ1ZmZlci0+UmVsZWFzZSgpOwotICAgICAgICAgICAgbUluZGV4QnVmZmVy
ID0gTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgIG1CdWZmZXJTaXplID0gc3RkOjptYXgocmVx
dWlyZWRTcGFjZSwgMiAqIG1CdWZmZXJTaXplKTsKLQotICAgICAgICBEM0RQT09MIHBvb2wgPSBn
ZXREaXNwbGF5KCktPmdldEJ1ZmZlclBvb2woRDNEVVNBR0VfRFlOQU1JQyB8IEQzRFVTQUdFX1dS
SVRFT05MWSk7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlSW5kZXhC
dWZmZXIobUJ1ZmZlclNpemUsIEQzRFVTQUdFX0RZTkFNSUMgfCBEM0RVU0FHRV9XUklURU9OTFks
IHR5cGUgPT0gR0xfVU5TSUdORURfSU5UID8gRDNERk1UX0lOREVYMzIgOiBEM0RGTVRfSU5ERVgx
NiwgcG9vbCwgJm1JbmRleEJ1ZmZlciwgTlVMTCk7Ci0gICAgCi0gICAgICAgIGlmIChGQUlMRUQo
cmVzdWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgRVJSKCJPdXQgb2YgbWVtb3J5IGFsbG9j
YXRpbmcgYSB2ZXJ0ZXggYnVmZmVyIG9mIHNpemUgJWx1LiIsIG1CdWZmZXJTaXplKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIG1Xcml0ZVBvc2l0aW9uID0gMDsKLSAgICB9Ci0gICAgZWxzZSBpZiAo
bVdyaXRlUG9zaXRpb24gKyByZXF1aXJlZFNwYWNlID4gbUJ1ZmZlclNpemUpICAgLy8gUmVjeWNs
ZQotICAgIHsKLSAgICAgICAgdm9pZCAqZHVtbXk7Ci0gICAgICAgIG1JbmRleEJ1ZmZlci0+TG9j
aygwLCAxLCAmZHVtbXksIEQzRExPQ0tfRElTQ0FSRCk7Ci0gICAgICAgIG1JbmRleEJ1ZmZlci0+
VW5sb2NrKCk7Ci0KLSAgICAgICAgbVdyaXRlUG9zaXRpb24gPSAwOwotICAgIH0KLX0KLQotU3Rh
dGljSW5kZXhCdWZmZXI6OlN0YXRpY0luZGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmlj
ZSkgOiBJbmRleEJ1ZmZlcihkZXZpY2UsIDAsIEQzREZNVF9VTktOT1dOKQotewotICAgIG1DYWNo
ZVR5cGUgPSBHTF9OT05FOwotfQotCi1TdGF0aWNJbmRleEJ1ZmZlcjo6flN0YXRpY0luZGV4QnVm
ZmVyKCkKLXsKLX0KLQotdm9pZCAqU3RhdGljSW5kZXhCdWZmZXI6Om1hcChVSU5UIHJlcXVpcmVk
U3BhY2UsIFVJTlQgKm9mZnNldCkKLXsKLSAgICB2b2lkICptYXBQdHIgPSBOVUxMOwotCi0gICAg
aWYgKG1JbmRleEJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbUluZGV4
QnVmZmVyLT5Mb2NrKDAsIHJlcXVpcmVkU3BhY2UsICZtYXBQdHIsIDApOwotICAgICAKLSAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIiBMb2Nr
IGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4eCIsIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4g
TlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgICpvZmZzZXQgPSAwOwotICAgIH0KLQotICAgIHJl
dHVybiBtYXBQdHI7Ci19Ci0KLXZvaWQgU3RhdGljSW5kZXhCdWZmZXI6OnJlc2VydmVTcGFjZShV
SU5UIHJlcXVpcmVkU3BhY2UsIEdMZW51bSB0eXBlKQotewotICAgIGlmICghbUluZGV4QnVmZmVy
ICYmIG1CdWZmZXJTaXplID09IDApCi0gICAgewotICAgICAgICBEM0RQT09MIHBvb2wgPSBnZXRE
aXNwbGF5KCktPmdldEJ1ZmZlclBvb2woRDNEVVNBR0VfV1JJVEVPTkxZKTsKLSAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVJbmRleEJ1ZmZlcihyZXF1aXJlZFNwYWNlLCBE
M0RVU0FHRV9XUklURU9OTFksIHR5cGUgPT0gR0xfVU5TSUdORURfSU5UID8gRDNERk1UX0lOREVY
MzIgOiBEM0RGTVRfSU5ERVgxNiwgcG9vbCwgJm1JbmRleEJ1ZmZlciwgTlVMTCk7Ci0gICAgCi0g
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgRVJSKCJP
dXQgb2YgbWVtb3J5IGFsbG9jYXRpbmcgYSB2ZXJ0ZXggYnVmZmVyIG9mIHNpemUgJWx1LiIsIG1C
dWZmZXJTaXplKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1CdWZmZXJTaXplID0gcmVxdWlyZWRT
cGFjZTsKLSAgICAgICAgbUNhY2hlVHlwZSA9IHR5cGU7Ci0gICAgfQotICAgIGVsc2UgaWYgKG1J
bmRleEJ1ZmZlciAmJiBtQnVmZmVyU2l6ZSA+PSByZXF1aXJlZFNwYWNlICYmIG1DYWNoZVR5cGUg
PT0gdHlwZSkKLSAgICB7Ci0gICAgICAgIC8vIEFscmVhZHkgYWxsb2NhdGVkCi0gICAgfQotICAg
IGVsc2UgVU5SRUFDSEFCTEUoKTsgICAvLyBTdGF0aWMgaW5kZXggYnVmZmVycyBjYW4ndCBiZSBy
ZXNpemVkCi19Ci0KLWJvb2wgU3RhdGljSW5kZXhCdWZmZXI6Omxvb2t1cFR5cGUoR0xlbnVtIHR5
cGUpCi17Ci0gICAgcmV0dXJuIG1DYWNoZVR5cGUgPT0gdHlwZTsKLX0KLQotVUlOVCBTdGF0aWNJ
bmRleEJ1ZmZlcjo6bG9va3VwUmFuZ2UoaW50cHRyX3Qgb2Zmc2V0LCBHTHNpemVpIGNvdW50LCBV
SU5UICptaW5JbmRleCwgVUlOVCAqbWF4SW5kZXgpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQg
cmFuZ2UgPSAwOyByYW5nZSA8IG1DYWNoZS5zaXplKCk7IHJhbmdlKyspCi0gICAgewotICAgICAg
ICBpZiAobUNhY2hlW3JhbmdlXS5vZmZzZXQgPT0gb2Zmc2V0ICYmIG1DYWNoZVtyYW5nZV0uY291
bnQgPT0gY291bnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgICptaW5JbmRleCA9IG1DYWNoZVty
YW5nZV0ubWluSW5kZXg7Ci0gICAgICAgICAgICAqbWF4SW5kZXggPSBtQ2FjaGVbcmFuZ2VdLm1h
eEluZGV4OwotCi0gICAgICAgICAgICByZXR1cm4gbUNhY2hlW3JhbmdlXS5zdHJlYW1PZmZzZXQ7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gLTE7Ci19Ci0KLXZvaWQgU3RhdGljSW5k
ZXhCdWZmZXI6OmFkZFJhbmdlKGludHB0cl90IG9mZnNldCwgR0xzaXplaSBjb3VudCwgVUlOVCBt
aW5JbmRleCwgVUlOVCBtYXhJbmRleCwgVUlOVCBzdHJlYW1PZmZzZXQpCi17Ci0gICAgSW5kZXhS
YW5nZSBpbmRleFJhbmdlID0ge29mZnNldCwgY291bnQsIG1pbkluZGV4LCBtYXhJbmRleCwgc3Ry
ZWFtT2Zmc2V0fTsKLSAgICBtQ2FjaGUucHVzaF9iYWNrKGluZGV4UmFuZ2UpOwotfQotCi19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dlb21ldHJ5
L0luZGV4RGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvZ2VvbWV0cnkvSW5kZXhEYXRhTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNDgyNDljNzkzZWQzOTU3OWMxOGM5NGI5NDhkODRjMGNhMTJlY2M0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvZ2VvbWV0cnkvSW5kZXhEYXRhTWFuYWdlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTIwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIGdlb21ldHJ5L0lu
ZGV4RGF0YU1hbmFnZXIuaDogRGVmaW5lcyB0aGUgSW5kZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0
aGF0Ci0vLyBydW5zIHRoZSBCdWZmZXIgdHJhbnNsYXRpb24gcHJvY2VzcyBmb3IgaW5kZXggYnVm
ZmVycy4KLQotI2lmbmRlZiBMSUJHTEVTVjJfR0VPTUVUUllfSU5ERVhEQVRBTUFOQUdFUl9IXwot
I2RlZmluZSBMSUJHTEVTVjJfR0VPTUVUUllfSU5ERVhEQVRBTUFOQUdFUl9IXwotCi0jaW5jbHVk
ZSA8dmVjdG9yPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNkZWZpbmUgR0xfQVBJQ0FMTAotI2lu
Y2x1ZGUgPEdMRVMyL2dsMi5oPgotCi0jaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKLQot
bmFtZXNwYWNlIGdsCi17Ci0KLXN0cnVjdCBUcmFuc2xhdGVkSW5kZXhEYXRhCi17Ci0gICAgVUlO
VCBtaW5JbmRleDsKLSAgICBVSU5UIG1heEluZGV4OwotICAgIFVJTlQgc3RhcnRJbmRleDsKLQot
ICAgIElEaXJlY3QzREluZGV4QnVmZmVyOSAqaW5kZXhCdWZmZXI7Ci19OwotCi1jbGFzcyBJbmRl
eEJ1ZmZlcgotewotICBwdWJsaWM6Ci0gICAgSW5kZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAq
ZGV2aWNlLCBVSU5UIHNpemUsIEQzREZPUk1BVCBmb3JtYXQpOwotICAgIHZpcnR1YWwgfkluZGV4
QnVmZmVyKCk7Ci0KLSAgICBVSU5UIHNpemUoKSBjb25zdCB7IHJldHVybiBtQnVmZmVyU2l6ZTsg
fQotICAgIHZpcnR1YWwgdm9pZCAqbWFwKFVJTlQgcmVxdWlyZWRTcGFjZSwgVUlOVCAqb2Zmc2V0
KSA9IDA7Ci0gICAgdm9pZCB1bm1hcCgpOwotICAgIHZpcnR1YWwgdm9pZCByZXNlcnZlU3BhY2Uo
VUlOVCByZXF1aXJlZFNwYWNlLCBHTGVudW0gdHlwZSkgPSAwOwotCi0gICAgSURpcmVjdDNESW5k
ZXhCdWZmZXI5ICpnZXRCdWZmZXIoKSBjb25zdDsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgSURpcmVj
dDNERGV2aWNlOSAqY29uc3QgbURldmljZTsKLQotICAgIElEaXJlY3QzREluZGV4QnVmZmVyOSAq
bUluZGV4QnVmZmVyOwotICAgIFVJTlQgbUJ1ZmZlclNpemU7Ci0KLSAgcHJpdmF0ZToKLSAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oSW5kZXhCdWZmZXIpOwotfTsKLQotY2xhc3MgU3RyZWFt
aW5nSW5kZXhCdWZmZXIgOiBwdWJsaWMgSW5kZXhCdWZmZXIKLXsKLSAgcHVibGljOgotICAgIFN0
cmVhbWluZ0luZGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgVUlOVCBpbml0aWFs
U2l6ZSwgRDNERk9STUFUIGZvcm1hdCk7Ci0gICAgflN0cmVhbWluZ0luZGV4QnVmZmVyKCk7Ci0K
LSAgICB2b2lkICptYXAoVUlOVCByZXF1aXJlZFNwYWNlLCBVSU5UICpvZmZzZXQpOwotICAgIHZv
aWQgcmVzZXJ2ZVNwYWNlKFVJTlQgcmVxdWlyZWRTcGFjZSwgR0xlbnVtIHR5cGUpOwotCi0gIHBy
aXZhdGU6Ci0gICAgVUlOVCBtV3JpdGVQb3NpdGlvbjsKLX07Ci0KLWNsYXNzIFN0YXRpY0luZGV4
QnVmZmVyIDogcHVibGljIEluZGV4QnVmZmVyCi17Ci0gIHB1YmxpYzoKLSAgICBleHBsaWNpdCBT
dGF0aWNJbmRleEJ1ZmZlcihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UpOwotICAgIH5TdGF0aWNJ
bmRleEJ1ZmZlcigpOwotCi0gICAgdm9pZCAqbWFwKFVJTlQgcmVxdWlyZWRTcGFjZSwgVUlOVCAq
b2Zmc2V0KTsKLSAgICB2b2lkIHJlc2VydmVTcGFjZShVSU5UIHJlcXVpcmVkU3BhY2UsIEdMZW51
bSB0eXBlKTsKLQotICAgIGJvb2wgbG9va3VwVHlwZShHTGVudW0gdHlwZSk7Ci0gICAgVUlOVCBs
b29rdXBSYW5nZShpbnRwdHJfdCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIFVJTlQgKm1pbkluZGV4
LCBVSU5UICptYXhJbmRleCk7ICAgLy8gUmV0dXJucyB0aGUgb2Zmc2V0IGludG8gdGhlIGluZGV4
IGJ1ZmZlciwgb3IgLTEgaWYgbm90IGZvdW5kCi0gICAgdm9pZCBhZGRSYW5nZShpbnRwdHJfdCBv
ZmZzZXQsIEdMc2l6ZWkgY291bnQsIFVJTlQgbWluSW5kZXgsIFVJTlQgbWF4SW5kZXgsIFVJTlQg
c3RyZWFtT2Zmc2V0KTsKLQotICBwcml2YXRlOgotICAgIEdMZW51bSBtQ2FjaGVUeXBlOwotICAg
IAotICAgIHN0cnVjdCBJbmRleFJhbmdlCi0gICAgewotICAgICAgICBpbnRwdHJfdCBvZmZzZXQ7
Ci0gICAgICAgIEdMc2l6ZWkgY291bnQ7Ci0KLSAgICAgICAgVUlOVCBtaW5JbmRleDsKLSAgICAg
ICAgVUlOVCBtYXhJbmRleDsKLSAgICAgICAgVUlOVCBzdHJlYW1PZmZzZXQ7Ci0gICAgfTsKLQot
ICAgIHN0ZDo6dmVjdG9yPEluZGV4UmFuZ2U+IG1DYWNoZTsKLX07Ci0KLWNsYXNzIEluZGV4RGF0
YU1hbmFnZXIKLXsKLSAgcHVibGljOgotICAgIEluZGV4RGF0YU1hbmFnZXIoQ29udGV4dCAqY29u
dGV4dCwgSURpcmVjdDNERGV2aWNlOSAqZXZpY2UpOwotICAgIHZpcnR1YWwgfkluZGV4RGF0YU1h
bmFnZXIoKTsKLQotICAgIEdMZW51bSBwcmVwYXJlSW5kZXhEYXRhKEdMZW51bSB0eXBlLCBHTHNp
emVpIGNvdW50LCBCdWZmZXIgKmFycmF5RWxlbWVudEJ1ZmZlciwgY29uc3Qgdm9pZCAqaW5kaWNl
cywgVHJhbnNsYXRlZEluZGV4RGF0YSAqdHJhbnNsYXRlZCk7Ci0KLSAgcHJpdmF0ZToKLSAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oSW5kZXhEYXRhTWFuYWdlcik7Ci0KLSAgICBzdGQ6OnNp
emVfdCB0eXBlU2l6ZShHTGVudW0gdHlwZSkgY29uc3Q7Ci0gICAgc3RkOjpzaXplX3QgaW5kZXhT
aXplKEQzREZPUk1BVCBmb3JtYXQpIGNvbnN0OwotCi0gICAgSURpcmVjdDNERGV2aWNlOSAqY29u
c3QgbURldmljZTsKLQotICAgIFN0cmVhbWluZ0luZGV4QnVmZmVyICptU3RyZWFtaW5nQnVmZmVy
U2hvcnQ7Ci0gICAgU3RyZWFtaW5nSW5kZXhCdWZmZXIgKm1TdHJlYW1pbmdCdWZmZXJJbnQ7Ci19
OwotCi19Ci0KLSNlbmRpZiAgIC8vIExJQkdMRVNWMl9HRU9NRVRSWV9JTkRFWERBVEFNQU5BR0VS
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dl
b21ldHJ5L1ZlcnRleERhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZ2VvbWV0cnkvVmVydGV4RGF0YU1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5OWVjZTE3NzVjOTMyNDZkNDYxODZiZDNiYzY0NTZlOGYyODg1OTRk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2VvbWV0cnkvVmVydGV4RGF0YU1hbmFnZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzY5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMp
IDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0K
LS8vIGdlb21ldHJ5L1ZlcnRleERhdGFNYW5hZ2VyLmg6IERlZmluZXMgdGhlIFZlcnRleERhdGFN
YW5hZ2VyLCBhIGNsYXNzIHRoYXQKLS8vIHJ1bnMgdGhlIEJ1ZmZlciB0cmFuc2xhdGlvbiBwcm9j
ZXNzLgotCi0jaW5jbHVkZSAibGliR0xFU3YyL2dlb21ldHJ5L1ZlcnRleERhdGFNYW5hZ2VyLmgi
Ci0KLSNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKLQotI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZm
ZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbS5oIgotI2luY2x1ZGUgImxpYkdMRVN2
Mi9tYWluLmgiCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIvZ2VvbWV0cnkvdmVydGV4Y29udmVyc2lv
bi5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9nZW9tZXRyeS9JbmRleERhdGFNYW5hZ2VyLmgiCi0K
LW5hbWVzcGFjZQotewotICAgIGVudW0geyBJTklUSUFMX1NUUkVBTV9CVUZGRVJfU0laRSA9IDEw
MjQqMTAyNCB9OwotfQotCi1uYW1lc3BhY2UgZ2wKLXsKLQotVmVydGV4RGF0YU1hbmFnZXI6OlZl
cnRleERhdGFNYW5hZ2VyKENvbnRleHQgKmNvbnRleHQsIElEaXJlY3QzRERldmljZTkgKmRldmlj
ZSkgOiBtQ29udGV4dChjb250ZXh0KSwgbURldmljZShkZXZpY2UpCi17Ci0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKLSAgICB7Ci0gICAgICAgIG1EaXJ0
eUN1cnJlbnRWYWx1ZVtpXSA9IHRydWU7Ci0gICAgICAgIG1DdXJyZW50VmFsdWVCdWZmZXJbaV0g
PSBOVUxMOwotICAgIH0KLQotICAgIGNvbnN0IEQzRENBUFM5ICZjYXBzID0gY29udGV4dC0+Z2V0
RGV2aWNlQ2FwcygpOwotICAgIGNoZWNrVmVydGV4Q2FwcyhjYXBzLkRlY2xUeXBlcyk7Ci0KLSAg
ICBtU3RyZWFtaW5nQnVmZmVyID0gbmV3IFN0cmVhbWluZ1ZlcnRleEJ1ZmZlcihtRGV2aWNlLCBJ
TklUSUFMX1NUUkVBTV9CVUZGRVJfU0laRSk7Ci19Ci0KLVZlcnRleERhdGFNYW5hZ2VyOjp+VmVy
dGV4RGF0YU1hbmFnZXIoKQotewotICAgIGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVyOwotCi0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKLSAgICB7Ci0gICAg
ICAgIGRlbGV0ZSBtQ3VycmVudFZhbHVlQnVmZmVyW2ldOwotICAgIH0KLX0KLQotVUlOVCBWZXJ0
ZXhEYXRhTWFuYWdlcjo6d3JpdGVBdHRyaWJ1dGVEYXRhKEFycmF5VmVydGV4QnVmZmVyICp2ZXJ0
ZXhCdWZmZXIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBjb25zdCBWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYnV0ZSkKLXsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnV0ZS5tQm91bmRC
dWZmZXIuZ2V0KCk7Ci0KLSAgICBpbnQgaW5wdXRTdHJpZGUgPSBhdHRyaWJ1dGUuc3RyaWRlKCk7
Ci0gICAgaW50IGVsZW1lbnRTaXplID0gYXR0cmlidXRlLnR5cGVTaXplKCk7Ci0gICAgY29uc3Qg
Rm9ybWF0Q29udmVydGVyICZjb252ZXJ0ZXIgPSBmb3JtYXRDb252ZXJ0ZXIoYXR0cmlidXRlKTsK
LSAgICBVSU5UIHN0cmVhbU9mZnNldCA9IDA7Ci0KLSAgICB2b2lkICpvdXRwdXQgPSBOVUxMOwot
ICAgIAotICAgIGlmICh2ZXJ0ZXhCdWZmZXIpCi0gICAgewotICAgICAgICBvdXRwdXQgPSB2ZXJ0
ZXhCdWZmZXItPm1hcChhdHRyaWJ1dGUsIHNwYWNlUmVxdWlyZWQoYXR0cmlidXRlLCBjb3VudCks
ICZzdHJlYW1PZmZzZXQpOwotICAgIH0KLQotICAgIGlmIChvdXRwdXQgPT0gTlVMTCkKLSAgICB7
Ci0gICAgICAgIEVSUigiRmFpbGVkIHRvIG1hcCB2ZXJ0ZXggYnVmZmVyLiIpOwotICAgICAgICBy
ZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciAqaW5wdXQgPSBOVUxMOwotCi0gICAg
aWYgKGJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIGludCBvZmZzZXQgPSBhdHRyaWJ1dGUubU9mZnNl
dDsKLQotICAgICAgICBpbnB1dCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXItPmRh
dGEoKSkgKyBvZmZzZXQ7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGlucHV0ID0g
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGF0dHJpYnV0ZS5tUG9pbnRlcik7Ci0gICAgfQotCi0g
ICAgaW5wdXQgKz0gaW5wdXRTdHJpZGUgKiBzdGFydDsKLQotICAgIGlmIChjb252ZXJ0ZXIuaWRl
bnRpdHkgJiYgaW5wdXRTdHJpZGUgPT0gZWxlbWVudFNpemUpCi0gICAgewotICAgICAgICBtZW1j
cHkob3V0cHV0LCBpbnB1dCwgY291bnQgKiBpbnB1dFN0cmlkZSk7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIGNvbnZlcnRlci5jb252ZXJ0QXJyYXkoaW5wdXQsIGlucHV0U3RyaWRl
LCBjb3VudCwgb3V0cHV0KTsKLSAgICB9Ci0KLSAgICB2ZXJ0ZXhCdWZmZXItPnVubWFwKCk7Ci0K
LSAgICByZXR1cm4gc3RyZWFtT2Zmc2V0OwotfQotCi1HTGVudW0gVmVydGV4RGF0YU1hbmFnZXI6
OnByZXBhcmVWZXJ0ZXhEYXRhKEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBUcmFuc2xhdGVk
QXR0cmlidXRlICp0cmFuc2xhdGVkKQotewotICAgIEdMZW51bSBlcnJvciA9IEdMX05PX0VSUk9S
OwotICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZUFycmF5ICZhdHRyaWJzID0gbUNvbnRleHQtPmdl
dFZlcnRleEF0dHJpYnV0ZXMoKTsKLSAgICBQcm9ncmFtICpwcm9ncmFtID0gbUNvbnRleHQtPmdl
dEN1cnJlbnRQcm9ncmFtKCk7Ci0KLSAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0
dHJpYnV0ZUluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGVJbmRleCsrKQotICAg
IHsKLSAgICAgICAgdHJhbnNsYXRlZFthdHRyaWJ1dGVJbmRleF0uYWN0aXZlID0gKHByb2dyYW0t
PmdldFNlbWFudGljSW5kZXgoYXR0cmlidXRlSW5kZXgpICE9IC0xKTsKLSAgICB9Ci0KLSAgICAv
LyBEZXRlcm1pbmUgdGhlIHJlcXVpcmVkIHN0b3JhZ2Ugc2l6ZSBwZXIgdXNlZCBidWZmZXIKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQotICAgIHsKLSAg
ICAgICAgQnVmZmVyICpidWZmZXIgPSBhdHRyaWJzW2ldLm1Cb3VuZEJ1ZmZlci5nZXQoKTsKLQot
ICAgICAgICBpZiAodHJhbnNsYXRlZFtpXS5hY3RpdmUgJiYgYXR0cmlic1tpXS5tQXJyYXlFbmFi
bGVkICYmIChidWZmZXIgfHwgYXR0cmlic1tpXS5tUG9pbnRlcikpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIFN0YXRpY1ZlcnRleEJ1ZmZlciAqc3RhdGljQnVmZmVyID0gYnVmZmVyID8gYnVmZmVy
LT5nZXRWZXJ0ZXhCdWZmZXIoKSA6IE5VTEw7Ci0KLSAgICAgICAgICAgIGlmIChzdGF0aWNCdWZm
ZXIgJiYgc3RhdGljQnVmZmVyLT5zaXplKCkgPT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpbnQgdG90YWxDb3VudCA9IGJ1ZmZlci0+c2l6ZSgpIC8gYXR0cmlic1tpXS5zdHJp
ZGUoKTsKLSAgICAgICAgICAgICAgICBzdGF0aWNCdWZmZXItPmFkZFJlcXVpcmVkU3BhY2Uoc3Bh
Y2VSZXF1aXJlZChhdHRyaWJzW2ldLCB0b3RhbENvdW50KSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIGlmICghc3RhdGljQnVmZmVyIHx8IHN0YXRpY0J1ZmZlci0+bG9va3VwQXR0
cmlidXRlKGF0dHJpYnNbaV0pID09IC0xKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGlmIChtU3RyZWFtaW5nQnVmZmVyKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgbVN0cmVhbWluZ0J1ZmZlci0+YWRkUmVxdWlyZWRTcGFjZShzcGFjZVJlcXVpcmVkKGF0
dHJpYnNbaV0sIGNvdW50KSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gSW52YWxpZGF0ZSBzdGF0aWMgYnVmZmVycyBpZiB0aGUg
YXR0cmlidXRlIGZvcm1hdHMgbm8gbG9uZ2VyIG1hdGNoCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKLSAgICB7Ci0gICAgICAgIEJ1ZmZlciAqYnVmZmVy
ID0gYXR0cmlic1tpXS5tQm91bmRCdWZmZXIuZ2V0KCk7Ci0KLSAgICAgICAgaWYgKHRyYW5zbGF0
ZWRbaV0uYWN0aXZlICYmIGF0dHJpYnNbaV0ubUFycmF5RW5hYmxlZCAmJiBidWZmZXIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIFN0YXRpY1ZlcnRleEJ1ZmZlciAqc3RhdGljQnVmZmVyID0gYnVm
ZmVyLT5nZXRWZXJ0ZXhCdWZmZXIoKTsKLQotICAgICAgICAgICAgaWYgKHN0YXRpY0J1ZmZlciAm
JiBzdGF0aWNCdWZmZXItPnNpemUoKSAhPSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGJvb2wgbWF0Y2hpbmdBdHRyaWJ1dGVzID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGZv
ciAoaW50IGogPSAwOyBqIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBqKyspCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRlZFtqXS5hY3RpdmUgJiYgYXR0
cmlic1tqXS5tQXJyYXlFbmFibGVkICYmIGF0dHJpYnNbal0ubUJvdW5kQnVmZmVyLmdldCgpID09
IGJ1ZmZlcikKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHN0YXRpY0J1ZmZlci0+bG9va3VwQXR0cmlidXRlKGF0dHJpYnNbal0pID09IC0xKQotICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
aW5nQXR0cmlidXRlcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaGluZ0F0dHJpYnV0ZXMg
JiYgbVN0cmVhbWluZ0J1ZmZlcikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIG1TdHJlYW1pbmdCdWZmZXItPmFkZFJlcXVpcmVkU3BhY2VGb3Ioc3RhdGljQnVmZmVyKTsK
LSAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5pbnZhbGlkYXRlU3RhdGljRGF0YSgpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IFJlc2VydmUgdGhlIHJlcXVpcmVkIHNwYWNlIHBlciB1c2VkIGJ1ZmZlcgotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCi0gICAgewotICAgICAgICBCdWZm
ZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdldCgpOwotCi0gICAgICAgIGlm
ICh0cmFuc2xhdGVkW2ldLmFjdGl2ZSAmJiBhdHRyaWJzW2ldLm1BcnJheUVuYWJsZWQgJiYgKGJ1
ZmZlciB8fCBhdHRyaWJzW2ldLm1Qb2ludGVyKSkKLSAgICAgICAgewotICAgICAgICAgICAgQXJy
YXlWZXJ0ZXhCdWZmZXIgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0VmVydGV4
QnVmZmVyKCkgOiBOVUxMOwotICAgICAgICAgICAgQXJyYXlWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1
ZmZlciA9IHN0YXRpY0J1ZmZlciA/IHN0YXRpY0J1ZmZlciA6IG1TdHJlYW1pbmdCdWZmZXI7Ci0K
LSAgICAgICAgICAgIGlmICh2ZXJ0ZXhCdWZmZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgdmVydGV4QnVmZmVyLT5yZXNlcnZlUmVxdWlyZWRTcGFjZSgpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gUGVyZm9ybSB0aGUgdmVydGV4IGRhdGEgdHJh
bnNsYXRpb25zCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkr
KykKLSAgICB7Ci0gICAgICAgIGlmICh0cmFuc2xhdGVkW2ldLmFjdGl2ZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgQnVmZmVyICpidWZmZXIgPSBhdHRyaWJzW2ldLm1Cb3VuZEJ1ZmZlci5nZXQo
KTsKLQotICAgICAgICAgICAgaWYgKGF0dHJpYnNbaV0ubUFycmF5RW5hYmxlZCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlciAmJiBhdHRyaWJzW2ldLm1Qb2ludGVy
ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGlz
IGlzIGFuIGFwcGxpY2F0aW9uIGVycm9yIHRoYXQgd291bGQgbm9ybWFsbHkgcmVzdWx0IGluIGEg
Y3Jhc2gsIGJ1dCB3ZSBjYXRjaCBpdCBhbmQgcmV0dXJuIGFuIGVycm9yCi0gICAgICAgICAgICAg
ICAgICAgIEVSUigiQW4gZW5hYmxlZCB2ZXJ0ZXggYXJyYXkgaGFzIG5vIGJ1ZmZlciBhbmQgbm8g
cG9pbnRlci4iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFU
SU9OOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNvbnN0IEZvcm1hdENv
bnZlcnRlciAmY29udmVydGVyID0gZm9ybWF0Q29udmVydGVyKGF0dHJpYnNbaV0pOwotCi0gICAg
ICAgICAgICAgICAgU3RhdGljVmVydGV4QnVmZmVyICpzdGF0aWNCdWZmZXIgPSBidWZmZXIgPyBi
dWZmZXItPmdldFZlcnRleEJ1ZmZlcigpIDogTlVMTDsKLSAgICAgICAgICAgICAgICBBcnJheVZl
cnRleEJ1ZmZlciAqdmVydGV4QnVmZmVyID0gc3RhdGljQnVmZmVyID8gc3RhdGljQnVmZmVyIDog
c3RhdGljX2Nhc3Q8QXJyYXlWZXJ0ZXhCdWZmZXIqPihtU3RyZWFtaW5nQnVmZmVyKTsKLQotICAg
ICAgICAgICAgICAgIFVJTlQgc3RyZWFtT2Zmc2V0ID0gLTE7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoc3RhdGljQnVmZmVyKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
c3RyZWFtT2Zmc2V0ID0gc3RhdGljQnVmZmVyLT5sb29rdXBBdHRyaWJ1dGUoYXR0cmlic1tpXSk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbU9mZnNldCA9PSAtMSkKLSAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgZW50
aXJlIGJ1ZmZlcgotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsQ291bnQgPSBidWZm
ZXItPnNpemUoKSAvIGF0dHJpYnNbaV0uc3RyaWRlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc3RhcnRJbmRleCA9IGF0dHJpYnNbaV0ubU9mZnNldCAvIGF0dHJpYnNbaV0uc3RyaWRl
KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IHdyaXRlQXR0cmli
dXRlRGF0YShzdGF0aWNCdWZmZXIsIC1zdGFydEluZGV4LCB0b3RhbENvdW50LCBhdHRyaWJzW2ld
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChzdHJl
YW1PZmZzZXQgIT0gLTEpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmVhbU9mZnNldCArPSAoc3RhcnQgKyBhdHRyaWJzW2ldLm1PZmZzZXQgLyBhdHRy
aWJzW2ldLnN0cmlkZSgpKSAqIGNvbnZlcnRlci5vdXRwdXRFbGVtZW50U2l6ZTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSB3cml0
ZUF0dHJpYnV0ZURhdGEobVN0cmVhbWluZ0J1ZmZlciwgc3RhcnQsIGNvdW50LCBhdHRyaWJzW2ld
KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0
ID09IC0xKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X09VVF9PRl9NRU1PUlk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdHJh
bnNsYXRlZFtpXS52ZXJ0ZXhCdWZmZXIgPSB2ZXJ0ZXhCdWZmZXItPmdldEJ1ZmZlcigpOwotICAg
ICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0udHlwZSA9IGNvbnZlcnRlci5kM2REZWNsVHlwZTsK
LSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnN0cmlkZSA9IGNvbnZlcnRlci5vdXRwdXRF
bGVtZW50U2l6ZTsKLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLm9mZnNldCA9IHN0cmVh
bU9mZnNldDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBpZiAobURpcnR5Q3VycmVudFZhbHVlW2ldKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG1DdXJyZW50VmFsdWVCdWZmZXJbaV07
Ci0gICAgICAgICAgICAgICAgICAgIG1DdXJyZW50VmFsdWVCdWZmZXJbaV0gPSBuZXcgQ29uc3Rh
bnRWZXJ0ZXhCdWZmZXIobURldmljZSwgYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlWzBdLCBhdHRy
aWJzW2ldLm1DdXJyZW50VmFsdWVbMV0sIGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVsyXSwgYXR0
cmlic1tpXS5tQ3VycmVudFZhbHVlWzNdKTsKLSAgICAgICAgICAgICAgICAgICAgbURpcnR5Q3Vy
cmVudFZhbHVlW2ldID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgdHJhbnNsYXRlZFtpXS52ZXJ0ZXhCdWZmZXIgPSBtQ3VycmVudFZhbHVlQnVmZmVyW2ldLT5n
ZXRCdWZmZXIoKTsKLQotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0udHlwZSA9IEQzRERF
Q0xUWVBFX0ZMT0FUNDsKLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnN0cmlkZSA9IDA7
Ci0gICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5vZmZzZXQgPSAwOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEdMX05PX0VSUk9SOwotfQotCi1zdGQ6
OnNpemVfdCBWZXJ0ZXhEYXRhTWFuYWdlcjo6c3BhY2VSZXF1aXJlZChjb25zdCBWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwgc3RkOjpzaXplX3QgY291bnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZv
cm1hdENvbnZlcnRlcihhdHRyaWIpLm91dHB1dEVsZW1lbnRTaXplICogY291bnQ7Ci19Ci0KLS8v
IE1hcHBpbmcgZnJvbSBPcGVuR0wtRVMgdmVydGV4IGF0dHJpYiB0eXBlIHRvIEQzRCBkZWNsIHR5
cGU6Ci0vLwotLy8gQllURSAgICAgICAgICAgICAgICAgU0hPUlQgKENhc3QpCi0vLyBCWVRFLW5v
cm0gICAgICAgICAgICBGTE9BVCAoTm9ybWFsaXplKSAoY2FuJ3QgYmUgZXhhY3RseSByZXByZXNl
bnRlZCBhcyBTSE9SVC1ub3JtKQotLy8gVU5TSUdORURfQllURSAgICAgICAgVUJZVEU0IChJZGVu
dGl0eSkgb3IgU0hPUlQgKENhc3QpCi0vLyBVTlNJR05FRF9CWVRFLW5vcm0gICBVQllURTROIChJ
ZGVudGl0eSkgb3IgRkxPQVQgKE5vcm1hbGl6ZSkKLS8vIFNIT1JUICAgICAgICAgICAgICAgIFNI
T1JUIChJZGVudGl0eSkKLS8vIFNIT1JULW5vcm0gICAgICAgICAgIFNIT1JULW5vcm0gKElkZW50
aXR5KSBvciBGTE9BVCAoTm9ybWFsaXplKQotLy8gVU5TSUdORURfU0hPUlQgICAgICAgRkxPQVQg
KENhc3QpCi0vLyBVTlNJR05FRF9TSE9SVC1ub3JtICBVU0hPUlQtbm9ybSAoSWRlbnRpdHkpIG9y
IEZMT0FUIChOb3JtYWxpemUpCi0vLyBGSVhFRCAobm90IGluIFdlYkdMKSBGTE9BVCAoRml4ZWRU
b0Zsb2F0KQotLy8gRkxPQVQgICAgICAgICAgICAgICAgRkxPQVQgKElkZW50aXR5KQotCi0vLyBH
TFRvQ1R5cGUgbWFwcyBmcm9tIEdMIHR5cGUgKGFzIEdMZW51bSkgdG8gdGhlIEMgdHlwZWRlZi4g
Ci10ZW1wbGF0ZSA8R0xlbnVtIEdMVHlwZT4gc3RydWN0IEdMVG9DVHlwZSB7IH07Ci0KLXRlbXBs
YXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfQllURT4geyB0eXBlZGVmIEdMYnl0ZSB0eXBlOyB9
OwotdGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9VTlNJR05FRF9CWVRFPiB7IHR5cGVk
ZWYgR0x1Ynl0ZSB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9TSE9S
VD4geyB0eXBlZGVmIEdMc2hvcnQgdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBHTFRvQ1R5
cGU8R0xfVU5TSUdORURfU0hPUlQ+IHsgdHlwZWRlZiBHTHVzaG9ydCB0eXBlOyB9OwotdGVtcGxh
dGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9GSVhFRD4geyB0eXBlZGVmIEdMdWludCB0eXBlOyB9
OwotdGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9GTE9BVD4geyB0eXBlZGVmIEdMZmxv
YXQgdHlwZTsgfTsKLQotLy8gVGhpcyBkaWZmZXJzIGZyb20gRDNEREVDTFRZUEUgaW4gdGhhdCBp
dCBpcyB1bnNpemVkLiAoU2l6ZSBleHBhbnNpb24gaXMgYXBwbGllZCBsYXN0LikKLWVudW0gRDNE
VmVydGV4VHlwZQotewotICAgIEQzRFZUX0ZMT0FULAotICAgIEQzRFZUX1NIT1JULAotICAgIEQz
RFZUX1NIT1JUX05PUk0sCi0gICAgRDNEVlRfVUJZVEUsCi0gICAgRDNEVlRfVUJZVEVfTk9STSwK
LSAgICBEM0RWVF9VU0hPUlRfTk9STQotfTsKLQotLy8gRDNEVG9DVHlwZSBtYXBzIGZyb20gRDNE
IHZlcnRleCB0eXBlIChhcyBlbnVtIEQzRFZlcnRleFR5cGUpIHRvIHRoZSBjb3JyZXNwb25kaW5n
IEMgdHlwZS4KLXRlbXBsYXRlIDx1bnNpZ25lZCBpbnQgRDNEVHlwZT4gc3RydWN0IEQzRFRvQ1R5
cGUgeyB9OwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RWVF9GTE9BVD4geyB0
eXBlZGVmIGZsb2F0IHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RW
VF9TSE9SVD4geyB0eXBlZGVmIHNob3J0IHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNE
VG9DVHlwZTxEM0RWVF9TSE9SVF9OT1JNPiB7IHR5cGVkZWYgc2hvcnQgdHlwZTsgfTsKLXRlbXBs
YXRlIDw+IHN0cnVjdCBEM0RUb0NUeXBlPEQzRFZUX1VCWVRFPiB7IHR5cGVkZWYgdW5zaWduZWQg
Y2hhciB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEQzRFRvQ1R5cGU8RDNEVlRfVUJZVEVf
Tk9STT4geyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVj
dCBEM0RUb0NUeXBlPEQzRFZUX1VTSE9SVF9OT1JNPiB7IHR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
dHlwZTsgfTsKLQotLy8gRW5jb2RlIHRoZSB0eXBlL3NpemUgY29tYmluYXRpb25zIHRoYXQgRDNE
IHBlcm1pdHMuIEZvciBlYWNoIHR5cGUvc2l6ZSBpdCBleHBhbmRzIHRvIGEgd2lkZW5lciB0aGF0
IHdpbGwgcHJvdmlkZSB0aGUgYXBwcm9wcmlhdGUgZmluYWwgc2l6ZS4KLXRlbXBsYXRlIDx1bnNp
Z25lZCBpbnQgdHlwZSwgaW50IHNpemU+Ci1zdHJ1Y3QgV2lkZW5SdWxlCi17Ci19OwotCi10ZW1w
bGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfRkxPQVQsIHNpemU+ICAgICAg
ICAgIDogZ2w6Ok5vV2lkZW48c2l6ZT4geyB9OwotdGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3Qg
V2lkZW5SdWxlPEQzRFZUX1NIT1JULCBzaXplPiAgICAgICAgICA6IGdsOjpXaWRlblRvRXZlbjxz
aXplPiB7IH07Ci10ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfU0hP
UlRfTk9STSwgc2l6ZT4gICAgIDogZ2w6OldpZGVuVG9FdmVuPHNpemU+IHsgfTsKLXRlbXBsYXRl
IDxpbnQgc2l6ZT4gc3RydWN0IFdpZGVuUnVsZTxEM0RWVF9VQllURSwgc2l6ZT4gICAgICAgICAg
OiBnbDo6V2lkZW5Ub0ZvdXI8c2l6ZT4geyB9OwotdGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3Qg
V2lkZW5SdWxlPEQzRFZUX1VCWVRFX05PUk0sIHNpemU+ICAgICA6IGdsOjpXaWRlblRvRm91cjxz
aXplPiB7IH07Ci10ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfVVNI
T1JUX05PUk0sIHNpemU+ICAgIDogZ2w6OldpZGVuVG9FdmVuPHNpemU+IHsgfTsKLQotLy8gVmVy
dGV4VHlwZUZsYWdzIGVuY29kZXMgdGhlIEQzRENBUFM5OjpEZWNsVHlwZSBmbGFnIGFuZCB2ZXJ0
ZXggZGVjbGFyYXRpb24gZmxhZyBmb3IgZWFjaCBEM0QgdmVydGV4IHR5cGUgJiBzaXplIGNvbWJp
bmF0aW9uLgotdGVtcGxhdGUgPHVuc2lnbmVkIGludCBkM2R0eXBlLCBpbnQgc2l6ZT4KLXN0cnVj
dCBWZXJ0ZXhUeXBlRmxhZ3MKLXsKLX07Ci0KLXRlbXBsYXRlIDx1bnNpZ25lZCBpbnQgY2FwZmxh
ZywgdW5zaWduZWQgaW50IGRlY2xmbGFnPgotc3RydWN0IFZlcnRleFR5cGVGbGFnc0hlbHBlcgot
ewotICAgIGVudW0geyBjYXBmbGFnID0gY2FwZmxhZyB9OwotICAgIGVudW0geyBkZWNsZmxhZyA9
IGRlY2xmbGFnIH07Ci19OwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQz
RFZUX0ZMT0FULCAxPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjwwLCBEM0RERUNMVFlQRV9GTE9B
VDE+IHsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfRkxPQVQs
IDI+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPDAsIEQzRERFQ0xUWVBFX0ZMT0FUMj4geyB9Owot
dGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9GTE9BVCwgMz4gOiBWZXJ0
ZXhUeXBlRmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZUEVfRkxPQVQzPiB7IH07Ci10ZW1wbGF0ZSA8
PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX0ZMT0FULCA0PiA6IFZlcnRleFR5cGVGbGFn
c0hlbHBlcjwwLCBEM0RERUNMVFlQRV9GTE9BVDQ+IHsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBW
ZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfU0hPUlQsIDI+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPDAs
IEQzRERFQ0xUWVBFX1NIT1JUMj4geyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVG
bGFnczxEM0RWVF9TSE9SVCwgND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZ
UEVfU0hPUlQ0PiB7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZU
X1NIT1JUX05PUk0sIDI+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPEQzRERUQ0FQU19TSE9SVDJO
LCBEM0RERUNMVFlQRV9TSE9SVDJOPiB7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlw
ZUZsYWdzPEQzRFZUX1NIT1JUX05PUk0sIDQ+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPEQzRERU
Q0FQU19TSE9SVDROLCBEM0RERUNMVFlQRV9TSE9SVDROPiB7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1
Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1VCWVRFLCA0PiA6IFZlcnRleFR5cGVGbGFnc0hlbHBl
cjxEM0REVENBUFNfVUJZVEU0LCBEM0RERUNMVFlQRV9VQllURTQ+IHsgfTsKLXRlbXBsYXRlIDw+
IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfVUJZVEVfTk9STSwgND4gOiBWZXJ0ZXhUeXBl
RmxhZ3NIZWxwZXI8RDNERFRDQVBTX1VCWVRFNE4sIEQzRERFQ0xUWVBFX1VCWVRFNE4+IHsgfTsK
LXRlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfVVNIT1JUX05PUk0sIDI+
IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPEQzRERUQ0FQU19VU0hPUlQyTiwgRDNEREVDTFRZUEVf
VVNIT1JUMk4+IHsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRf
VVNIT1JUX05PUk0sIDQ+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPEQzRERUQ0FQU19VU0hPUlQ0
TiwgRDNEREVDTFRZUEVfVVNIT1JUNE4+IHsgfTsKLQotCi0vLyBWZXJ0ZXhUeXBlTWFwcGluZyBt
YXBzIEdMIHR5cGUgJiBub3JtYWxpemVkIGZsYWcgdG8gcHJlZmVycmVkIGFuZCBmYWxsYmFjayBE
M0QgdmVydGV4IHR5cGVzIChhcyBEM0RWZXJ0ZXhUeXBlIGVudW1zKS4KLXRlbXBsYXRlIDxHTGVu
dW0gR0x0eXBlLCBib29sIG5vcm1hbGl6ZWQ+Ci1zdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmcKLXsK
LX07Ci0KLXRlbXBsYXRlIDxEM0RWZXJ0ZXhUeXBlIFByZWZlcnJlZCwgRDNEVmVydGV4VHlwZSBG
YWxsYmFjayA9IFByZWZlcnJlZD4KLXN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2UKLXsKLSAg
ICBlbnVtIHsgcHJlZmVycmVkID0gUHJlZmVycmVkIH07Ci0gICAgZW51bSB7IGZhbGxiYWNrID0g
RmFsbGJhY2sgfTsKLX07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxH
TF9CWVRFLCBmYWxzZT4gICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5n
QmFzZTxEM0RWVF9TSE9SVD4geyB9OyAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FzdAotdGVt
cGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVNYXBwaW5nPEdMX0JZVEUsIHRydWU+ICAgICAgICAg
ICAgICAgICAgICAgICAgIDogVmVydGV4VHlwZU1hcHBpbmdCYXNlPEQzRFZUX0ZMT0FUPiB7IH07
ICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3JtYWxpemUKLXRlbXBsYXRlIDw+IHN0cnVjdCBW
ZXJ0ZXhUeXBlTWFwcGluZzxHTF9VTlNJR05FRF9CWVRFLCBmYWxzZT4gICAgICAgICAgICAgICA6
IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9VQllURSwgRDNEVlRfRkxPQVQ+IHsgfTsgICAg
ICAgICAgLy8gSWRlbnRpdHksIENhc3QKLXRlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFw
cGluZzxHTF9VTlNJR05FRF9CWVRFLCB0cnVlPiAgICAgICAgICAgICAgICA6IFZlcnRleFR5cGVN
YXBwaW5nQmFzZTxEM0RWVF9VQllURV9OT1JNLCBEM0RWVF9GTE9BVD4geyB9OyAgICAgLy8gSWRl
bnRpdHksIE5vcm1hbGl6ZQotdGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVNYXBwaW5nPEdM
X1NIT1JULCBmYWxzZT4gICAgICAgICAgICAgICAgICAgICAgIDogVmVydGV4VHlwZU1hcHBpbmdC
YXNlPEQzRFZUX1NIT1JUPiB7IH07ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZGVudGl0eQot
dGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVNYXBwaW5nPEdMX1NIT1JULCB0cnVlPiAgICAg
ICAgICAgICAgICAgICAgICAgIDogVmVydGV4VHlwZU1hcHBpbmdCYXNlPEQzRFZUX1NIT1JUX05P
Uk0sIEQzRFZUX0ZMT0FUPiB7IH07ICAgICAvLyBDYXN0LCBOb3JtYWxpemUKLXRlbXBsYXRlIDw+
IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9VTlNJR05FRF9TSE9SVCwgZmFsc2U+ICAgICAg
ICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9GTE9BVD4geyB9OyAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ2FzdAotdGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVNYXBw
aW5nPEdMX1VOU0lHTkVEX1NIT1JULCB0cnVlPiAgICAgICAgICAgICAgIDogVmVydGV4VHlwZU1h
cHBpbmdCYXNlPEQzRFZUX1VTSE9SVF9OT1JNLCBEM0RWVF9GTE9BVD4geyB9OyAgICAvLyBDYXN0
LCBOb3JtYWxpemUKLXRlbXBsYXRlIDxib29sIG5vcm1hbGl6ZWQ+IHN0cnVjdCBWZXJ0ZXhUeXBl
TWFwcGluZzxHTF9GSVhFRCwgbm9ybWFsaXplZD4gICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxE
M0RWVF9GTE9BVD4geyB9OyAgICAgICAgICAgICAgICAgICAgICAgLy8gRml4ZWRUb0Zsb2F0Ci10
ZW1wbGF0ZSA8Ym9vbCBub3JtYWxpemVkPiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfRkxP
QVQsIG5vcm1hbGl6ZWQ+ICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfRkxPQVQ+IHsg
fTsgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZW50aXR5Ci0KLQotLy8gR2l2ZW4gYSBHTCB0
eXBlICYgbm9ybSBmbGFnIGFuZCBhIEQzRCB0eXBlLCBDb252ZXJzaW9uUnVsZSBwcm92aWRlcyB0
aGUgdHlwZSBjb252ZXJzaW9uIHJ1bGUgKENhc3QsIE5vcm1hbGl6ZSwgSWRlbnRpdHksIEZpeGVk
VG9GbG9hdCkuCi0vLyBUaGUgY29udmVyc2lvbiBydWxlcyB0aGVtc2VsdmVzIGFyZSBkZWZpbmVk
IGluIHZlcnRleGNvbnZlcnNpb24uaC4KLQotLy8gQWxtb3N0IGFsbCBjYXNlcyBhcmUgY292ZXJl
ZCBieSBDYXN0IChpbmNsdWRpbmcgdGhvc2UgdGhhdCBhcmUgYWN0dWFsbHkgSWRlbnRpdHkgc2lu
Y2UgQ2FzdDxULFQ+IGtub3dzIGl0J3MgYW4gaWRlbnRpdHkgbWFwcGluZykuCi10ZW1wbGF0ZSA8
R0xlbnVtIGZyb21UeXBlLCBib29sIG5vcm1hbGl6ZWQsIHVuc2lnbmVkIGludCB0b1R5cGU+Ci1z
dHJ1Y3QgQ29udmVyc2lvblJ1bGUgOiBnbDo6Q2FzdDx0eXBlbmFtZSBHTFRvQ1R5cGU8ZnJvbVR5
cGU+Ojp0eXBlLCB0eXBlbmFtZSBEM0RUb0NUeXBlPHRvVHlwZT46OnR5cGU+Ci17Ci19OwotCi0v
LyBBbGwgY29udmVyc2lvbnMgZnJvbSBub3JtYWxpemVkIHR5cGVzIHRvIGZsb2F0IHVzZSB0aGUg
Tm9ybWFsaXplIG9wZXJhdG9yLgotdGVtcGxhdGUgPEdMZW51bSBmcm9tVHlwZT4gc3RydWN0IENv
bnZlcnNpb25SdWxlPGZyb21UeXBlLCB0cnVlLCBEM0RWVF9GTE9BVD4gOiBnbDo6Tm9ybWFsaXpl
PHR5cGVuYW1lIEdMVG9DVHlwZTxmcm9tVHlwZT46OnR5cGU+IHsgfTsKLQotLy8gVXNlIGEgZnVs
bCBzcGVjaWFsaXNhdGlvbiBmb3IgdGhpcyBzbyB0aGF0IGl0IHByZWZlcmVudGlhbGx5IG1hdGNo
ZXMgYWhlYWQgb2YgdGhlIGdlbmVyaWMgbm9ybWFsaXplLXRvLWZsb2F0IHJ1bGVzLgotdGVtcGxh
dGUgPD4gc3RydWN0IENvbnZlcnNpb25SdWxlPEdMX0ZJWEVELCB0cnVlLCBEM0RWVF9GTE9BVD4g
OiBnbDo6Rml4ZWRUb0Zsb2F0PEdMdWludCwgMTY+IHsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBD
b252ZXJzaW9uUnVsZTxHTF9GSVhFRCwgZmFsc2UsIEQzRFZUX0ZMT0FUPiA6IGdsOjpGaXhlZFRv
RmxvYXQ8R0x1aW50LCAxNj4geyB9OwotCi0vLyBBIDItc3RhZ2UgY29uc3RydWN0aW9uIGlzIHVz
ZWQgZm9yIERlZmF1bHRWZXJ0ZXhWYWx1ZXMgYmVjYXVzZSBmbG9hdCBtdXN0IHVzZSBTaW1wbGVE
ZWZhdWx0VmFsdWVzIChpLmUuIDAvMSkKLS8vIHdoZXRoZXIgaXQgaXMgbm9ybWFsaXplZCBvciBu
b3QuCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgYm9vbCBub3JtYWxpemVkPgotc3RydWN0IERlZmF1bHRW
ZXJ0ZXhWYWx1ZXNTdGFnZTIKLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgRGVm
YXVsdFZlcnRleFZhbHVlc1N0YWdlMjxULCB0cnVlPiAgOiBnbDo6Tm9ybWFsaXplZERlZmF1bHRW
YWx1ZXM8VD4geyB9OwotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBEZWZhdWx0VmVydGV4VmFs
dWVzU3RhZ2UyPFQsIGZhbHNlPiA6IGdsOjpTaW1wbGVEZWZhdWx0VmFsdWVzPFQ+IHsgfTsKLQot
Ly8gV29yayBvdXQgdGhlIGRlZmF1bHQgdmFsdWUgcnVsZSBmb3IgYSBEM0QgdHlwZSAoZXhwcmVz
c2VkIGFzIHRoZSBDIHR5cGUpIGFuZCAKLXRlbXBsYXRlIDxjbGFzcyBULCBib29sIG5vcm1hbGl6
ZWQ+Ci1zdHJ1Y3QgRGVmYXVsdFZlcnRleFZhbHVlcyA6IERlZmF1bHRWZXJ0ZXhWYWx1ZXNTdGFn
ZTI8VCwgbm9ybWFsaXplZD4KLXsKLX07Ci0KLXRlbXBsYXRlIDxib29sIG5vcm1hbGl6ZWQ+IHN0
cnVjdCBEZWZhdWx0VmVydGV4VmFsdWVzPGZsb2F0LCBub3JtYWxpemVkPiA6IGdsOjpTaW1wbGVE
ZWZhdWx0VmFsdWVzPGZsb2F0PiB7IH07Ci0KLS8vIFBvbGljeSBydWxlcyBmb3IgdXNlIHdpdGgg
Q29udmVydGVyLCB0byBjaG9vc2Ugd2hldGhlciB0byB1c2UgdGhlIHByZWZlcnJlZCBvciBmYWxs
YmFjayBjb252ZXJzaW9uLgotLy8gVGhlIGZhbGxiYWNrIGNvbnZlcnNpb24gcHJvZHVjZXMgYW4g
b3V0cHV0IHRoYXQgYWxsIEQzRDkgZGV2aWNlcyBtdXN0IHN1cHBvcnQuCi10ZW1wbGF0ZSA8Y2xh
c3MgVD4gc3RydWN0IFVzZVByZWZlcnJlZCB7IGVudW0geyB0eXBlID0gVDo6cHJlZmVycmVkIH07
IH07Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IFVzZUZhbGxiYWNrIHsgZW51bSB7IHR5cGUg
PSBUOjpmYWxsYmFjayB9OyB9OwotCi0vLyBDb252ZXJ0ZXIgdGllcyBpdCBhbGwgdG9nZXRoZXIu
IEdpdmVuIGFuIE9wZW5HTCB0eXBlL25vcm0vc2l6ZSBhbmQgY2hvaWNlIG9mIHByZWZlcnJlZC9m
YWxsYmFjayBjb252ZXJzaW9uLAotLy8gaXQgcHJvdmlkZXMgYWxsIHRoZSBtZW1iZXJzIG9mIHRo
ZSBhcHByb3ByaWF0ZSBWZXJ0ZXhEYXRhQ29udmVydGVyLCB0aGUgRDNEQ0FQUzk6OkRlY2xUeXBl
cyBmbGFnIGluIGNhcCBmbGFnCi0vLyBhbmQgdGhlIEQzRERFQ0xUWVBFIG1lbWJlciBuZWVkZWQg
Zm9yIHRoZSB2ZXJ0ZXggZGVjbGFyYXRpb24gaW4gZGVjbGZsYWcuCi10ZW1wbGF0ZSA8R0xlbnVt
IGZyb21UeXBlLCBib29sIG5vcm1hbGl6ZWQsIGludCBzaXplLCB0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y2xhc3MgUHJlZmVyZW5jZVJ1bGU+Ci1zdHJ1Y3QgQ29udmVydGVyCi0gICAgOiBnbDo6VmVydGV4
RGF0YUNvbnZlcnRlcjx0eXBlbmFtZSBHTFRvQ1R5cGU8ZnJvbVR5cGU+Ojp0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2lkZW5SdWxlPFByZWZlcmVuY2VSdWxlPCBWZXJ0ZXhU
eXBlTWFwcGluZzxmcm9tVHlwZSwgbm9ybWFsaXplZD4gPjo6dHlwZSwgc2l6ZT4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uUnVsZTxmcm9tVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVmZXJlbmNlUnVsZTwgVmVy
dGV4VHlwZU1hcHBpbmc8ZnJvbVR5cGUsIG5vcm1hbGl6ZWQ+ID46OnR5cGU+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZlcnRleFZhbHVlczx0eXBlbmFtZSBEM0RUb0NU
eXBlPFByZWZlcmVuY2VSdWxlPCBWZXJ0ZXhUeXBlTWFwcGluZzxmcm9tVHlwZSwgbm9ybWFsaXpl
ZD4gPjo6dHlwZT46OnR5cGUsIG5vcm1hbGl6ZWQgPiA+Ci17Ci1wcml2YXRlOgotICAgIGVudW0g
eyBkM2R0eXBlID0gUHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5cGVNYXBwaW5nPGZyb21UeXBlLCBu
b3JtYWxpemVkPiA+Ojp0eXBlIH07Ci0gICAgZW51bSB7IGQzZHNpemUgPSBXaWRlblJ1bGU8ZDNk
dHlwZSwgc2l6ZT46OmZpbmFsV2lkdGggfTsKLQotcHVibGljOgotICAgIGVudW0geyBjYXBmbGFn
ID0gVmVydGV4VHlwZUZsYWdzPGQzZHR5cGUsIGQzZHNpemU+OjpjYXBmbGFnIH07Ci0gICAgZW51
bSB7IGRlY2xmbGFnID0gVmVydGV4VHlwZUZsYWdzPGQzZHR5cGUsIGQzZHNpemU+OjpkZWNsZmxh
ZyB9OwotfTsKLQotLy8gSW5pdGlhbGlzZSBhIFRyYW5zbGF0aW9uSW5mbwotI2RlZmluZSBUUkFO
U0xBVElPTih0eXBlLCBub3JtLCBzaXplLCBwcmVmZXJyZWQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBD
b252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVycmVkPjo6aWRlbnRpdHksICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICBDb252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwg
cHJlZmVycmVkPjo6ZmluYWxTaXplLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBDb252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVycmVkPjo6Y29udmVydEFycmF5LCAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWNfY2FzdDxEM0RERUNMVFlQRT4o
Q29udmVydGVyPHR5cGUsIG5vcm0sIHNpemUsIHByZWZlcnJlZD46OmRlY2xmbGFnKSAgXAotICAg
IH0KLQotI2RlZmluZSBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgbm9ybSwg
c2l6ZSkgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICBDb252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgVXNl
UHJlZmVycmVkPjo6Y2FwZmxhZywgXAotICAgICAgICBUUkFOU0xBVElPTih0eXBlLCBub3JtLCBz
aXplLCBVc2VQcmVmZXJyZWQpLCAgICAgICAgXAotICAgICAgICBUUkFOU0xBVElPTih0eXBlLCBu
b3JtLCBzaXplLCBVc2VGYWxsYmFjaykgICAgICAgICAgXAotICAgIH0KLQotI2RlZmluZSBUUkFO
U0xBVElPTlNfRk9SX1RZUEUodHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwg
MSksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMiksIFRSQU5T
TEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMyksIFRSQU5TTEFUSU9OX0ZP
Ul9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgNCkgfSwgXAotICAgICAgICB7IFRSQU5TTEFU
SU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCB0cnVlLCAxKSwgVFJBTlNMQVRJT05fRk9SX1RZ
UEVfTk9STV9TSVpFKHR5cGUsIHRydWUsIDIpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJ
WkUodHlwZSwgdHJ1ZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCB0
cnVlLCA0KSB9LCAgICAgXAotICAgIH0KLQotY29uc3QgVmVydGV4RGF0YU1hbmFnZXI6OlRyYW5z
bGF0aW9uRGVzY3JpcHRpb24gVmVydGV4RGF0YU1hbmFnZXI6Om1Qb3NzaWJsZVRyYW5zbGF0aW9u
c1tOVU1fR0xfVkVSVEVYX0FUVFJJQl9UWVBFU11bMl1bNF0gPSAvLyBbR0wgdHlwZXMgYXMgZW51
bWVyYXRlZCBieSB0eXBlSW5kZXgoKV1bbm9ybWFsaXplZF1bc2l6ZS0xXQotewotICAgIFRSQU5T
TEFUSU9OU19GT1JfVFlQRShHTF9CWVRFKSwKLSAgICBUUkFOU0xBVElPTlNfRk9SX1RZUEUoR0xf
VU5TSUdORURfQllURSksCi0gICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKEdMX1NIT1JUKSwKLSAg
ICBUUkFOU0xBVElPTlNfRk9SX1RZUEUoR0xfVU5TSUdORURfU0hPUlQpLAotICAgIFRSQU5TTEFU
SU9OU19GT1JfVFlQRShHTF9GSVhFRCksCi0gICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKEdMX0ZM
T0FUKQotfTsKLQotdm9pZCBWZXJ0ZXhEYXRhTWFuYWdlcjo6Y2hlY2tWZXJ0ZXhDYXBzKERXT1JE
IGRlY2xUeXBlcykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE5VTV9HTF9W
RVJURVhfQVRUUklCX1RZUEVTOyBpKyspCi0gICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBqID0gMDsgaiA8IDI7IGorKykKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgayA9IDA7IGsgPCA0OyBrKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aWYgKG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tpXVtqXVtrXS5jYXBzRmxhZyA9PSAwIHx8IChkZWNs
VHlwZXMgJiBtUG9zc2libGVUcmFuc2xhdGlvbnNbaV1bal1ba10uY2Fwc0ZsYWcpICE9IDApCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBtQXR0cmlidXRlVHlwZXNbaV1b
al1ba10gPSBtUG9zc2libGVUcmFuc2xhdGlvbnNbaV1bal1ba10ucHJlZmVycmVkQ29udmVyc2lv
bjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbUF0dHJpYnV0ZVR5cGVzW2ldW2pdW2tdID0gbVBv
c3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2tdLmZhbGxiYWNrQ29udmVyc2lvbjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIFRoaXMg
aXMgdXNlZCB0byBpbmRleCBtQXR0cmlidXRlVHlwZXMgYW5kIG1Qb3NzaWJsZVRyYW5zbGF0aW9u
cy4KLXVuc2lnbmVkIGludCBWZXJ0ZXhEYXRhTWFuYWdlcjo6dHlwZUluZGV4KEdMZW51bSB0eXBl
KSBjb25zdAotewotICAgIHN3aXRjaCAodHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX0JZVEU6
IHJldHVybiAwOwotICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiByZXR1cm4gMTsKLSAgICAg
IGNhc2UgR0xfU0hPUlQ6IHJldHVybiAyOwotICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDog
cmV0dXJuIDM7Ci0gICAgICBjYXNlIEdMX0ZJWEVEOiByZXR1cm4gNDsKLSAgICAgIGNhc2UgR0xf
RkxPQVQ6IHJldHVybiA1OwotCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyByZXR1cm4g
NTsKLSAgICB9Ci19Ci0KLXZvaWQgVmVydGV4RGF0YU1hbmFnZXI6OnNldHVwQXR0cmlidXRlcyhj
b25zdCBUcmFuc2xhdGVkQXR0cmlidXRlICphdHRyaWJ1dGVzKQotewotICAgIEQzRFZFUlRFWEVM
RU1FTlQ5IGVsZW1lbnRzW01BWF9WRVJURVhfQVRUUklCU107Ci0gICAgRDNEVkVSVEVYRUxFTUVO
VDkgKmVsZW1lbnQgPSAmZWxlbWVudHNbMF07Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IE1B
WF9WRVJURVhfQVRUUklCUzsgaSsrKQotICAgIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0u
YWN0aXZlKQotICAgICAgICB7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2Uo
aSwgYXR0cmlidXRlc1tpXS52ZXJ0ZXhCdWZmZXIsIGF0dHJpYnV0ZXNbaV0ub2Zmc2V0LCBhdHRy
aWJ1dGVzW2ldLnN0cmlkZSk7Ci0KLSAgICAgICAgICAgIGVsZW1lbnQtPlN0cmVhbSA9IGk7Ci0g
ICAgICAgICAgICBlbGVtZW50LT5PZmZzZXQgPSAwOwotICAgICAgICAgICAgZWxlbWVudC0+VHlw
ZSA9IGF0dHJpYnV0ZXNbaV0udHlwZTsKLSAgICAgICAgICAgIGVsZW1lbnQtPk1ldGhvZCA9IEQz
RERFQ0xNRVRIT0RfREVGQVVMVDsKLSAgICAgICAgICAgIGVsZW1lbnQtPlVzYWdlID0gRDNEREVD
TFVTQUdFX1RFWENPT1JEOwotICAgICAgICAgICAgZWxlbWVudC0+VXNhZ2VJbmRleCA9IGF0dHJp
YnV0ZXNbaV0uc2VtYW50aWNJbmRleDsKLSAgICAgICAgICAgIGVsZW1lbnQrKzsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBEM0RWRVJURVhFTEVNRU5UOSBlbmQgPSBEM0RE
RUNMX0VORCgpOwotICAgICplbGVtZW50ID0gZW5kOwotCi0gICAgSURpcmVjdDNEVmVydGV4RGVj
bGFyYXRpb245ICp2ZXJ0ZXhEZWNsYXJhdGlvbjsKLSAgICBtRGV2aWNlLT5DcmVhdGVWZXJ0ZXhE
ZWNsYXJhdGlvbihlbGVtZW50cywgJnZlcnRleERlY2xhcmF0aW9uKTsKLSAgICBtRGV2aWNlLT5T
ZXRWZXJ0ZXhEZWNsYXJhdGlvbih2ZXJ0ZXhEZWNsYXJhdGlvbik7Ci0gICAgdmVydGV4RGVjbGFy
YXRpb24tPlJlbGVhc2UoKTsKLX0KLQotVmVydGV4QnVmZmVyOjpWZXJ0ZXhCdWZmZXIoSURpcmVj
dDNERGV2aWNlOSAqZGV2aWNlLCBzdGQ6OnNpemVfdCBzaXplLCBEV09SRCB1c2FnZUZsYWdzKSA6
IG1EZXZpY2UoZGV2aWNlKSwgbVZlcnRleEJ1ZmZlcihOVUxMKQotewotICAgIGlmIChzaXplID4g
MCkKLSAgICB7Ci0gICAgICAgIEQzRFBPT0wgcG9vbCA9IGdldERpc3BsYXkoKS0+Z2V0QnVmZmVy
UG9vbCh1c2FnZUZsYWdzKTsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0
ZVZlcnRleEJ1ZmZlcihzaXplLCB1c2FnZUZsYWdzLCAwLCBwb29sLCAmbVZlcnRleEJ1ZmZlciwg
TlVMTCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEVSUigiT3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIGEgdmVydGV4IGJ1ZmZl
ciBvZiBzaXplICVsdS4iLCBzaXplKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotVmVydGV4QnVm
ZmVyOjp+VmVydGV4QnVmZmVyKCkKLXsKLSAgICBpZiAobVZlcnRleEJ1ZmZlcikKLSAgICB7Ci0g
ICAgICAgIG1WZXJ0ZXhCdWZmZXItPlJlbGVhc2UoKTsKLSAgICB9Ci19Ci0KLXZvaWQgVmVydGV4
QnVmZmVyOjp1bm1hcCgpCi17Ci0gICAgaWYgKG1WZXJ0ZXhCdWZmZXIpCi0gICAgewotICAgICAg
ICBtVmVydGV4QnVmZmVyLT5VbmxvY2soKTsKLSAgICB9Ci19Ci0KLUlEaXJlY3QzRFZlcnRleEJ1
ZmZlcjkgKlZlcnRleEJ1ZmZlcjo6Z2V0QnVmZmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVZl
cnRleEJ1ZmZlcjsKLX0KLQotQ29uc3RhbnRWZXJ0ZXhCdWZmZXI6OkNvbnN0YW50VmVydGV4QnVm
ZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwg
ZmxvYXQgdykgOiBWZXJ0ZXhCdWZmZXIoZGV2aWNlLCA0ICogc2l6ZW9mKGZsb2F0KSwgRDNEVVNB
R0VfV1JJVEVPTkxZKQotewotICAgIHZvaWQgKmJ1ZmZlciA9IE5VTEw7Ci0KLSAgICBpZiAobVZl
cnRleEJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVZlcnRleEJ1ZmZl
ci0+TG9jaygwLCAwLCAmYnVmZmVyLCAwKTsKLSAgICAgCi0gICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgRVJSKCJMb2NrIGZhaWxlZCB3aXRoIGVycm9y
IDB4JTA4eCIsIHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYnVmZmVyKQot
ICAgIHsKLSAgICAgICAgZmxvYXQgKnZlY3RvciA9IChmbG9hdCopYnVmZmVyOwotCi0gICAgICAg
IHZlY3RvclswXSA9IHg7Ci0gICAgICAgIHZlY3RvclsxXSA9IHk7Ci0gICAgICAgIHZlY3Rvclsy
XSA9IHo7Ci0gICAgICAgIHZlY3RvclszXSA9IHc7Ci0KLSAgICAgICAgbVZlcnRleEJ1ZmZlci0+
VW5sb2NrKCk7Ci0gICAgfQotfQotCi1Db25zdGFudFZlcnRleEJ1ZmZlcjo6fkNvbnN0YW50VmVy
dGV4QnVmZmVyKCkKLXsKLX0KLQotQXJyYXlWZXJ0ZXhCdWZmZXI6OkFycmF5VmVydGV4QnVmZmVy
KElEaXJlY3QzRERldmljZTkgKmRldmljZSwgc3RkOjpzaXplX3Qgc2l6ZSwgRFdPUkQgdXNhZ2VG
bGFncykgOiBWZXJ0ZXhCdWZmZXIoZGV2aWNlLCBzaXplLCB1c2FnZUZsYWdzKQotewotICAgIG1C
dWZmZXJTaXplID0gc2l6ZTsKLSAgICBtV3JpdGVQb3NpdGlvbiA9IDA7Ci0gICAgbVJlcXVpcmVk
U3BhY2UgPSAwOwotfQotCi1BcnJheVZlcnRleEJ1ZmZlcjo6fkFycmF5VmVydGV4QnVmZmVyKCkK
LXsKLX0KLQotdm9pZCBBcnJheVZlcnRleEJ1ZmZlcjo6YWRkUmVxdWlyZWRTcGFjZShVSU5UIHJl
cXVpcmVkU3BhY2UpCi17Ci0gICAgbVJlcXVpcmVkU3BhY2UgKz0gcmVxdWlyZWRTcGFjZTsKLX0K
LQotdm9pZCBBcnJheVZlcnRleEJ1ZmZlcjo6YWRkUmVxdWlyZWRTcGFjZUZvcihBcnJheVZlcnRl
eEJ1ZmZlciAqYnVmZmVyKQotewotICAgIG1SZXF1aXJlZFNwYWNlICs9IGJ1ZmZlci0+bVJlcXVp
cmVkU3BhY2U7Ci19Ci0KLVN0cmVhbWluZ1ZlcnRleEJ1ZmZlcjo6U3RyZWFtaW5nVmVydGV4QnVm
ZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgc3RkOjpzaXplX3QgaW5pdGlhbFNpemUpIDog
QXJyYXlWZXJ0ZXhCdWZmZXIoZGV2aWNlLCBpbml0aWFsU2l6ZSwgRDNEVVNBR0VfRFlOQU1JQyB8
IEQzRFVTQUdFX1dSSVRFT05MWSkKLXsKLX0KLQotU3RyZWFtaW5nVmVydGV4QnVmZmVyOjp+U3Ry
ZWFtaW5nVmVydGV4QnVmZmVyKCkKLXsKLX0KLQotdm9pZCAqU3RyZWFtaW5nVmVydGV4QnVmZmVy
OjptYXAoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIHN0ZDo6c2l6ZV90IHJlcXVp
cmVkU3BhY2UsIHN0ZDo6c2l6ZV90ICpvZmZzZXQpCi17Ci0gICAgdm9pZCAqbWFwUHRyID0gTlVM
TDsKLQotICAgIGlmIChtVmVydGV4QnVmZmVyKQotICAgIHsKLSAgICAgICAgSFJFU1VMVCByZXN1
bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKG1Xcml0ZVBvc2l0aW9uLCByZXF1aXJlZFNwYWNlLCAm
bWFwUHRyLCBEM0RMT0NLX05PT1ZFUldSSVRFKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgRVJSKCJMb2NrIGZhaWxlZCB3aXRo
IGVycm9yIDB4JTA4eCIsIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAg
ICAgfQotCi0gICAgICAgICpvZmZzZXQgPSBtV3JpdGVQb3NpdGlvbjsKLSAgICAgICAgbVdyaXRl
UG9zaXRpb24gKz0gcmVxdWlyZWRTcGFjZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWFwUHRyOwot
fQotCi12b2lkIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlcjo6cmVzZXJ2ZVJlcXVpcmVkU3BhY2UoKQot
ewotICAgIGlmIChtUmVxdWlyZWRTcGFjZSA+IG1CdWZmZXJTaXplKQotICAgIHsKLSAgICAgICAg
aWYgKG1WZXJ0ZXhCdWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1WZXJ0ZXhCdWZmZXIt
PlJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1WZXJ0ZXhCdWZmZXIgPSBOVUxMOwotICAgICAgICB9
Ci0KLSAgICAgICAgbUJ1ZmZlclNpemUgPSBzdGQ6Om1heChtUmVxdWlyZWRTcGFjZSwgMyAqIG1C
dWZmZXJTaXplIC8gMik7ICAgLy8gMS41IHggbUJ1ZmZlclNpemUgaXMgYXJiaXRyYXJ5IGFuZCBz
aG91bGQgYmUgY2hlY2tlZCB0byBzZWUgd2UgZG9uJ3QgaGF2ZSB0b28gbWFueSByZWFsbG9jYXRp
b25zLgotCi0gICAgICAgIEQzRFBPT0wgcG9vbCA9IGdldERpc3BsYXkoKS0+Z2V0QnVmZmVyUG9v
bChEM0RVU0FHRV9EWU5BTUlDIHwgRDNEVVNBR0VfV1JJVEVPTkxZKTsKLSAgICAgICAgSFJFU1VM
VCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVWZXJ0ZXhCdWZmZXIobUJ1ZmZlclNpemUsIEQzRFVT
QUdFX0RZTkFNSUMgfCBEM0RVU0FHRV9XUklURU9OTFksIDAsIHBvb2wsICZtVmVydGV4QnVmZmVy
LCBOVUxMKTsKLSAgICAKLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBFUlIoIk91dCBvZiBtZW1vcnkgYWxsb2NhdGluZyBhIHZlcnRleCBidWZmZXIg
b2Ygc2l6ZSAlbHUuIiwgbUJ1ZmZlclNpemUpOwotICAgICAgICB9Ci0KLSAgICAgICAgbVdyaXRl
UG9zaXRpb24gPSAwOwotICAgIH0KLSAgICBlbHNlIGlmIChtV3JpdGVQb3NpdGlvbiArIG1SZXF1
aXJlZFNwYWNlID4gbUJ1ZmZlclNpemUpICAgLy8gUmVjeWNsZQotICAgIHsKLSAgICAgICAgaWYg
KG1WZXJ0ZXhCdWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZvaWQgKmR1bW15OwotICAg
ICAgICAgICAgbVZlcnRleEJ1ZmZlci0+TG9jaygwLCAxLCAmZHVtbXksIEQzRExPQ0tfRElTQ0FS
RCk7Ci0gICAgICAgICAgICBtVmVydGV4QnVmZmVyLT5VbmxvY2soKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1Xcml0ZVBvc2l0aW9uID0gMDsKLSAgICB9Ci0KLSAgICBtUmVxdWlyZWRTcGFjZSA9
IDA7Ci19Ci0KLVN0YXRpY1ZlcnRleEJ1ZmZlcjo6U3RhdGljVmVydGV4QnVmZmVyKElEaXJlY3Qz
RERldmljZTkgKmRldmljZSkgOiBBcnJheVZlcnRleEJ1ZmZlcihkZXZpY2UsIDAsIEQzRFVTQUdF
X1dSSVRFT05MWSkKLXsKLX0KLQotU3RhdGljVmVydGV4QnVmZmVyOjp+U3RhdGljVmVydGV4QnVm
ZmVyKCkKLXsKLX0KLQotdm9pZCAqU3RhdGljVmVydGV4QnVmZmVyOjptYXAoY29uc3QgVmVydGV4
QXR0cmlidXRlICZhdHRyaWJ1dGUsIHN0ZDo6c2l6ZV90IHJlcXVpcmVkU3BhY2UsIFVJTlQgKnN0
cmVhbU9mZnNldCkKLXsKLSAgICB2b2lkICptYXBQdHIgPSBOVUxMOwotCi0gICAgaWYgKG1WZXJ0
ZXhCdWZmZXIpCi0gICAgewotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1WZXJ0ZXhCdWZmZXIt
PkxvY2sobVdyaXRlUG9zaXRpb24sIHJlcXVpcmVkU3BhY2UsICZtYXBQdHIsIDApOwotICAgICAg
ICAKLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBF
UlIoIkxvY2sgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKLSAgICAgICAgICAg
IHJldHVybiBOVUxMOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGF0dHJpYnV0ZU9mZnNldCA9
IGF0dHJpYnV0ZS5tT2Zmc2V0ICUgYXR0cmlidXRlLnN0cmlkZSgpOwotICAgICAgICBWZXJ0ZXhF
bGVtZW50IGVsZW1lbnQgPSB7YXR0cmlidXRlLm1UeXBlLCBhdHRyaWJ1dGUubVNpemUsIGF0dHJp
YnV0ZS5tTm9ybWFsaXplZCwgYXR0cmlidXRlT2Zmc2V0LCBtV3JpdGVQb3NpdGlvbn07Ci0gICAg
ICAgIG1DYWNoZS5wdXNoX2JhY2soZWxlbWVudCk7Ci0KLSAgICAgICAgKnN0cmVhbU9mZnNldCA9
IG1Xcml0ZVBvc2l0aW9uOwotICAgICAgICBtV3JpdGVQb3NpdGlvbiArPSByZXF1aXJlZFNwYWNl
OwotICAgIH0KLQotICAgIHJldHVybiBtYXBQdHI7Ci19Ci0KLXZvaWQgU3RhdGljVmVydGV4QnVm
ZmVyOjpyZXNlcnZlUmVxdWlyZWRTcGFjZSgpCi17Ci0gICAgaWYgKCFtVmVydGV4QnVmZmVyICYm
IG1CdWZmZXJTaXplID09IDApCi0gICAgewotICAgICAgICBEM0RQT09MIHBvb2wgPSBnZXREaXNw
bGF5KCktPmdldEJ1ZmZlclBvb2woRDNEVVNBR0VfV1JJVEVPTkxZKTsKLSAgICAgICAgSFJFU1VM
VCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVWZXJ0ZXhCdWZmZXIobVJlcXVpcmVkU3BhY2UsIEQz
RFVTQUdFX1dSSVRFT05MWSwgMCwgcG9vbCwgJm1WZXJ0ZXhCdWZmZXIsIE5VTEwpOwotICAgIAot
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVSUigi
T3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIGEgdmVydGV4IGJ1ZmZlciBvZiBzaXplICVsdS4iLCBt
UmVxdWlyZWRTcGFjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtQnVmZmVyU2l6ZSA9IG1SZXF1
aXJlZFNwYWNlOwotICAgIH0KLSAgICBlbHNlIGlmIChtVmVydGV4QnVmZmVyICYmIG1CdWZmZXJT
aXplID49IG1SZXF1aXJlZFNwYWNlKQotICAgIHsKLSAgICAgICAgLy8gQWxyZWFkeSBhbGxvY2F0
ZWQKLSAgICB9Ci0gICAgZWxzZSBVTlJFQUNIQUJMRSgpOyAgIC8vIFN0YXRpYyB2ZXJ0ZXggYnVm
ZmVycyBjYW4ndCBiZSByZXNpemVkCi0KLSAgICBtUmVxdWlyZWRTcGFjZSA9IDA7Ci19Ci0KLVVJ
TlQgU3RhdGljVmVydGV4QnVmZmVyOjpsb29rdXBBdHRyaWJ1dGUoY29uc3QgVmVydGV4QXR0cmli
dXRlICZhdHRyaWJ1dGUpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgZWxlbWVudCA9IDA7IGVs
ZW1lbnQgPCBtQ2FjaGUuc2l6ZSgpOyBlbGVtZW50KyspCi0gICAgewotICAgICAgICBpZiAobUNh
Y2hlW2VsZW1lbnRdLnR5cGUgPT0gYXR0cmlidXRlLm1UeXBlICYmICBtQ2FjaGVbZWxlbWVudF0u
c2l6ZSA9PSBhdHRyaWJ1dGUubVNpemUgJiYgbUNhY2hlW2VsZW1lbnRdLm5vcm1hbGl6ZWQgPT0g
YXR0cmlidXRlLm1Ob3JtYWxpemVkKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobUNhY2hl
W2VsZW1lbnRdLmF0dHJpYnV0ZU9mZnNldCA9PSBhdHRyaWJ1dGUubU9mZnNldCAlIGF0dHJpYnV0
ZS5zdHJpZGUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbUNhY2hl
W2VsZW1lbnRdLnN0cmVhbU9mZnNldDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiAtMTsKLX0KLQotY29uc3QgVmVydGV4RGF0YU1hbmFnZXI6OkZvcm1hdENv
bnZlcnRlciAmVmVydGV4RGF0YU1hbmFnZXI6OmZvcm1hdENvbnZlcnRlcihjb25zdCBWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYnV0ZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbUF0dHJpYnV0ZVR5cGVz
W3R5cGVJbmRleChhdHRyaWJ1dGUubVR5cGUpXVthdHRyaWJ1dGUubU5vcm1hbGl6ZWRdW2F0dHJp
YnV0ZS5tU2l6ZSAtIDFdOwotfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9nZW9tZXRyeS9WZXJ0ZXhEYXRhTWFuYWdlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9nZW9tZXRyeS9WZXJ0ZXhEYXRhTWFuYWdlci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTdmMmMzMDkzMGQzYWU4NjIzMjZjYmZj
M2I4OWFiMTNjNTE4NjdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2VvbWV0cnkvVmVy
dGV4RGF0YU1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotCi0vLyBnZW9tZXRyeS9WZXJ0ZXhEYXRhTWFuYWdlci5oOiBEZWZpbmVzIHRo
ZSBWZXJ0ZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0aGF0Ci0vLyBydW5zIHRoZSBCdWZmZXIgdHJh
bnNsYXRpb24gcHJvY2Vzcy4KLQotI2lmbmRlZiBMSUJHTEVTVjJfR0VPTUVUUllfVkVSVEVYREFU
QU1BTkFHRVJfSF8KLSNkZWZpbmUgTElCR0xFU1YyX0dFT01FVFJZX1ZFUlRFWERBVEFNQU5BR0VS
X0hfCi0KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2RlZmluZSBH
TF9BUElDQUxMCi0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0KLSNpbmNsdWRlICJsaWJHTEVTdjIv
Q29udGV4dC5oIgotCi1uYW1lc3BhY2UgZ2wKLXsKLQotc3RydWN0IFRyYW5zbGF0ZWRBdHRyaWJ1
dGUKLXsKLSAgICBib29sIGFjdGl2ZTsKLQotICAgIEQzRERFQ0xUWVBFIHR5cGU7Ci0gICAgVUlO
VCBvZmZzZXQ7Ci0gICAgVUlOVCBzdHJpZGU7ICAgLy8gMCBtZWFucyBub3QgdG8gYWR2YW5jZSB0
aGUgcmVhZCBwb2ludGVyIGF0IGFsbAotICAgIFVJTlQgc2VtYW50aWNJbmRleDsKLQotICAgIElE
aXJlY3QzRFZlcnRleEJ1ZmZlcjkgKnZlcnRleEJ1ZmZlcjsKLX07Ci0KLWNsYXNzIFZlcnRleEJ1
ZmZlcgotewotICBwdWJsaWM6Ci0gICAgVmVydGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRl
dmljZSwgVUlOVCBzaXplLCBEV09SRCB1c2FnZUZsYWdzKTsKLSAgICB2aXJ0dWFsIH5WZXJ0ZXhC
dWZmZXIoKTsKLQotICAgIHZvaWQgdW5tYXAoKTsKLQotICAgIElEaXJlY3QzRFZlcnRleEJ1ZmZl
cjkgKmdldEJ1ZmZlcigpIGNvbnN0OwotCi0gIHByb3RlY3RlZDoKLSAgICBJRGlyZWN0M0REZXZp
Y2U5ICpjb25zdCBtRGV2aWNlOwotICAgIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKm1WZXJ0ZXhC
dWZmZXI7Ci0KLSAgcHJpdmF0ZToKLSAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4
QnVmZmVyKTsKLX07Ci0KLWNsYXNzIENvbnN0YW50VmVydGV4QnVmZmVyIDogcHVibGljIFZlcnRl
eEJ1ZmZlcgotewotICBwdWJsaWM6Ci0gICAgQ29uc3RhbnRWZXJ0ZXhCdWZmZXIoSURpcmVjdDNE
RGV2aWNlOSAqZGV2aWNlLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KTsKLSAg
ICB+Q29uc3RhbnRWZXJ0ZXhCdWZmZXIoKTsKLX07Ci0KLWNsYXNzIEFycmF5VmVydGV4QnVmZmVy
IDogcHVibGljIFZlcnRleEJ1ZmZlcgotewotICBwdWJsaWM6Ci0gICAgQXJyYXlWZXJ0ZXhCdWZm
ZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBVSU5UIHNpemUsIERXT1JEIHVzYWdlRmxhZ3Mp
OwotICAgIH5BcnJheVZlcnRleEJ1ZmZlcigpOwotCi0gICAgVUlOVCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbUJ1ZmZlclNpemU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgKm1hcChjb25zdCBWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYnV0ZSwgVUlOVCByZXF1aXJlZFNwYWNlLCBVSU5UICpzdHJlYW1PZmZz
ZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXJ2ZVJlcXVpcmVkU3BhY2UoKSA9IDA7Ci0g
ICAgdm9pZCBhZGRSZXF1aXJlZFNwYWNlKFVJTlQgcmVxdWlyZWRTcGFjZSk7Ci0gICAgdm9pZCBh
ZGRSZXF1aXJlZFNwYWNlRm9yKEFycmF5VmVydGV4QnVmZmVyICpidWZmZXIpOwotCi0gIHByb3Rl
Y3RlZDoKLSAgICBVSU5UIG1CdWZmZXJTaXplOwotICAgIFVJTlQgbVdyaXRlUG9zaXRpb247Ci0g
ICAgVUlOVCBtUmVxdWlyZWRTcGFjZTsKLX07Ci0KLWNsYXNzIFN0cmVhbWluZ1ZlcnRleEJ1ZmZl
ciA6IHB1YmxpYyBBcnJheVZlcnRleEJ1ZmZlcgotewotICBwdWJsaWM6Ci0gICAgU3RyZWFtaW5n
VmVydGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgVUlOVCBpbml0aWFsU2l6ZSk7
Ci0gICAgflN0cmVhbWluZ1ZlcnRleEJ1ZmZlcigpOwotCi0gICAgdm9pZCAqbWFwKGNvbnN0IFZl
cnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBVSU5UIHJlcXVpcmVkU3BhY2UsIFVJTlQgKnN0cmVh
bU9mZnNldCk7Ci0gICAgdm9pZCByZXNlcnZlUmVxdWlyZWRTcGFjZSgpOwotfTsKLQotY2xhc3Mg
U3RhdGljVmVydGV4QnVmZmVyIDogcHVibGljIEFycmF5VmVydGV4QnVmZmVyCi17Ci0gIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBTdGF0aWNWZXJ0ZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2
aWNlKTsKLSAgICB+U3RhdGljVmVydGV4QnVmZmVyKCk7Ci0KLSAgICB2b2lkICptYXAoY29uc3Qg
VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIFVJTlQgcmVxdWlyZWRTcGFjZSwgVUlOVCAqc3Ry
ZWFtT2Zmc2V0KTsKLSAgICB2b2lkIHJlc2VydmVSZXF1aXJlZFNwYWNlKCk7Ci0KLSAgICBVSU5U
IGxvb2t1cEF0dHJpYnV0ZShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7ICAgLy8g
UmV0dXJucyB0aGUgb2Zmc2V0IGludG8gdGhlIHZlcnRleCBidWZmZXIsIG9yIC0xIGlmIG5vdCBm
b3VuZAotCi0gIHByaXZhdGU6Ci0gICAgc3RydWN0IFZlcnRleEVsZW1lbnQKLSAgICB7Ci0gICAg
ICAgIEdMZW51bSB0eXBlOwotICAgICAgICBHTGludCBzaXplOwotICAgICAgICBib29sIG5vcm1h
bGl6ZWQ7Ci0gICAgICAgIGludCBhdHRyaWJ1dGVPZmZzZXQ7Ci0KLSAgICAgICAgVUlOVCBzdHJl
YW1PZmZzZXQ7Ci0gICAgfTsKLQotICAgIHN0ZDo6dmVjdG9yPFZlcnRleEVsZW1lbnQ+IG1DYWNo
ZTsKLX07Ci0KLWNsYXNzIFZlcnRleERhdGFNYW5hZ2VyCi17Ci0gIHB1YmxpYzoKLSAgICBWZXJ0
ZXhEYXRhTWFuYWdlcihDb250ZXh0ICpjb250ZXh0LCBJRGlyZWN0M0REZXZpY2U5ICpiYWNrZW5k
KTsKLSAgICB2aXJ0dWFsIH5WZXJ0ZXhEYXRhTWFuYWdlcigpOwotCi0gICAgdm9pZCBkaXJ0eUN1
cnJlbnRWYWx1ZShpbnQgaW5kZXgpIHsgbURpcnR5Q3VycmVudFZhbHVlW2luZGV4XSA9IHRydWU7
IH0KLQotICAgIHZvaWQgc2V0dXBBdHRyaWJ1dGVzKGNvbnN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGUg
KmF0dHJpYnV0ZXMpOwotICAgIEdMZW51bSBwcmVwYXJlVmVydGV4RGF0YShHTGludCBzdGFydCwg
R0xzaXplaSBjb3VudCwgVHJhbnNsYXRlZEF0dHJpYnV0ZSAqb3V0QXR0cmlicyk7Ci0KLSAgcHJp
dmF0ZToKLSAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4RGF0YU1hbmFnZXIpOwot
Ci0gICAgVUlOVCBzcGFjZVJlcXVpcmVkKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBz
dGQ6OnNpemVfdCBjb3VudCkgY29uc3Q7Ci0gICAgVUlOVCB3cml0ZUF0dHJpYnV0ZURhdGEoQXJy
YXlWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlciwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQs
IGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKTsKLQotICAgIENvbnRleHQgKmNvbnN0
IG1Db250ZXh0OwotICAgIElEaXJlY3QzRERldmljZTkgKmNvbnN0IG1EZXZpY2U7Ci0KLSAgICBT
dHJlYW1pbmdWZXJ0ZXhCdWZmZXIgKm1TdHJlYW1pbmdCdWZmZXI7Ci0KLSAgICBib29sIG1EaXJ0
eUN1cnJlbnRWYWx1ZVtNQVhfVkVSVEVYX0FUVFJJQlNdOwotICAgIENvbnN0YW50VmVydGV4QnVm
ZmVyICptQ3VycmVudFZhbHVlQnVmZmVyW01BWF9WRVJURVhfQVRUUklCU107Ci0KLSAgICAvLyBB
dHRyaWJ1dGUgZm9ybWF0IGNvbnZlcnNpb24KLSAgICBzdHJ1Y3QgRm9ybWF0Q29udmVydGVyCi0g
ICAgewotICAgICAgICBib29sIGlkZW50aXR5OwotICAgICAgICBzdGQ6OnNpemVfdCBvdXRwdXRF
bGVtZW50U2l6ZTsKLSAgICAgICAgdm9pZCAoKmNvbnZlcnRBcnJheSkoY29uc3Qgdm9pZCAqaW4s
IHN0ZDo6c2l6ZV90IHN0cmlkZSwgc3RkOjpzaXplX3Qgbiwgdm9pZCAqb3V0KTsKLSAgICAgICAg
RDNEREVDTFRZUEUgZDNkRGVjbFR5cGU7Ci0gICAgfTsKLQotICAgIGVudW0geyBOVU1fR0xfVkVS
VEVYX0FUVFJJQl9UWVBFUyA9IDYgfTsKLQotICAgIEZvcm1hdENvbnZlcnRlciBtQXR0cmlidXRl
VHlwZXNbTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVNdWzJdWzRdOyAgIC8vIFtHTCB0eXBlcyBh
cyBlbnVtZXJhdGVkIGJ5IHR5cGVJbmRleCgpXVtub3JtYWxpemVkXVtzaXplIC0gMV0KLQotICAg
IHN0cnVjdCBUcmFuc2xhdGlvbkRlc2NyaXB0aW9uCi0gICAgewotICAgICAgICBEV09SRCBjYXBz
RmxhZzsKLSAgICAgICAgRm9ybWF0Q29udmVydGVyIHByZWZlcnJlZENvbnZlcnNpb247Ci0gICAg
ICAgIEZvcm1hdENvbnZlcnRlciBmYWxsYmFja0NvbnZlcnNpb247Ci0gICAgfTsKLQotICAgIC8v
IFRoaXMgdGFibGUgaXMgdXNlZCB0byBnZW5lcmF0ZSBtQXR0cmlidXRlVHlwZXMuCi0gICAgc3Rh
dGljIGNvbnN0IFRyYW5zbGF0aW9uRGVzY3JpcHRpb24gbVBvc3NpYmxlVHJhbnNsYXRpb25zW05V
TV9HTF9WRVJURVhfQVRUUklCX1RZUEVTXVsyXVs0XTsgLy8gW0dMIHR5cGVzIGFzIGVudW1lcmF0
ZWQgYnkgdHlwZUluZGV4KCldW25vcm1hbGl6ZWRdW3NpemUgLSAxXQotCi0gICAgdm9pZCBjaGVj
a1ZlcnRleENhcHMoRFdPUkQgZGVjbFR5cGVzKTsKLQotICAgIHVuc2lnbmVkIGludCB0eXBlSW5k
ZXgoR0xlbnVtIHR5cGUpIGNvbnN0OwotICAgIGNvbnN0IEZvcm1hdENvbnZlcnRlciAmZm9ybWF0
Q29udmVydGVyKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKSBjb25zdDsKLX07Ci0K
LX0KLQotI2VuZGlmICAgLy8gTElCR0xFU1YyX0dFT01FVFJZX1ZFUlRFWERBVEFNQU5BR0VSX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dlb21l
dHJ5L3ZlcnRleGNvbnZlcnNpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvZ2VvbWV0cnkvdmVydGV4Y29udmVyc2lvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNTVkYzcyY2U2MGVlODkwOWNmM2I0NTM4Y2NjMmZlNDJmOWUzZDM3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2VvbWV0cnkvdmVydGV4Y29udmVyc2lvbi5oCisrKyAvZGV2
L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIGdlb21ldHJ5
L3ZlcnRleGNvbnZlcnNpb24uaDogQSBsaWJyYXJ5IG9mIHZlcnRleCBjb252ZXJzaW9uIGNsYXNz
ZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZAotLy8gdGhlIEZvcm1hdENvbnZlcnRlciBvYmpl
Y3RzIHVzZWQgYnkgdGhlIGJ1ZmZlciBjb252ZXJzaW9uIHN5c3RlbS4KLQotI2lmbmRlZiBMSUJH
TEVTVjJfR0VPTUVUUllfVkVSVEVYQ09OVkVSU0lPTl9IXwotI2RlZmluZSBMSUJHTEVTVjJfR0VP
TUVUUllfVkVSVEVYQ09OVkVSU0lPTl9IXwotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRl
IDxsaW1pdHM+Ci0KLSNpbmNsdWRlICJsaWJHTEVTdjIvQ29udGV4dC5oIiAvLyBEZWZpbmVzIElu
ZGV4Ci0KLW5hbWVzcGFjZSBnbAotewotCi0vLyBDb252ZXJzaW9uIHR5cGVzOgotLy8gc3RhdGlj
IGNvbnN0IGJvb2wgaWRlbnRpdHk6IHRydWUgaWYgdGhpcyBpcyBhbiBpZGVudGl0eSB0cmFuc2Zv
cm0sIGZhbHNlIG90aGVyd2lzZQotLy8gc3RhdGljIFUgY29udmVydChUKTogY29udmVydCBhIHNp
bmdsZSBlbGVtZW50IGZyb20gdGhlIGlucHV0IHR5cGUgdG8gdGhlIG91dHB1dCB0eXBlCi0vLyB0
eXBlZGVmIC4uLiBPdXRwdXRUeXBlOiB0aGUgdHlwZSBwcm9kdWNlZCBieSB0aGlzIGNvbnZlcnNp
b24KLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgSWRlbnRpdHkKLXsKLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpZGVudGl0eSA9IHRydWU7Ci0KLSAgICB0eXBlZGVmIFQgT3V0cHV0VHlwZTsK
LQotICAgIHN0YXRpYyBUIGNvbnZlcnQoVCB4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHg7Ci0g
ICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEZyb21ULCBjbGFzcyBUb1Q+Ci1zdHJ1Y3QgQ2Fz
dAotewotICAgIHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5ID0gZmFsc2U7Ci0KLSAgICB0eXBl
ZGVmIFRvVCBPdXRwdXRUeXBlOwotCi0gICAgc3RhdGljIFRvVCBjb252ZXJ0KEZyb21UIHgpCi0g
ICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VG9UPih4KTsKLSAgICB9Ci19OwotCi10
ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBDYXN0PFQsIFQ+Ci17Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaWRlbnRpdHkgPSB0cnVlOwotCi0gICAgdHlwZWRlZiBUIE91dHB1dFR5cGU7Ci0KLSAg
ICBzdGF0aWMgVCBjb252ZXJ0KFQgeCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUPih4KTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBOb3JtYWxp
emUKLXsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eSA9IGZhbHNlOwotCi0gICAgdHlw
ZWRlZiBmbG9hdCBPdXRwdXRUeXBlOwotCi0gICAgc3RhdGljIGZsb2F0IGNvbnZlcnQoVCB4KQot
ICAgIHsKLSAgICAgICAgdHlwZWRlZiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+IE5MOwotICAgICAg
ICBmbG9hdCBmID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHgpOwotCi0gICAgICAgIGlmIChOTDo6aXNf
c2lnbmVkKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBjb25zdCBmbG9hdCA9PiBWQzIwMDgg
Y29tcHV0ZXMgaXQgYXQgY29tcGlsZSB0aW1lCi0gICAgICAgICAgICAvLyBzdGF0aWMgY29uc3Qg
ZmxvYXQgPT4gVkMyMDA4IGNvbXB1dGVzIGl0IHRoZSBmaXJzdCB0aW1lIHdlIGdldCBoZXJlLCBz
dG9yZXMgaXQgdG8gbWVtb3J5IHdpdGggc3RhdGljIGd1YXJkIGFuZCBhbGwgdGhhdC4KLSAgICAg
ICAgICAgIGNvbnN0IGZsb2F0IGRpdmlzb3IgPSAxLjBmLygyKnN0YXRpY19jYXN0PGZsb2F0PihO
TDo6bWF4KCkpKzEpOwotICAgICAgICAgICAgcmV0dXJuICgyKmYrMSkqZGl2aXNvcjsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmL05MOjpt
YXgoKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBGcm9tVHlwZSwg
c3RkOjpzaXplX3QgU2NhbGVCaXRzPgotc3RydWN0IEZpeGVkVG9GbG9hdAotewotICAgIHN0YXRp
YyBjb25zdCBib29sIGlkZW50aXR5ID0gZmFsc2U7Ci0KLSAgICB0eXBlZGVmIGZsb2F0IE91dHB1
dFR5cGU7Ci0KLSAgICBzdGF0aWMgZmxvYXQgY29udmVydChGcm9tVHlwZSB4KQotICAgIHsKLSAg
ICAgICAgY29uc3QgZmxvYXQgZGl2aXNvciA9IDEuMGYgLyBzdGF0aWNfY2FzdDxmbG9hdD4oc3Rh
dGljX2Nhc3Q8RnJvbVR5cGU+KDEpIDw8IFNjYWxlQml0cyk7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4oeCkgKiBkaXZpc29yOwotICAgIH0KLX07Ci0KLS8vIFdpZGVuIHR5cGVz
OgotLy8gc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBpbml0aWFsV2lkdGg6IG51bWJlciBvZiBj
b21wb25lbnRzIGJlZm9yZSBjb252ZXJzaW9uCi0vLyBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50
IGZpbmFsV2lkdGg6IG51bWJlciBvZiBjb21wb25lbnRzIGFmdGVyIGNvbnZlcnNpb24KLQotLy8g
RmxvYXQgaXMgc3VwcG9ydGVkIGF0IGFueSBzaXplLgotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+
Ci1zdHJ1Y3QgTm9XaWRlbgotewotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBpbml0aWFs
V2lkdGggPSBOOwotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFdpZHRoID0gTjsK
LX07Ci0KLS8vIFNIT1JULCBub3JtLVNIT1JULCBub3JtLVVOU0lHTkVEX1NIT1JUIGFyZSBzdXBw
b3J0ZWQgYnV0IG9ubHkgd2l0aCAyIG9yIDQgY29tcG9uZW50cwotdGVtcGxhdGUgPHN0ZDo6c2l6
ZV90IE4+Ci1zdHJ1Y3QgV2lkZW5Ub0V2ZW4KLXsKLSAgICBzdGF0aWMgY29uc3Qgc3RkOjpzaXpl
X3QgaW5pdGlhbFdpZHRoID0gTjsKLSAgICBzdGF0aWMgY29uc3Qgc3RkOjpzaXplX3QgZmluYWxX
aWR0aCA9IE4rKE4mMSk7Ci19OwotCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLXN0cnVjdCBX
aWRlblRvRm91cgotewotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBpbml0aWFsV2lkdGgg
PSBOOwotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFdpZHRoID0gNDsKLX07Ci0K
LS8vIE1vc3QgdHlwZXMgaGF2ZSAwIGFuZCAxIHRoYXQgYXJlIGp1c3QgdGhhdC4KLXRlbXBsYXRl
IDxjbGFzcyBUPgotc3RydWN0IFNpbXBsZURlZmF1bHRWYWx1ZXMKLXsKLSAgICBzdGF0aWMgVCB6
ZXJvKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oMCk7IH0KLSAgICBzdGF0aWMgVCBvbmUoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxUPigxKTsgfQotfTsKLQotLy8gQnV0IG5vcm1hbGlzZWQgdHlw
ZXMgb25seSBzdG9yZSBbMCwxXSBvciBbLTEsMV0gc28gMS4wIGlzIHJlcHJlc2VudGVkIGJ5IHRo
ZSBtYXggdmFsdWUuCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBOb3JtYWxpemVkRGVmYXVs
dFZhbHVlcwotewotICAgIHN0YXRpYyBUIHplcm8oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUPigw
KTsgfQotICAgIHN0YXRpYyBUIG9uZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46
Om1heCgpOyB9Ci19OwotCi0vLyBDb252ZXJ0ZXI6Ci0vLyBzdGF0aWMgY29uc3QgYm9vbCBpZGVu
dGl0eTogdHJ1ZSBpZiB0aGlzIGlzIGFuIGlkZW50aXR5IHRyYW5zZm9ybSAod2l0aCBubyB3aWRl
bmluZykKLS8vIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFNpemU6IG51bWJlciBvZiBi
eXRlcyBwZXIgb3V0cHV0IHZlcnRleAotLy8gc3RhdGljIHZvaWQgY29udmVydEFycmF5KGNvbnN0
IHZvaWQgKmluLCBzdGQ6OnNpemVfdCBzdHJpZGUsIHN0ZDo6c2l6ZV90IG4sIHZvaWQgKm91dCk6
IGNvbnZlcnQgYW4gYXJyYXkgb2YgdmVydGljZXMuIElucHV0IG1heSBiZSBzdHJpZGVkLCBidXQg
b3V0cHV0IHdpbGwgYmUgdW5zdHJpZGVkLgotCi10ZW1wbGF0ZSA8Y2xhc3MgSW5ULCBjbGFzcyBX
aWRlblJ1bGUsIGNsYXNzIENvbnZlcnRlciwgY2xhc3MgRGVmYXVsdFZhbHVlUnVsZSA9IFNpbXBs
ZURlZmF1bHRWYWx1ZXM8SW5UPiA+Ci1zdHJ1Y3QgVmVydGV4RGF0YUNvbnZlcnRlcgotewotICAg
IHR5cGVkZWYgdHlwZW5hbWUgQ29udmVydGVyOjpPdXRwdXRUeXBlIE91dHB1dFR5cGU7Ci0gICAg
dHlwZWRlZiBJblQgSW5wdXRUeXBlOwotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgaWRlbnRpdHkg
PSAoV2lkZW5SdWxlOjppbml0aWFsV2lkdGggPT0gV2lkZW5SdWxlOjpmaW5hbFdpZHRoKSAmJiBD
b252ZXJ0ZXI6OmlkZW50aXR5OwotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFNp
emUgPSBXaWRlblJ1bGU6OmZpbmFsV2lkdGggKiBzaXplb2YoT3V0cHV0VHlwZSk7Ci0KLSAgICBz
dGF0aWMgdm9pZCBjb252ZXJ0QXJyYXkoY29uc3QgSW5wdXRUeXBlICppbiwgc3RkOjpzaXplX3Qg
c3RyaWRlLCBzdGQ6OnNpemVfdCBuLCBPdXRwdXRUeXBlICpvdXQpCi0gICAgewotICAgICAgICBm
b3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb25zdCBJbnB1dFR5cGUgKmVpbiA9IHBvaW50ZXJBZGRCeXRlcyhpbiwgaSAqIHN0cmlkZSk7
Ci0KLSAgICAgICAgICAgIGNvcHlDb21wb25lbnQob3V0LCBlaW4sIDAsIHN0YXRpY19jYXN0PE91
dHB1dFR5cGU+KERlZmF1bHRWYWx1ZVJ1bGU6Onplcm8oKSkpOwotICAgICAgICAgICAgY29weUNv
bXBvbmVudChvdXQsIGVpbiwgMSwgc3RhdGljX2Nhc3Q8T3V0cHV0VHlwZT4oRGVmYXVsdFZhbHVl
UnVsZTo6emVybygpKSk7Ci0gICAgICAgICAgICBjb3B5Q29tcG9uZW50KG91dCwgZWluLCAyLCBz
dGF0aWNfY2FzdDxPdXRwdXRUeXBlPihEZWZhdWx0VmFsdWVSdWxlOjp6ZXJvKCkpKTsKLSAgICAg
ICAgICAgIGNvcHlDb21wb25lbnQob3V0LCBlaW4sIDMsIHN0YXRpY19jYXN0PE91dHB1dFR5cGU+
KERlZmF1bHRWYWx1ZVJ1bGU6Om9uZSgpKSk7Ci0KLSAgICAgICAgICAgIG91dCArPSBXaWRlblJ1
bGU6OmZpbmFsV2lkdGg7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBjb252
ZXJ0QXJyYXkoY29uc3Qgdm9pZCAqaW4sIHN0ZDo6c2l6ZV90IHN0cmlkZSwgc3RkOjpzaXplX3Qg
biwgdm9pZCAqb3V0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRBcnJheShzdGF0aWNf
Y2FzdDxjb25zdCBJbnB1dFR5cGUqPihpbiksIHN0cmlkZSwgbiwgc3RhdGljX2Nhc3Q8T3V0cHV0
VHlwZSo+KG91dCkpOwotICAgIH0KLQotICBwcml2YXRlOgotICAgIC8vIEFkdmFuY2UgdGhlIGdp
dmVuIHBvaW50ZXIgYnkgYSBudW1iZXIgb2YgYnl0ZXMgKG5vdCBwb2ludGVkLXRvIGVsZW1lbnRz
KS4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdGF0aWMgVCAqcG9pbnRlckFkZEJ5dGVz
KFQgKmJhc2VQdHIsIHN0ZDo6c2l6ZV90IG51bUJ5dGVzKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VCAqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYmFzZVB0
cikgKyBudW1CeXRlcyk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgY29weUNvbXBvbmVudChP
dXRwdXRUeXBlICpvdXQsIGNvbnN0IElucHV0VHlwZSAqaW4sIHN0ZDo6c2l6ZV90IGVsZW1lbnRp
bmRleCwgT3V0cHV0VHlwZSBkZWZhdWx0dmFsdWUpCi0gICAgewotICAgICAgICBpZiAoV2lkZW5S
dWxlOjpmaW5hbFdpZHRoID4gZWxlbWVudGluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoV2lkZW5SdWxlOjppbml0aWFsV2lkdGggPiBlbGVtZW50aW5kZXgpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgb3V0W2VsZW1lbnRpbmRleF0gPSBDb252ZXJ0ZXI6OmNvbnZlcnQo
aW5bZWxlbWVudGluZGV4XSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0W2VsZW1lbnRpbmRleF0gPSBkZWZhdWx0dmFs
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi19Ci0KLSNlbmRpZiAg
IC8vIExJQkdMRVNWMl9HRU9NRVRSWV9WRVJURVhDT05WRVJTSU9OX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHAKaW5kZXggMjM5
NTdmZTZkMmVhNmZmOTI1YTNjYmM0OWFhMjBlNzcxZjdmZTM2ZS4uMzAwNTViYjgzMjE4NmJiY2Vi
NjY5NzYwMDM5NGU4YzkwNjVkZmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmNwcApAQCAtNTMsNiArNTMsODEgQEAgYm9vbCB2
YWxpZEltYWdlU2l6ZShHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIHZhbGlkYXRlU3ViSW1hZ2VQYXJhbXMoYm9v
bCBjb21wcmVzc2VkLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBmb3JtYXQsIGdsOjpUZXh0dXJl
ICp0ZXh0dXJlKQoreworICAgIGlmICghdGV4dHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgZmFsc2UpOworICAgIH0KKworICAgIGlmIChjb21w
cmVzc2VkICE9IHRleHR1cmUtPmlzQ29tcHJlc3NlZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgaWYgKGZv
cm1hdCAhPSBHTF9OT05FICYmIGZvcm1hdCAhPSB0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1hdCgp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxz
ZSk7CisgICAgfQorCisgICAgaWYgKGNvbXByZXNzZWQpCisgICAgeworICAgICAgICBpZiAoKHdp
ZHRoICUgNCAhPSAwICYmIHdpZHRoICE9IHRleHR1cmUtPmdldFdpZHRoKDApKSB8fCAKKyAgICAg
ICAgICAgIChoZWlnaHQgJSA0ICE9IDAgJiYgaGVpZ2h0ICE9IHRleHR1cmUtPmdldEhlaWdodCgw
KSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHhvZmZzZXQgKyB3aWR0
aCA+IHRleHR1cmUtPmdldFdpZHRoKGxldmVsKSB8fAorICAgICAgICB5b2Zmc2V0ICsgaGVpZ2h0
ID4gdGV4dHVyZS0+Z2V0SGVpZ2h0KGxldmVsKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX1ZBTFVFLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKKy8vIGNoZWNrIGZvciBjb21iaW5hdGlvbnMgb2YgZm9ybWF0IGFuZCB0eXBlIHRoYXQgYXJl
IHZhbGlkIGZvciBSZWFkUGl4ZWxzCitib29sIHZhbGlkUmVhZEZvcm1hdFR5cGUoR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAg
Y2FzZSBHTF9SR0JBOgorICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAg
ICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUOgorICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgZ2w6OklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFU
OgorICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIGdsOjpJ
TVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEU6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogZXh0ZXJuICJDIgogewogCkBAIC02Miw3ICsxMzcsNyBA
QCB2b2lkIF9fc3RkY2FsbCBnbEFjdGl2ZVRleHR1cmUoR0xlbnVtIHRleHR1cmUpCiAKICAgICB0
cnkKICAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQo
KTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtODYsNyArMTYxLDcgQEAg
dm9pZCBfX3N0ZGNhbGwgZ2xBdHRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFk
ZXIpCiAKICAgICB0cnkKICAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtMTQw
LDcgKzIxNSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsQmluZEF0dHJpYkxvY2F0aW9uKEdMdWludCBw
cm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhcioKICAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAg
ICAgICAgewpAQCAtMTc4LDcgKzI1Myw3IEBAIHZvaWQgX19zdGRjYWxsIGdsQmluZEJ1ZmZlcihH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNv
bnRleHQpCiAgICAgICAgIHsKQEAgLTIxMiw3ICsyODcsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEJp
bmRGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpCiAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKICAgICAgICAgfQogCi0gICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAo
Y29udGV4dCkKICAgICAgICAgewpAQCAtMjQ0LDcgKzMxOSw3IEBAIHZvaWQgX19zdGRjYWxsIGds
QmluZFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAg
aWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTI2Myw3ICszMzgsNyBAQCB2b2lkIF9fc3RkY2Fs
bCBnbEJpbmRUZXh0dXJlKEdMZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJlKQogCiAgICAgdHJ5
CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7
CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTMwMCw3ICszNzUsNyBAQCB2
b2lkIF9fc3RkY2FsbCBnbEJsZW5kQ29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwg
R0xjbGFtcGYgYmx1ZSwgR0xjbGFtcAogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29u
dGV4dCogY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0KiBj
b250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQp
CiAgICAgICAgIHsKQEAgLTM0NCw3ICs0MTksNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEJsZW5kRXF1
YXRpb25TZXBhcmF0ZShHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkKICAgICAgICAg
ICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICB9CiAKLSAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChj
b250ZXh0KQogICAgICAgICB7CkBAIC00NjcsNyArNTQyLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xC
bGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3Jj
QWxwaGEKICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiAg
ICAgICAgIH0KIAotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0
KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTUwMiw3ICs1NzcsNyBA
QCB2b2lkIF9fc3RkY2FsbCBnbEJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBz
aXplLCBjb25zdCBHTHZvaWQqIGRhdGEsCiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAt
NTUxLDcgKzYyNiw3IEBAIHZvaWQgX19zdGRjYWxsIGdsQnVmZmVyU3ViRGF0YShHTGVudW0gdGFy
Z2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSwKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENv
bnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtNTk5LDcgKzY3
NCw3IEBAIEdMZW51bSBfX3N0ZGNhbGwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMZW51bSB0
YXJnZXQpCiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAwKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQo
KTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtNjMwLDcgKzcwNSw3IEBA
IHZvaWQgX19zdGRjYWxsIGdsQ2xlYXIoR0xiaXRmaWVsZCBtYXNrKQogCiAgICAgdHJ5CiAgICAg
ewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAg
ICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTY1MCw3ICs3MjUsNyBAQCB2b2lkIF9f
c3RkY2FsbCBnbENsZWFyQ29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFt
cGYgYmx1ZSwgR0xjbGFtcAogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAg
ICAgIHsKQEAgLTY2OSw3ICs3NDQsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbENsZWFyRGVwdGhmKEdM
Y2xhbXBmIGRlcHRoKQogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAg
IHsKQEAgLTY4OCw3ICs3NjMsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbENsZWFyU3RlbmNpbChHTGlu
dCBzKQogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGds
OjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5v
bkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTcw
OCw3ICs3ODMsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbENvbG9yTWFzayhHTGJvb2xlYW4gcmVkLCBH
TGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVlLCBHTGJvbwogCiAgICAgdHJ5CiAgICAgewot
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAg
ICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTcyNyw3ICs4MDIsNyBAQCB2b2lkIF9fc3Rk
Y2FsbCBnbENvbXBpbGVTaGFkZXIoR0x1aW50IHNoYWRlcikKIAogICAgIHRyeQogICAgIHsKLSAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAg
IGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC03NzIsNiArODQ3LDggQEAgdm9pZCBfX3N0ZGNh
bGwgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xl
bnVtIGludGVybmEKICAgICAgICAgewogICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0Jf
UzNUQ19EWFQxX0VYVDoKICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDFfRVhUOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdM
RToKKyAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CkBAIC03ODIsNyArODU5LDcgQEAgdm9pZCBfX3N0ZGNh
bGwgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xl
bnVtIGludGVybmEKICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRl
eHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtODIxLDkgKzg5OCwy
NyBAQCB2b2lkIF9fc3RkY2FsbCBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYQogICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIWNv
bnRleHQtPnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVzKCkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7IC8vIGluIHRoaXMgY2Fz
ZSwgaXQncyBhcyB0aG91Z2ggdGhlIGludGVybmFsIGZvcm1hdCBzd2l0Y2ggZmFpbGVkCisgICAg
ICAgICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7CisgICAgICAgICAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQt
PnN1cHBvcnRzRFhUMVRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsgLy8gaW4gdGhpcyBjYXNlLCBp
dCdzIGFzIHRob3VnaCB0aGUgaW50ZXJuYWwgZm9ybWF0IHN3aXRjaCBmYWlsZWQKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAoIWNv
bnRleHQtPnN1cHBvcnRzRFhUM1RleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsgLy8gaW4gdGhpcyBj
YXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgaW50ZXJuYWwgZm9ybWF0IHN3aXRjaCBmYWlsZWQKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAgICAgICAgICBp
ZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsgLy8gaW4g
dGhpcyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgaW50ZXJuYWwgZm9ybWF0IHN3aXRjaCBmYWls
ZWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChpbWFnZVNpemUgIT0gZ2w6OkNvbXB1dGVDb21wcmVzc2VkU2l6ZSh3aWR0aCwgaGVpZ2h0
LCBpbnRlcm5hbGZvcm1hdCkpCkBAIC04NDAsNiArOTM1LDExIEBAIHZvaWQgX19zdGRjYWxsIGds
Q29tcHJlc3NlZFRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmUt
PmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgICAgIHRleHR1cmUtPnNldENvbXByZXNzZWRJbWFnZShsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGltYWdlU2l6ZSwgZGF0YSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBlbHNlCkBAIC04NTEsNiArOTUxLDExIEBAIHZvaWQgX19zdGRjYWxsIGds
Q29tcHJlc3NlZFRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmUt
PmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQogICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgpAQCAtODk3
LDYgKzEwMDIsOCBAQCB2b2lkIF9fc3RkY2FsbCBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2ZmcwogICAgICAgICB7CiAgICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgogICAgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9BTkdMRToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKQEAgLTkw
Nyw3ICsxMDE0LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnMKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENv
bnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtOTE2LDkgKzEw
MjMsMjcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnMKICAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
ICghY29udGV4dC0+c3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZXMoKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsgLy8gaW4gdGhp
cyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgZm9ybWF0IHN3aXRjaCBoYXMgZmFpbGVkLgorICAg
ICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9y
dHNEWFQxVGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOyAvLyBpbiB0aGlzIGNhc2UsIGl0J3MgYXMg
dGhvdWdoIHRoZSBpbnRlcm5hbCBmb3JtYXQgc3dpdGNoIGZhaWxlZAorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+
c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOyAvLyBpbiB0aGlzIGNhc2UsIGl0
J3MgYXMgdGhvdWdoIHRoZSBpbnRlcm5hbCBmb3JtYXQgc3dpdGNoIGZhaWxlZAorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgorICAgICAgICAgICAgICAgIGlmICghY29u
dGV4dC0+c3VwcG9ydHNEWFQ1VGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOyAvLyBpbiB0aGlzIGNh
c2UsIGl0J3MgYXMgdGhvdWdoIHRoZSBpbnRlcm5hbCBmb3JtYXQgc3dpdGNoIGZhaWxlZAorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVm
YXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGlt
YWdlU2l6ZSAhPSBnbDo6Q29tcHV0ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCkpCkBAIC05MjksNTIgKzEwNTQsMjQgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnMKICAgICAg
ICAgICAgIGlmICh4b2Zmc2V0ICUgNCAhPSAwIHx8IHlvZmZzZXQgJSA0ICE9IDApCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsgLy8gd2Ugd2FpdCB0byBjaGVjayB0aGUgb2Zmc2V0cyB1bnRpbCB0aGlzIHBvaW50LCBiZWNh
dXNlIHRoZSBtdWx0aXBsZS1vZi1mb3VyIHJlc3RyaWN0aW9uCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9lcyBub3QgZXhpc3QgdW5sZXNz
IERYVDEgdGV4dHVyZXMgYXJlIHN1cHBvcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb2VzIG5vdCBleGlzdCB1bmxlc3MgRFhUIHRl
eHR1cmVzIGFyZSBzdXBwb3J0ZWQuCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICh0
YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBn
bDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+aXNDb21wcmVzc2VkKCkpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlm
ICgod2lkdGggJSA0ICE9IDAgJiYgd2lkdGggIT0gdGV4dHVyZS0+Z2V0V2lkdGgoKSkgfHwgCi0g
ICAgICAgICAgICAgICAgICAgIChoZWlnaHQgJSA0ICE9IDAgJiYgaGVpZ2h0ICE9IHRleHR1cmUt
PmdldEhlaWdodCgpKSkKKyAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGVTdWJJbWFnZVBhcmFt
cyh0cnVlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBsZXZlbCwgR0xfTk9ORSwg
dGV4dHVyZSkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAgICB0ZXh0dXJl
LT5zdWJJbWFnZUNvbXByZXNzZWQobGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICB0ZXh0dXJlLT5zdWJJbWFnZUNvbXByZXNzZWQobGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGdsOjpJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KHRh
cmdldCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFw
ICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKLQotICAgICAgICAgICAg
ICAgIGlmICghdGV4dHVyZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5pc0NvbXByZXNzZWQoKSkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCh3aWR0
aCAlIDQgIT0gMCAmJiB3aWR0aCAhPSB0ZXh0dXJlLT5nZXRXaWR0aCgpKSB8fCAKLSAgICAgICAg
ICAgICAgICAgICAgKGhlaWdodCAlIDQgIT0gMCAmJiBoZWlnaHQgIT0gdGV4dHVyZS0+Z2V0SGVp
Z2h0KCkpKQorICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZVN1YkltYWdlUGFyYW1zKHRydWUs
IHdpZHRoLCBoZWlnaHQsIHhvZmZzZXQsIHlvZmZzZXQsIGxldmVsLCBHTF9OT05FLCB0ZXh0dXJl
KSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnN1Yklt
YWdlQ29tcHJlc3NlZCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgdGV4dHVyZS0+c3ViSW1hZ2VDb21wcmVzc2VkKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKQEAgLTEwMDYs
MTAgKzExMDMsMTUgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb3B5VGV4SW1hZ2UyRChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWEKICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkK
ICAgICAgICAgeworICAgICAgICAgICAgaWYgKGxldmVsID4gY29udGV4dC0+Z2V0TWF4aW11bVRl
eHR1cmVMZXZlbCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc3dpdGNo
ICh0YXJnZXQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8y
RDoKQEAgLTEwNTIsNyArMTE1NCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsQ29weVRleEltYWdlMkQo
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgZ2w6OkNvbG9yYnVmZmVyICpzb3VyY2UgPSBmcmFtZWJ1ZmZlci0+
Z2V0Q29sb3JidWZmZXIoKTsKKyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnNvdXJjZSA9
IGZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcigpOwogICAgICAgICAgICAgR0xlbnVtIGNvbG9y
YnVmZmVyRm9ybWF0ID0gc291cmNlLT5nZXRJbnRlcm5hbEZvcm1hdCgpOwogCiAgICAgICAgICAg
ICAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gdGFibGUgMy45CkBAIC0xMDkzLDcgKzExOTUsMjcgQEAg
dm9pZCBfX3N0ZGNhbGwgZ2xDb3B5VGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwgR0xlbnVtIGludGVybmFsZm9ybWEKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKICAgICAgICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgICAgICAg
ICBpZiAoY29udGV4dC0+c3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZXMoKSkKKyAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCiAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwogICAgICAgICAgICAgICAgIH0KQEAgLTExMTUsNiArMTIzNywxMSBAQCB2b2lkIF9fc3RkY2Fs
bCBnbENvcHlUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50
ZXJuYWxmb3JtYQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGlmICh0ZXh0
dXJlLT5pc0ltbXV0YWJsZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9
CisKICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5jb3B5SW1hZ2UobGV2ZWwsIGludGVybmFsZm9y
bWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmcmFtZWJ1ZmZlcik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBlbHNlIGlmIChnbDo6SXNDdWJlbWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKQpA
QCAtMTEyNiw2ICsxMjUzLDExIEBAIHZvaWQgX19zdGRjYWxsIGdsQ29weVRleEltYWdlMkQoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgICAg
ICAgICAgfQogCisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHRl
eHR1cmUtPmNvcHlJbWFnZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lk
dGgsIGhlaWdodCwgZnJhbWVidWZmZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxz
ZSBVTlJFQUNIQUJMRSgpOwpAQCAtMTE2NSw3ICsxMjk3LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xD
b3B5VGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNl
dCwgR0wKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkK
ICAgICAgICAgewpAQCAtMTE4Niw3ICsxMzE4LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb3B5VGV4
U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0wK
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBnbDo6Q29sb3JidWZmZXIgKnNvdXJjZSA9IGZyYW1l
YnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcigpOworICAgICAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAq
c291cmNlID0gZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKCk7CiAgICAgICAgICAgICBHTGVu
dW0gY29sb3JidWZmZXJGb3JtYXQgPSBzb3VyY2UtPmdldEludGVybmFsRm9ybWF0KCk7CiAgICAg
ICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IE5VTEw7CiAKQEAgLTEyMDAsOSArMTMzMiw5
IEBAIHZvaWQgX19zdGRjYWxsIGdsQ29weVRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBl
bHNlIFVOUkVBQ0hBQkxFKCk7CiAKLSAgICAgICAgICAgIGlmICghdGV4dHVyZSkKKyAgICAgICAg
ICAgIGlmICghdmFsaWRhdGVTdWJJbWFnZVBhcmFtcyhmYWxzZSwgd2lkdGgsIGhlaWdodCwgeG9m
ZnNldCwgeW9mZnNldCwgbGV2ZWwsIEdMX05PTkUsIHRleHR1cmUpKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOyAvLyBlcnJvciBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgdmFsaWRh
dGVTdWJJbWFnZVBhcmFtcwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBHTGVudW0gdGV4
dHVyZUZvcm1hdCA9IHRleHR1cmUtPmdldEludGVybmFsRm9ybWF0KCk7CkBAIC0xMjQ1LDYgKzEz
NzcsOCBAQCB2b2lkIF9fc3RkY2FsbCBnbENvcHlUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTAogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CiAgICAg
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgogICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKQEAgLTEyNjYsNyArMTQwMCw3IEBAIEdMdWludCBfX3N0ZGNhbGwgZ2xDcmVhdGVQcm9n
cmFtKHZvaWQpCiAKICAgICB0cnkKICAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpA
QCAtMTI4Nyw3ICsxNDIxLDcgQEAgR0x1aW50IF9fc3RkY2FsbCBnbENyZWF0ZVNoYWRlcihHTGVu
dW0gdHlwZSkKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBA
IC0xMzIxLDcgKzE0NTUsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEN1bGxGYWNlKEdMZW51bSBtb2Rl
KQogICAgICAgICAgIGNhc2UgR0xfQkFDSzoKICAgICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9C
QUNLOgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQpCiAgICAgICAgICAgICAgICAgewpAQCAtMTM1MCw3ICsxNDg0LDcgQEAgdm9pZCBfX3N0ZGNh
bGwgZ2xEZWxldGVCdWZmZXJzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBidWZmZXJzKQogICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAg
IGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC0xMzc3LDcgKzE1MTEsNyBAQCB2b2lkIF9fc3Rk
Y2FsbCBnbERlbGV0ZUZlbmNlc05WKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBmZW5jZXMpCiAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAg
ICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTE0MDQsNyArMTUzOCw3IEBAIHZvaWQgX19z
dGRjYWxsIGdsRGVsZXRlRnJhbWVidWZmZXJzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBmcmFt
ZWJ1ZmZlcnMpCiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0
KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTE0MzQsNyArMTU2OCw3
IEBAIHZvaWQgX19zdGRjYWxsIGdsRGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpA
QCAtMTQ3MCw3ICsxNjA0LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVSZW5kZXJidWZmZXJz
KEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiByZW5kZXJidWZmZXJzKQogICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0
KQogICAgICAgICB7CkBAIC0xNDk3LDcgKzE2MzEsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbERlbGV0
ZVNoYWRlcihHTHVpbnQgc2hhZGVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAg
ICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC0xNTMzLDcgKzE2NjcsNyBAQCB2b2lkIF9f
c3RkY2FsbCBnbERlbGV0ZVRleHR1cmVzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiB0ZXh0dXJl
cykKICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKICAgICAgICAg
fQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAog
ICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtMTU3Myw3ICsxNzA3LDcgQEAgdm9p
ZCBfX3N0ZGNhbGwgZ2xEZXB0aEZ1bmMoR0xlbnVtIGZ1bmMpCiAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAg
ICAgICAgewpAQCAtMTU5Miw3ICsxNzI2LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xEZXB0aE1hc2so
R0xib29sZWFuIGZsYWcpCiAKICAgICB0cnkKICAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAg
ICAgewpAQCAtMTYxMSw3ICsxNzQ1LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xEZXB0aFJhbmdlZihH
TGNsYW1wZiB6TmVhciwgR0xjbGFtcGYgekZhcikKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChj
b250ZXh0KQogICAgICAgICB7CkBAIC0xNjMwLDcgKzE3NjQsNyBAQCB2b2lkIF9fc3RkY2FsbCBn
bERldGFjaFNoYWRlcihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcikKIAogICAgIHRyeQog
ICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOwor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwog
CiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC0xNjgzLDcgKzE4MTcsNyBAQCB2
b2lkIF9fc3RkY2FsbCBnbERpc2FibGUoR0xlbnVtIGNhcCkKIAogICAgIHRyeQogICAgIHsKLSAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAg
IGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC0xNzIwLDcgKzE4NTQsNyBAQCB2b2lkIF9fc3Rk
Y2FsbCBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCiAgICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAotICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNv
bnRleHQpCiAgICAgICAgIHsKQEAgLTE3NDQsNyArMTg3OCw3IEBAIHZvaWQgX19zdGRjYWxsIGds
RHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAg
aWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTE3NjksNyArMTkwMyw3IEBAIHZvaWQgX19zdGRj
YWxsIGdsRHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlw
ZSwgY29uc3QgR0x2CiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250
ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTE4MDMsNyArMTkz
Nyw3IEBAIHZvaWQgX19zdGRjYWxsIGdsRW5hYmxlKEdMZW51bSBjYXApCiAKICAgICB0cnkKICAg
ICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAog
ICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtMTg0MCw3ICsxOTc0LDcgQEAgdm9p
ZCBfX3N0ZGNhbGwgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCiAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAg
aWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTE4NTksNyArMTk5Myw3IEBAIHZvaWQgX19zdGRj
YWxsIGdsRmluaXNoRmVuY2VOVihHTHVpbnQgZmVuY2UpCiAKICAgICB0cnkKICAgICB7Ci0gICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBp
ZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtMTg4NSwxMSArMjAxOSwxMSBAQCB2b2lkIF9fc3Rk
Y2FsbCBnbEZpbmlzaCh2b2lkKQogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbmlzaCgpOworICAgICAgICAgICAgY29u
dGV4dC0+c3luYyh0cnVlKTsKICAgICAgICAgfQogICAgIH0KICAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCkBAIC0xOTA0LDExICsyMDM4LDExIEBAIHZvaWQgX19zdGRjYWxsIGdsRmx1c2godm9p
ZCkKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5mbHVzaCgpOworICAgICAgICAgICAgY29udGV4dC0+c3luYyhmYWxzZSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQpAQCAtMTkyNSwx
MiArMjA1OSwxMiBAQCB2b2lkIF9fc3RkY2FsbCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudQogICAgIHRyeQogICAgIHsKICAg
ICAgICAgaWYgKCh0YXJnZXQgIT0gR0xfRlJBTUVCVUZGRVIgJiYgdGFyZ2V0ICE9IEdMX0RSQVdf
RlJBTUVCVUZGRVJfQU5HTEUgJiYgdGFyZ2V0ICE9IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUp
Ci0gICAgICAgICAgICB8fCByZW5kZXJidWZmZXJ0YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVSKQor
ICAgICAgICAgICAgfHwgKHJlbmRlcmJ1ZmZlcnRhcmdldCAhPSBHTF9SRU5ERVJCVUZGRVIgJiYg
cmVuZGVyYnVmZmVyICE9IDApKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAg
ewpAQCAtMTk0MSwxMyArMjA3NSwxMyBAQCB2b2lkIF9fc3RkY2FsbCBnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudQogICAgICAg
ICAgICAgICAgIGZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0UmVhZEZyYW1lYnVmZmVyKCk7CiAg
ICAgICAgICAgICAgICAgZnJhbWVidWZmZXJIYW5kbGUgPSBjb250ZXh0LT5nZXRSZWFkRnJhbWVi
dWZmZXJIYW5kbGUoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgCisgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBj
b250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXIoKTsKICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZl
ckhhbmRsZSA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlckhhbmRsZSgpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAoZnJhbWVidWZmZXJIYW5kbGUgPT0gMCB8fCAhZnJhbWVi
dWZmZXIpCisgICAgICAgICAgICBpZiAoIWZyYW1lYnVmZmVyIHx8IChmcmFtZWJ1ZmZlckhhbmRs
ZSA9PSAwICYmIHJlbmRlcmJ1ZmZlciAhPSAwKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICAgICAgfQpA
QCAtMTk5Niw3ICsyMTMwLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xGcmFtZWJ1ZmZlclRleHR1cmUy
RChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHQKICAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICB9CiAKLSAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250
ZXh0KQogICAgICAgICB7CkBAIC0yMDkyLDcgKzIyMjYsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEZy
b250RmFjZShHTGVudW0gbW9kZSkKICAgICAgICAgICBjYXNlIEdMX0NXOgogICAgICAgICAgIGNh
c2UgR0xfQ0NXOgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgICAgICAgICAgaWYg
KGNvbnRleHQpCiAgICAgICAgICAgICAgICAgewpAQCAtMjEyMSw3ICsyMjU1LDcgQEAgdm9pZCBf
X3N0ZGNhbGwgZ2xHZW5CdWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50KiBidWZmZXJzKQogICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlm
IChjb250ZXh0KQogICAgICAgICB7CkBAIC0yMTQzLDcgKzIyNzcsNyBAQCB2b2lkIF9fc3RkY2Fs
bCBnbEdlbmVyYXRlTWlwbWFwKEdMZW51bSB0YXJnZXQpCiAKICAgICB0cnkKICAgICB7Ci0gICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBp
ZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtMjE4OCw3ICsyMzIyLDcgQEAgdm9pZCBfX3N0ZGNh
bGwgZ2xHZW5GZW5jZXNOVihHTHNpemVpIG4sIEdMdWludCogZmVuY2VzKQogICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250
ZXh0KQogICAgICAgICB7CkBAIC0yMjE1LDcgKzIzNDksNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdl
bkZyYW1lYnVmZmVycyhHTHNpemVpIG4sIEdMdWludCogZnJhbWVidWZmZXJzKQogICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChj
b250ZXh0KQogICAgICAgICB7CkBAIC0yMjQyLDcgKzIzNzYsNyBAQCB2b2lkIF9fc3RkY2FsbCBn
bEdlblJlbmRlcmJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpCiAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAg
aWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTIyNjksNyArMjQwMyw3IEBAIHZvaWQgX19zdGRj
YWxsIGdsR2VuVGV4dHVyZXMoR0xzaXplaSBuLCBHTHVpbnQqIHRleHR1cmVzKQogICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChj
b250ZXh0KQogICAgICAgICB7CkBAIC0yMjk4LDcgKzI0MzIsNyBAQCB2b2lkIF9fc3RkY2FsbCBn
bEdldEFjdGl2ZUF0dHJpYihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1
ZnNpemUsCiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7
CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTIzNDMsNyArMjQ3Nyw3IEBA
IHZvaWQgX19zdGRjYWxsIGdsR2V0QWN0aXZlVW5pZm9ybShHTHVpbnQgcHJvZ3JhbSwgR0x1aW50
IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsCiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAg
LTIzODcsNyArMjUyMSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0QXR0YWNoZWRTaGFkZXJzKEdM
dWludCBwcm9ncmFtLCBHTHNpemVpIG1heGNvdW50LCBHTHNpemVpKiBjCiAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRl
eHQpCiAgICAgICAgIHsKQEAgLTI0MjAsNyArMjU1NCw3IEBAIGludCBfX3N0ZGNhbGwgZ2xHZXRB
dHRyaWJMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1lKQogCiAgICAg
dHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0
KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTI0NjEsNyArMjU5NSw3
IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4q
IHBhcmFtcykKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBA
IC0yNTI0LDcgKzI2NTgsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdldEJ1ZmZlclBhcmFtZXRlcml2
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcwogCiAgICAgdHJ5CiAg
ICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7Cisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAK
ICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTI1ODYsNyArMjcyMCw3IEBAIHZv
aWQgX19zdGRjYWxsIGdsR2V0RmVuY2Vpdk5WKEdMdWludCBmZW5jZSwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKQogICAgIHRyeQogICAgIHsKICAgICAKLSAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAg
ICAgICB7CkBAIC0yNjEyLDcgKzI3NDYsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdldEZsb2F0dihH
TGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcykKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChj
b250ZXh0KQogICAgICAgICB7CkBAIC0yNjczLDcgKzI4MDcsNyBAQCB2b2lkIF9fc3RkY2FsbCBn
bEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51
bSBhdHRhYwogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAg
LTI3ODUsMTMgKzI5MTksMzQgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWMKICAgICB9CiB9CiAK
K0dMZW51bSBfX3N0ZGNhbGwgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKHZvaWQpCit7Cisg
ICAgRVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldFJlc2V0U3RhdHVzKCk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gR0xfTk9fRVJST1I7CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOwor
ICAgIH0KK30KKwogdm9pZCBfX3N0ZGNhbGwgZ2xHZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdM
aW50KiBwYXJhbXMpCiB7CiAgICAgRVZFTlQoIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCog
cGFyYW1zID0gMHglMC44cCkiLCBwbmFtZSwgcGFyYW1zKTsKIAogICAgIHRyeQogICAgIHsKLSAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAg
IGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC0yODU2LDcgKzMwMTEsNyBAQCB2b2lkIF9fc3Rk
Y2FsbCBnbEdldFByb2dyYW1pdihHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCog
cGFyYW1zKQogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAg
LTI5MTksNyArMzA3NCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0UHJvZ3JhbUluZm9Mb2coR0x1
aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuCiAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRl
eHQpCiAgICAgICAgIHsKQEAgLTI5NDUsNyArMzEwMCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCoKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC0yOTk5
LDcgKzMxNTQsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdldFNoYWRlcml2KEdMdWludCBzaGFkZXIs
IEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChj
b250ZXh0KQogICAgICAgICB7CkBAIC0zMDI3LDYgKzMxODIsOSBAQCB2b2lkIF9fc3RkY2FsbCBn
bEdldFNoYWRlcml2KEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykK
ICAgICAgICAgICAgICAgY2FzZSBHTF9TSEFERVJfU09VUkNFX0xFTkdUSDoKICAgICAgICAgICAg
ICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5nZXRTb3VyY2VMZW5ndGgoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgR0xfVFJBTlNMQVRFRF9TSEFERVJf
U09VUkNFX0xFTkdUSF9BTkdMRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2Jq
ZWN0LT5nZXRUcmFuc2xhdGVkU291cmNlTGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX0VOVU0pOwogICAgICAgICAgICAgfQpAQCAtMzA1MCw3ICszMjA4LDcgQEAgdm9p
ZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJJbmZvTG9nKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVm
c2l6ZSwgR0xzaXplaSogbGVuZ3QKICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtMzEy
Nyw3ICszMjg1LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJTb3VyY2UoR0x1aW50IHNo
YWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgKICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkK
ICAgICAgICAgewpAQCAtMzE0NywyMCArMzMwNSw1MiBAQCB2b2lkIF9fc3RkY2FsbCBnbEdldFNo
YWRlclNvdXJjZShHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0
aAogICAgIH0KIH0KIAordm9pZCBfX3N0ZGNhbGwgZ2xHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdM
Y2hhciogc291cmNlKQoreworICAgIEVWRU5UKCIoR0x1aW50IHNoYWRlciA9ICVkLCBHTHNpemVp
IGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgR0xjaGFyKiBzb3VyY2Ug
PSAweCUwLjhwKSIsCisgICAgICAgICAgc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChidWZzaXplIDwgMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisK
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
KworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlNoYWRl
ciAqc2hhZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7CisKKyAgICAgICAg
ICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHNoYWRlck9iamVjdC0+Z2V0VHJhbnNsYXRlZFNvdXJjZShidWZzaXplLCBsZW5ndGgs
IHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30K
KwogY29uc3QgR0x1Ynl0ZSogX19zdGRjYWxsIGdsR2V0U3RyaW5nKEdMZW51bSBuYW1lKQogewog
ICAgIEVWRU5UKCIoR0xlbnVtIG5hbWUgPSAweCVYKSIsIG5hbWUpOwogCiAgICAgdHJ5CiAgICAg
ewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAg
ICAgICAgc3dpdGNoIChuYW1lKQogICAgICAgICB7CiAgICAgICAgICAgY2FzZSBHTF9WRU5ET1I6
CiAgICAgICAgICAgICByZXR1cm4gKEdMdWJ5dGUqKSJHb29nbGUgSW5jLiI7CiAgICAgICAgICAg
Y2FzZSBHTF9SRU5ERVJFUjoKLSAgICAgICAgICAgIHJldHVybiAoR0x1Ynl0ZSopIkFOR0xFIjsK
KyAgICAgICAgICAgIHJldHVybiAoR0x1Ynl0ZSopKChjb250ZXh0ICE9IE5VTEwpID8gY29udGV4
dC0+Z2V0UmVuZGVyZXJTdHJpbmcoKSA6ICJBTkdMRSIpOwogICAgICAgICAgIGNhc2UgR0xfVkVS
U0lPTjoKICAgICAgICAgICAgIHJldHVybiAoR0x1Ynl0ZSopIk9wZW5HTCBFUyAyLjAgKEFOR0xF
ICJWRVJTSU9OX1NUUklORyIpIjsKICAgICAgICAgICBjYXNlIEdMX1NIQURJTkdfTEFOR1VBR0Vf
VkVSU0lPTjoKQEAgLTMxODUsNyArMzM3NSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0VGV4UGFy
YW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0KiBwYXJhbXMpCiAK
ICAgICB0cnkKICAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENv
bnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtMzIxNyw2ICsz
NDA3LDEyIEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0VGV4UGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0KiBwYXJhbXMpCiAgICAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9XUkFQX1Q6CiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1
cmUtPmdldFdyYXBUKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVDoKKyAgICAgICAgICAgICAgICAqcGFy
YW1zID0gKEdMZmxvYXQpKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkgPyBHTF9UUlVFIDogR0xfRkFM
U0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfVVNBR0VfQU5HTEU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1
cmUtPmdldFVzYWdlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CiAg
ICAgICAgICAgICB9CkBAIC0zMjM0LDcgKzM0MzAsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdldFRl
eFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykK
IAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC0zMjY2LDYg
KzM0NjIsMTIgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZXRUZXhQYXJhbWV0ZXJpdihHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCiAgICAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9XUkFQX1Q6CiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldFdy
YXBUKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVDoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gdGV4
dHVyZS0+aXNJbW11dGFibGUoKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1VTQUdFX0FOR0xFOgorICAg
ICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRVc2FnZSgpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICAgICAgfQpAQCAtMzI3NywxMyArMzQ3
OSwxOSBAQCB2b2lkIF9fc3RkY2FsbCBnbEdldFRleFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKICAgICB9CiB9CiAKLXZvaWQgX19zdGRjYWxs
IGdsR2V0VW5pZm9ybWZ2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCog
cGFyYW1zKQordm9pZCBfX3N0ZGNhbGwgZ2xHZXRuVW5pZm9ybWZ2RVhUKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0KiBwYXJhbXMpCiB7Ci0g
ICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZs
b2F0KiBwYXJhbXMgPSAweCUwLjhwKSIsIHByb2dyYW0sIGxvY2F0aW9uLCBwYXJhbXMpOworICAg
IEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXpl
aSBidWZTaXplID0gJWQsIEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAgICBw
cm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKTsKIAogICAgIHRyeQogICAgIHsKLSAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBp
ZiAoYnVmU2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAg
ICAgIHsKQEAgLTMyOTksNyArMzUwNyw4NiBAQCB2b2lkIF9fc3RkY2FsbCBnbEdldFVuaWZvcm1m
dihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQqIHBhcmFtcykKICAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmdldFVuaWZvcm1mdihsb2Nh
dGlvbiwgcGFyYW1zKSkKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+Z2V0VW5pZm9y
bWZ2KGxvY2F0aW9uLCAmYnVmU2l6ZSwgcGFyYW1zKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsR2V0VW5pZm9ybWZ2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
R0xmbG9hdCogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xp
bnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLCBwcm9ncmFtLCBs
b2NhdGlvbiwgcGFyYW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHByb2dyYW0gPT0gMCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29u
dGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2Jq
ZWN0IHx8ICFwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+Z2V0VW5pZm9ybWZ2KGxvY2F0
aW9uLCBOVUxMLCBwYXJhbXMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xH
ZXRuVW5pZm9ybWl2RVhUKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBi
dWZTaXplLCBHTGludCogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAl
ZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMaW50KiBwYXJh
bXMgPSAweCUwLjhwKSIsIAorICAgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBw
YXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoYnVmU2l6ZSA8IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChwcm9ncmFtID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnbDo6
UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisK
KyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCB8fCAhcHJvZ3JhbU9iamVjdC0+aXNMaW5r
ZWQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXByb2dy
YW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFw
cm9ncmFtT2JqZWN0LT5nZXRVbmlmb3JtaXYobG9jYXRpb24sICZidWZTaXplLCBwYXJhbXMpKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CiAgICAgICAgICAgICB9CkBAIC0zMzE3LDcgKzM2MDQsNyBAQCB2b2lkIF9fc3Rk
Y2FsbCBnbEdldFVuaWZvcm1pdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50
KiBwYXJhbXMpCiAKICAgICB0cnkKICAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpA
QCAtMzMzOCw3ICszNjI1LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZXRVbmlmb3JtaXYoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCogcGFyYW1zKQogICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+Z2V0VW5pZm9ybWl2KGxvY2F0aW9uLCBwYXJh
bXMpKQorICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5nZXRVbmlmb3JtaXYobG9jYXRp
b24sIE5VTEwsIHBhcmFtcykpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAgIH0KQEAgLTMzNTYsNyAr
MzY0Myw3IEBAIGludCBfX3N0ZGNhbGwgZ2xHZXRVbmlmb3JtTG9jYXRpb24oR0x1aW50IHByb2dy
YW0sIGNvbnN0IEdMY2hhciogbmFtZSkKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChzdHJzdHIo
bmFtZSwgImdsXyIpID09IG5hbWUpCiAgICAgICAgIHsKQEAgLTMzODQsNyArMzY3MSw3IEBAIGlu
dCBfX3N0ZGNhbGwgZ2xHZXRVbmlmb3JtTG9jYXRpb24oR0x1aW50IHByb2dyYW0sIGNvbnN0IEdM
Y2hhciogbmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sIC0xKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIHByb2dyYW1P
YmplY3QtPmdldFVuaWZvcm1Mb2NhdGlvbihuYW1lLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1
cm4gcHJvZ3JhbU9iamVjdC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG5hbWUpOwogICAgICAgICB9CiAg
ICAgfQogICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKQEAgLTM0MDEsNyArMzY4OCw3IEBAIHZv
aWQgX19zdGRjYWxsIGdsR2V0VmVydGV4QXR0cmliZnYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQqIHBhcmFtcykKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQog
ICAgICAgICB7CkBAIC0zNDU0LDcgKzM3NDEsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdldFZlcnRl
eEF0dHJpYml2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQogCiAg
ICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250
ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTM1MDgsNyArMzc5
NSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoR0x1aW50IGlu
ZGV4LCBHTGVudW0gcG5hbWUsIEdMdm9pZCoqIHBvCiAKICAgICB0cnkKICAgICB7Ci0gICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAo
Y29udGV4dCkKICAgICAgICAgewpAQCAtMzU0Nyw3ICszODM0LDcgQEAgdm9pZCBfX3N0ZGNhbGwg
Z2xIaW50KEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKQogICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7IAogICAgICAgICB9CiAKLSAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogICAgICAgICBzd2l0Y2ggKHRhcmdldCkKICAg
ICAgICAgewogICAgICAgICAgIGNhc2UgR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQ6CkBAIC0zNTcy
LDcgKzM4NTksNyBAQCBHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNCdWZmZXIoR0x1aW50IGJ1ZmZl
cikKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0ICYmIGJ1ZmZlcikKICAgICAgICAg
ewpAQCAtMzU5OCw3ICszODg1LDcgQEAgR0xib29sZWFuIF9fc3RkY2FsbCBnbElzRW5hYmxlZChH
TGVudW0gY2FwKQogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsK
QEAgLTM2MzIsNyArMzkxOSw3IEBAIEdMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc0ZlbmNlTlYoR0x1
aW50IGZlbmNlKQogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsK
QEAgLTM2NjAsNyArMzk0Nyw3IEBAIEdMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc0ZyYW1lYnVmZmVy
KEdMdWludCBmcmFtZWJ1ZmZlcikKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0ICYm
IGZyYW1lYnVmZmVyKQogICAgICAgICB7CkBAIC0zNjg2LDcgKzM5NzMsNyBAQCBHTGJvb2xlYW4g
X19zdGRjYWxsIGdsSXNQcm9ncmFtKEdMdWludCBwcm9ncmFtKQogCiAgICAgdHJ5CiAgICAgewot
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAg
ICAgaWYgKGNvbnRleHQgJiYgcHJvZ3JhbSkKICAgICAgICAgewpAQCAtMzcxMiw3ICszOTk5LDcg
QEAgR0xib29sZWFuIF9fc3RkY2FsbCBnbElzUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZm
ZXIpCiAKICAgICB0cnkKICAgICB7Ci0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCAmJiByZW5kZXJidWZmZXIpCiAg
ICAgICAgIHsKQEAgLTM3MzgsNyArNDAyNSw3IEBAIEdMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc1No
YWRlcihHTHVpbnQgc2hhZGVyKQogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQgJiYg
c2hhZGVyKQogICAgICAgICB7CkBAIC0zNzY0LDcgKzQwNTEsNyBAQCBHTGJvb2xlYW4gX19zdGRj
YWxsIGdsSXNUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQogCiAgICAgdHJ5CiAgICAgewotICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYg
KGNvbnRleHQgJiYgdGV4dHVyZSkKICAgICAgICAgewpAQCAtMzc5NSw3ICs0MDgyLDcgQEAgdm9p
ZCBfX3N0ZGNhbGwgZ2xMaW5lV2lkdGgoR0xmbG9hdCB3aWR0aCkKICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkK
ICAgICAgICAgewpAQCAtMzgxNCw3ICs0MTAxLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xMaW5rUHJv
Z3JhbShHTHVpbnQgcHJvZ3JhbSkKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQog
ICAgICAgICB7CkBAIC0zODQ3LDcgKzQxMzQsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFBpeGVsU3Rv
cmVpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAKICAgICB0cnkKICAgICB7Ci0gICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAo
Y29udGV4dCkKICAgICAgICAgewpAQCAtMzg3MSw2ICs0MTU4LDEwIEBAIHZvaWQgX19zdGRjYWxs
IGdsUGl4ZWxTdG9yZWkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5zZXRQYWNrQWxpZ25tZW50KHBhcmFtKTsKICAgICAgICAgICAgICAgICBicmVh
azsKIAorICAgICAgICAgICAgICBjYXNlIEdMX1BBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5HTEU6
CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0UGFja1JldmVyc2VSb3dPcmRlcihwYXJhbSAh
PSAwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICAg
ICAgfQpAQCAtMzg4OCw3ICs0MTc5LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xQb2x5Z29uT2Zmc2V0
KEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKQogCiAgICAgdHJ5CiAgICAgewotICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYg
KGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTM5MDEsNyArNDE5Miw0MSBAQCB2b2lkIF9fc3RkY2Fs
bCBnbFBvbHlnb25PZmZzZXQoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpCiAgICAgfQog
fQogCi12b2lkIF9fc3RkY2FsbCBnbFJlYWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZv
aWQqIHBpeGVscykKK3ZvaWQgX19zdGRjYWxsIGdsUmVhZG5QaXhlbHNFWFQoR0xpbnQgeCwgR0xp
bnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqZGF0YSkKK3sKKyAgICBF
VkVOVCgiKEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdM
c2l6ZWkgaGVpZ2h0ID0gJWQsICIKKyAgICAgICAgICAiR0xlbnVtIGZvcm1hdCA9IDB4JVgsIEdM
ZW51bSB0eXBlID0gMHglWCwgR0xzaXplaSBidWZTaXplID0gMHglZCwgR0x2b2lkICpkYXRhID0g
MHglMC44cCkiLAorICAgICAgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwgZGF0YSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmICh3aWR0aCA8IDAg
fHwgaGVpZ2h0IDwgMCB8fCBidWZTaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2
YWxpZFJlYWRGb3JtYXRUeXBlKGZvcm1hdCwgdHlwZSkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAg
ICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5yZWFkUGl4
ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgJmJ1ZlNpemUsIGRhdGEpOwor
ICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsUmVhZFBpeGVscyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgR0x2b2lkKiBwaXhlbHMpCiB7CiAgICAgRVZFTlQoIihHTGludCB4ID0gJWQs
IEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAi
CiAgICAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsIEdM
dm9pZCogcGl4ZWxzID0gMHglMC44cCkiLApAQCAtMzkxNCw0NiArNDIzOSwxNiBAQCB2b2lkIF9f
c3RkY2FsbCBnbFJlYWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZQogICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpCisgICAgICAgIGlmICgh
dmFsaWRSZWFkRm9ybWF0VHlwZShmb3JtYXQsIHR5cGUpKQogICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBHTF9SR0JBOgotICAgICAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAg
ICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQ6Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUOgotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGdsOjpJTVBMRU1FTlRBVElPTl9DT0xPUl9S
RUFEX0ZPUk1BVDoKLSAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgY2FzZSBnbDo6SU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFOgotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4
dCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgICAgICAgICBjb250ZXh0LT5y
ZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgTlVMTCwgcGl4ZWxz
KTsKICAgICAgICAgfQogICAgIH0KICAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCkBAIC00MDAx
LDcgKzQyOTYsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcAogICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQog
ICAgICAgICB7CkBAIC00MDU4LDcgKzQzNTMsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFNhbXBsZUNv
dmVyYWdlKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQogCiAgICAgdHJ5CiAgICAg
ewotICAgICAgICBnbDo6Q29udGV4dCogY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAg
ICAgIGdsOjpDb250ZXh0KiBjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAg
ICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTQwODIsNyArNDM3Nyw3IEBAIHZvaWQg
X19zdGRjYWxsIGdsU2V0RmVuY2VOVihHTHVpbnQgZmVuY2UsIEdMZW51bSBjb25kaXRpb24pCiAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAg
ICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtNDExMyw3ICs0NDA4LDcgQEAgdm9pZCBfX3N0
ZGNhbGwgZ2xTY2lzc29yKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KQogICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAg
ICAgICB9CiAKLSAgICAgICAgZ2w6OkNvbnRleHQqIGNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgp
OworICAgICAgICBnbDo6Q29udGV4dCogY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgp
OwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC00MTU1LDcgKzQ0NTAsNyBA
QCB2b2lkIF9fc3RkY2FsbCBnbFNoYWRlclNvdXJjZShHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGNoYXIqKiBzdHJpbgogICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBA
IC00MjE4LDcgKzQ1MTMsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUo
R0xlbnVtIGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludAogICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRl
eHQpCiAgICAgICAgIHsKQEAgLTQyNjAsNyArNDU1NSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsU3Rl
bmNpbE1hc2tTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0x1aW50IG1hc2spCiAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4
dCkKICAgICAgICAgewpAQCAtNDM0OCw3ICs0NjQzLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xTdGVu
Y2lsT3BTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xl
bnUKICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICB9
CiAKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAg
ICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC00Mzc1LDcgKzQ2NzAsNyBAQCBHTGJv
b2xlYW4gX19zdGRjYWxsIGdsVGVzdEZlbmNlTlYoR0x1aW50IGZlbmNlKQogCiAgICAgdHJ5CiAg
ICAgewotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7Cisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAK
ICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTQ0NjcsNiArNDc2Miw4IEBAIHZv
aWQgX19zdGRjYWxsIGdsVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp
bnQgaW50ZXJuYWxmb3JtYXQsIEdMCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6ICAvLyBlcnJvciBjYXNlcyBmb3IgY29t
cHJlc3NlZCB0ZXh0dXJlcyBhcmUgaGFuZGxlZCBiZWxvdwogICAgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9BTkdMRToKICAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwpAQCAtNDQ3Nywx
MCArNDc3NCwxNSBAQCB2b2lkIF9fc3RkY2FsbCBnbFRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTAogICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQog
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPiBjb250ZXh0LT5nZXRNYXhpbXVtVGV4
dHVyZUxldmVsKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBzd2l0Y2gg
KHRhcmdldCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJE
OgpAQCAtNDUxMSwxMCArNDgxMywyMCBAQCB2b2lkIF9fc3RkY2FsbCBnbFRleEltYWdlMkQoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTAogICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQgfHwKLSAgICAgICAgICAgICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1
cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVzKCkpCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkg
eworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUMVRleHR1cmVzKCkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAg
ICAgICAgICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDUyMiwxOCArNDgzNCwzMSBAQCB2b2lk
IF9fc3RkY2FsbCBnbFRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50
IGludGVybmFsZm9ybWF0LCBHTAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CiAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRz
RFhUNVRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICh0eXBlID09IEdMX0ZM
T0FUKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9y
dHNGbG9hdFRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0
c0Zsb2F0MzJUZXh0dXJlcygpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9IQUxGX0ZMT0FUX09F
UykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRz
SGFsZkZsb2F0VGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBv
cnRzRmxvYXQxNlRleHR1cmVzKCkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKICAgICAgICAgICAgICAgICB9CkBA
IC00NTQ4LDYgKzQ4NzMsMTEgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xUZXhJbWFnZTJEKEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0wKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAg
ICAgICB9CiAKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgdGV4
dHVyZS0+c2V0SW1hZ2UobGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29udGV4
dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBlbHNlCkBAIC00NTU5LDYgKzQ4ODksMTEgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xUZXhJbWFn
ZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0wK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
ICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11
dGFibGUoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6CkBAIC00NjA2LDcgKzQ5
NDEsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0
KQogICAgICAgICB7CkBAIC00NjUwLDYgKzQ5ODUsMTIgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xUZXhQ
YXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX1VTQUdFX0FOR0xFOgorICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0VXNh
Z2UoKEdMZW51bSlwYXJhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CiAgICAgICAgICAgICB9CkBAIC00NjY2
LDYgKzUwMDcsMTU3IEBAIHZvaWQgX19zdGRjYWxsIGdsVGV4UGFyYW1ldGVyaXYoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCogcGFyYW1zCiAgICAgZ2xUZXhQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUsICpwYXJhbXMpOwogfQogCit2b2lkIF9fc3RkY2FsbCBnbFRleFN0
b3JhZ2UyREVYVChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBFVkVOVCgiKEdM
ZW51bSB0YXJnZXQgPSAweCVYLCBHTHNpemVpIGxldmVscyA9ICVkLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQgPSAweCVYLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQpIiwK
KyAgICAgICAgICAgdGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJE
ICYmIHRhcmdldCAhPSBHTF9URVhUVVJFX0NVQkVfTUFQKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh3aWR0aCA8IDEgfHwgaGVpZ2h0IDwgMSB8fCBsZXZlbHMgPCAxKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgd2lkdGggIT0gaGVpZ2h0
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobGV2ZWxzICE9IDEgJiYgbGV2ZWxzICE9IGdsOjps
b2cyKHN0ZDo6bWF4KHdpZHRoLCBoZWlnaHQpKSArIDEpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAg
ICBHTGVudW0gZm9ybWF0ID0gZ2w6OkV4dHJhY3RGb3JtYXQoaW50ZXJuYWxmb3JtYXQpOworICAg
ICAgICBHTGVudW0gdHlwZSA9IGdsOjpFeHRyYWN0VHlwZShpbnRlcm5hbGZvcm1hdCk7CisKKyAg
ICAgICAgaWYgKGZvcm1hdCA9PSBHTF9OT05FIHx8IHR5cGUgPT0gR0xfTk9ORSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0K
KworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgp
OworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2gg
KHRhcmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJE
OgorICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJl
RGltZW5zaW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gY29udGV4dC0+Z2V0
TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9DVUJFX01BUDoKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBjb250ZXh0LT5nZXRNYXhp
bXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQg
PiBjb250ZXh0LT5nZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5V
TSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChsZXZlbHMgIT0gMSAmJiAhY29u
dGV4dC0+c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaWYgKCFnbDo6aXNQb3cyKHdpZHRoKSB8fCAhZ2w6OmlzUG93MihoZWlnaHQpKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAg
ICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUMVRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgICAgICAgICBp
ZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUM1RleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAo
IWNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
UkdCQTMyRl9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5B
TkNFMzJGX0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhU
OgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMo
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBMTZGX0VYVDoKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9SR0IxNkZfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBMTZGX0VYVDoKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOgorICAgICAgICAgICAgICBjYXNl
IEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0
LT5zdXBwb3J0c0Zsb2F0MTZUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZ2w6OlRleHR1cmUyRCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOwor
CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlIHx8IHRleHR1cmUtPmlkKCkgPT0gMCkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIHRleHR1cmUtPnN0b3JhZ2UobGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBnbDo6VGV4dHVyZUN1YmVNYXAgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0
dXJlQ3ViZU1hcCgpOworCisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlIHx8IHRleHR1cmUt
PmlkKCkgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRleHR1cmUtPnN0b3JhZ2Uo
bGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKIHZvaWQgX19zdGRjYWxsIGdsVGV4U3ViSW1hZ2UyRChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKQogewpAQCAtNDcw
MSw3ICs1MTkzLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xUZXh3YXJuaW5nOiBMRiB3aWxsIGJlIHJl
cGxhY2VkIGJ5IENSTEYgaW4gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9s
aWJHTEVTdjIudmNwcm9qLgpUaGUgZmlsZSB3aWxsIGhhdmUgaXRzIG9yaWdpbmFsIGxpbmUgZW5k
aW5ncyBpbiB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5LgpTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludAogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4
dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC00NzEyLDE0ICs1MjA0
LDE0IEBAIHZvaWQgX19zdGRjYWxsIGdsVGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQKIAogICAgICAgICAgICAgaWYgKGZvcm1hdCA9
PSBHTF9GTE9BVCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQt
PnN1cHBvcnRzRmxvYXRUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+
c3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMoKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBHTF9IQUxG
X0ZMT0FUX09FUykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQt
PnN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRl
eHQtPnN1cHBvcnRzRmxvYXQxNlRleHR1cmVzKCkpCiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKICAgICAgICAgICAg
ICAgICB9CkBAIC00NzI4LDM0ICs1MjIwLDE4IEBAIHZvaWQgX19zdGRjYWxsIGdsVGV4U3ViSW1h
Z2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQKICAg
ICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVy
ZTJEKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5pc0Nv
bXByZXNzZWQoKSkKKyAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGVTdWJJbWFnZVBhcmFtcyhm
YWxzZSwgd2lkdGgsIGhlaWdodCwgeG9mZnNldCwgeW9mZnNldCwgbGV2ZWwsIGZvcm1hdCwgdGV4
dHVyZSkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5z
dWJJbWFnZShsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKICAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ICE9IHRleHR1cmUtPmdldEludGVy
bmFsRm9ybWF0KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIHRleHR1cmUtPnN1YkltYWdlKGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFVucGFja0FsaWdubWVudCgp
LCBwaXhlbHMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoZ2w6OklzQ3Vi
ZW1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICBnbDo6VGV4dHVyZUN1YmVNYXAgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1h
cCgpOwotCi0gICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlKQorICAgICAgICAgICAgICAgIGlm
ICh2YWxpZGF0ZVN1YkltYWdlUGFyYW1zKGZhbHNlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5
b2Zmc2V0LCBsZXZlbCwgZm9ybWF0LCB0ZXh0dXJlKSkKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICAgICAgICAgIHRleHR1cmUtPnN1YkltYWdlKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNr
QWxpZ25tZW50KCksIHBpeGVscyk7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgdGV4dHVyZS0+c3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwg
cGl4ZWxzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsK
QEAgLTQ3OTAsNyArNTI2Niw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTFmdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdikKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtNDgzNCw3
ICs1MzEwLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWl2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsK
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
IAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtNDg4MCw3ICs1MzU2LDcgQEAg
dm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGZsb2F0KiB2KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAg
IGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC00OTI2LDcgKzU0MDIsNyBAQCB2b2lkIF9fc3Rk
Y2FsbCBnbFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
aW50KiB2KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0
KQogICAgICAgICB7CkBAIC00OTcyLDcgKzU0NDgsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFVuaWZv
cm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAg
IHsKQEAgLTUwMTgsNyArNTQ5NCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTNpdihHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTUwNjQs
NyArNTU0MCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdikKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQo
KTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtNTExMCw3ICs1NTg2LDcg
QEAgdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCogdikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAg
ICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtNTE1MCw3ICs1NjI2LDcgQEAgdm9pZCBfX3N0
ZGNhbGwgZ2xVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBH
TGJvb2xlYW4gdHJhbnMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAo
Y29udGV4dCkKICAgICAgICAgewpAQCAtNTE5MCw3ICs1NjY2LDcgQEAgdm9pZCBfX3N0ZGNhbGwg
Z2xVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4
dCkKICAgICAgICAgewpAQCAtNTIzMCw3ICs1NzA2LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xVbmlm
b3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJh
bnMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAg
ICAgICAgewpAQCAtNTI1OSw3ICs1NzM1LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xVc2VQcm9ncmFt
KEdMdWludCBwcm9ncmFtKQogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAg
ICAgIHsKQEAgLTUyOTcsNyArNTc3Myw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVmFsaWRhdGVQcm9n
cmFtKEdMdWludCBwcm9ncmFtKQogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAg
ICAgICAgIHsKQEAgLTUzMzUsNyArNTgxMSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0
cmliMWYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpCiAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAg
IHsKQEAgLTUzNjAsNyArNTgzNiw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmliMWZ2
KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKQogICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQog
ICAgICAgICB7CkBAIC01Mzg1LDcgKzU4NjEsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0
dHJpYjJmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCiAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRl
eHQpCiAgICAgICAgIHsKQEAgLTU0MTAsNyArNTg4Niw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVmVy
dGV4QXR0cmliMmZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKQogICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlm
IChjb250ZXh0KQogICAgICAgICB7CkBAIC01NDM1LDcgKzU5MTEsNyBAQCB2b2lkIF9fc3RkY2Fs
bCBnbFZlcnRleEF0dHJpYjNmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM
ZmxvYXQgeikKICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQo
KTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgewpAQCAtNTQ2MCw3ICs1OTM2LDcg
QEAgdm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIzZnYoR0x1aW50IGluZGV4LCBjb25zdCBH
TGZsb2F0KiB2YWx1ZXMpCiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSk7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRD
b250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsKQEAgLTU0ODUsNyAr
NTk2MSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmliNGYoR0x1aW50IGluZGV4LCBH
TGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHCiAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXRDb250ZXh0KCk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAg
ICAgIHsKQEAgLTU1MTAsNyArNTk4Niw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmli
NGZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKQogICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9CiAKLSAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0
KQogICAgICAgICB7CkBAIC01NTU5LDcgKzYwMzUsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFZlcnRl
eEF0dHJpYlBvaW50ZXIoR0x1aW50IGluZGV4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xi
bwogICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwogICAgICAgICB9
CiAKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwogCiAg
ICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC01NTgzLDcgKzYwNTksNyBAQCB2b2lk
IF9fc3RkY2FsbCBnbFZpZXdwb3J0KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0KQogICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUp
OwogICAgICAgICB9CiAKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29u
dGV4dCgpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CkBAIC01NjI1LDcgKzYx
MDEsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdMaW50IHNyY1gw
LCBHTGludCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaQogICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKICAg
ICAgICAgewpAQCAtNTY4Miw2ICs2MTU4LDEyIEBAIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUgX19zdGRjYWxsIGdsR2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqCiAg
ICAgICAgIHsiZ2xHZXRGZW5jZWl2TlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Q
b2ludGVyVHlwZSlnbEdldEZlbmNlaXZOVn0sCiAgICAgICAgIHsiZ2xGaW5pc2hGZW5jZU5WIiwg
KF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xGaW5pc2hGZW5jZU5W
fSwKICAgICAgICAgeyJnbFNldEZlbmNlTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rp
b25Qb2ludGVyVHlwZSlnbFNldEZlbmNlTlZ9LAorICAgICAgICB7ImdsR2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5
cGUpZ2xHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEV9LAorICAgICAgICB7ImdsVGV4U3Rv
cmFnZTJERVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xU
ZXhTdG9yYWdlMkRFWFR9LAorICAgICAgICB7ImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCIs
IChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0VYVH0sCisgICAgICAgIHsiZ2xSZWFkblBpeGVsc0VYVCIsIChfX2VnbE11c3RD
YXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsUmVhZG5QaXhlbHNFWFR9LAorICAgICAg
ICB7ImdsR2V0blVuaWZvcm1mdkVYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBv
aW50ZXJUeXBlKWdsR2V0blVuaWZvcm1mdkVYVH0sCisgICAgICAgIHsiZ2xHZXRuVW5pZm9ybWl2
RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRuVW5p
Zm9ybWl2RVhUfSwKICAgICB9OwogCiAgICAgZm9yIChpbnQgZXh0ID0gMDsgZXh0IDwgc2l6ZW9m
KGdsRXh0ZW5zaW9ucykgLyBzaXplb2YoRXh0ZW5zaW9uKTsgZXh0KyspCkBAIC01Njk1LDE5ICs2
MTc3LDI2IEBAIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUgX19zdGRj
YWxsIGdsR2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAK
LXZvaWQgX19zdGRjYWxsIGdsQmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKKy8v
IE5vbi1wdWJsaWMgZnVuY3Rpb25zIHVzZWQgYnkgRUdMCisKK2Jvb2wgX19zdGRjYWxsIGdsQmlu
ZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKIHsKICAgICBFVkVOVCgiKGVnbDo6U3Vy
ZmFjZSogc3VyZmFjZSA9IDB4JTAuOHApIiwKICAgICAgICAgICBzdXJmYWNlKTsKIAogICAgIHRy
eQogICAgIHsKLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29udGV4dCgp
OworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgp
OwogCiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBnbDo6VGV4
dHVyZTJEICp0ZXh0dXJlT2JqZWN0ID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CiAKKyAgICAg
ICAgICAgIGlmICh0ZXh0dXJlT2JqZWN0LT5pc0ltbXV0YWJsZSgpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgaWYgKHRleHR1cmVPYmplY3QpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdGV4
dHVyZU9iamVjdC0+YmluZFRleEltYWdlKHN1cmZhY2UpOwpAQCAtNTcxNiw4ICs2MjA1LDEwIEBA
IHZvaWQgX19zdGRjYWxsIGdsQmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKICAg
ICB9CiAgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgZmFsc2UpOwogICAgIH0KKworICAgIHJldHVybiB0cnVlOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYKaW5k
ZXggYjkxMjE3MTk5YmYyMTU0ZmFjNDk4YTk4ZDY2MjYwNDEwNTQ3ZDhjMC4uMjE3M2Y3NGZiZDVm
OTQ0MzEwNzE5MzI2ZjFiNmE2NzQyNDQ2NjdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgpAQCAtMTU0LDYgKzE1NCwxMiBA
QCBFWFBPUlRTCiAgICAgZ2xJc0ZlbmNlTlYgICAgICAgICAgICAgICAgICAgICBAMTU1CiAgICAg
Z2xTZXRGZW5jZU5WICAgICAgICAgICAgICAgICAgICBAMTU2CiAgICAgZ2xUZXN0RmVuY2VOViAg
ICAgICAgICAgICAgICAgICBAMTU3CisgICAgZ2xHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUgQDE1OQorICAgIGdsVGV4U3RvcmFnZTJERVhUICAgICAgICAgICAgICAgQDE2MAorICAgIGds
R2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCAgICAgQDE2MQorICAgIGdsUmVhZG5QaXhlbHNFWFQg
ICAgICAgICAgICAgICAgQDE2MgorICAgIGdsR2V0blVuaWZvcm1mdkVYVCAgICAgICAgICAgICAg
QDE2MworICAgIGdsR2V0blVuaWZvcm1pdkVYVCAgICAgICAgICAgICAgQDE2NAogCiAgICAgOyBF
R0wgZGVwZW5kZW5jaWVzCiAgICAgZ2xDcmVhdGVDb250ZXh0ICAgICAgICAgICAgICAgICBAMTQ0
IE5PTkFNRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9saWJHTEVTdjIucmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xp
YkdMRVN2Mi5yYwppbmRleCA0ZTczM2JkYWY0OTE4YWY3OGQxMTcyNmEyMjRlMTA5ZWVhMjAxZDNk
Li4wYWQyMWU0NDBlN2ZkOTNhN2E5M2U0NGNjYTM3N2NlMjg0NTZjMGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYwpAQCAtNyw3
ICs3LDcgQEAKIC8vCiAvLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJj
ZS4KIC8vCi0jaW5jbHVkZSAiYWZ4cmVzLmgiCisjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1
ZGUgIi4uL2NvbW1vbi92ZXJzaW9uLmgiCiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3By
b2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3By
b2oKaW5kZXggNWJiMmU2OGE5OWM4MTA3NWFhNjljYTQ3NjgzYzI2ZWRiN2ExMzQ4NC4uODBmMTVh
MTRlODNlNGY0YmFlNDA2NWY2MWQ3NDNmNjlhYTMwZDBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmNwcm9qCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZjcHJvagpAQCAtMTIs
NiArMTIsOSBAQAogCQk8UGxhdGZvcm0KIAkJCU5hbWU9IldpbjMyIgogCQkvPgorCQk8UGxhdGZv
cm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KIAk8L1BsYXRmb3Jtcz4KIAk8VG9vbEZpbGVzPgogCTwv
VG9vbEZpbGVzPgpAQCAtMTc1LDYgKzE3OCwxNjcgQEAKIAkJCQlDb21tYW5kTGluZT0iQGVjaG8g
b24mI3gwRDsmI3gwQTtta2RpciAmcXVvdDskKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmln
dXJhdGlvbk5hbWUpXCZxdW90OyYjeDBEOyYjeDBBO2NvcHkgJnF1b3Q7JChPdXREaXIpXGxpYkdM
RVN2Mi5kbGwmcXVvdDsgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRp
b25OYW1lKVwmcXVvdDsmI3gwRDsmI3gwQTtjb3B5ICZxdW90OyQoT3V0RGlyKVxsaWJHTEVTdjIu
bGliJnF1b3Q7ICZxdW90OyQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uTmFt
ZSlcJnF1b3Q7JiN4MEQ7JiN4MEE7QGVjaG8gb2ZmJiN4MEQ7JiN4MEE7IgogCQkJLz4KIAkJPC9D
b25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJ
T3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3Vy
YXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChQbGF0Zm9ybU5hbWUpXCQo
Q29uZmlndXJhdGlvbk5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlDaGFyYWN0
ZXJTZXQ9IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wi
CisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgor
CQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6
YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChQcm9qZWN0RGly
KS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmlu
aXRpb25zPSJXSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtMSUJHTEVTVjJfRVhQT1JUUztf
Q1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVgiCisJCQkJTWluaW1hbFJlYnVpbGQ9InRy
dWUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIxIgor
CQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlE
ZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9ImZhbHNlIgorCQkJCURlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJj
ZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21w
aWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wi
CisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25h
bERlcGVuZGVuY2llcz0iZDNkOS5saWIgRDNkeDkubGliIGQzZGNvbXBpbGVyLmxpYiIKKwkJCQlM
aW5rSW5jcmVtZW50YWw9IjIiCisJCQkJTW9kdWxlRGVmaW5pdGlvbkZpbGU9ImxpYkdMRVN2Mi5k
ZWYiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgorCQkJCVN1YlN5c3RlbT0i
MiIKKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiCisJCQkJRGF0YUV4ZWN1dGlvblByZXZl
bnRpb249IjAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RU
b29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZp
ZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wi
CisJCQkJQ29tbWFuZExpbmU9IkBlY2hvIG9uJiN4MEQ7JiN4MEE7bWtkaXIgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb25OYW1lKVwmcXVvdDsmI3gwRDsmI3gwQTtj
b3B5ICZxdW90OyQoT3V0RGlyKVxsaWJHTEVTdjIuZGxsJnF1b3Q7ICZxdW90OyQoUHJvamVjdERp
cikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uTmFtZSlcJnF1b3Q7JiN4MEQ7JiN4MEE7Y29weSAm
cXVvdDskKE91dERpcilcbGliR0xFU3YyLmxpYiZxdW90OyAmcXVvdDskKFByb2plY3REaXIpLi5c
Li5cbGliXCQoQ29uZmlndXJhdGlvbk5hbWUpXCZxdW90OyYjeDBEOyYjeDBBO0BlY2hvIG9mZiYj
eDBEOyYjeDBBOyIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24K
KwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGly
KSQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURp
cmVjdG9yeT0iJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJQ29uZmln
dXJhdGlvblR5cGU9IjIiCisJCQlDaGFyYWN0ZXJTZXQ9IjEiCisJCQlXaG9sZVByb2dyYW1PcHRp
bWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRv
b2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIz
IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRp
bWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjIiCisJCQkJQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8u
Li8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7
X1dJTkRPV1M7X1VTUkRMTDtMSUJHTEVTVjJfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNB
VEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMCIKKwkJCQlV
c2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0
NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJmYWxzZSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21w
aWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJU
b29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJ
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBl
bmRlbmNpZXM9ImQzZDkubGliIEQzZHg5LmxpYiBkM2Rjb21waWxlci5saWIiCisJCQkJTGlua0lu
Y3JlbWVudGFsPSIxIgorCQkJCUlnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM9ImZhbHNlIgorCQkJ
CU1vZHVsZURlZmluaXRpb25GaWxlPSJsaWJHTEVTdjIuZGVmIgorCQkJCUdlbmVyYXRlRGVidWdJ
bmZvcm1hdGlvbj0idHJ1ZSIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJT3B0aW1pemVSZWZlcmVu
Y2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJUmFuZG9taXplZEJhc2VB
ZGRyZXNzPSIxIgorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIgorCQkJCVRhcmdldE1h
Y2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Jz
Y01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJAZWNo
byBvbiYjeDBEOyYjeDBBO21rZGlyICZxdW90OyQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25m
aWd1cmF0aW9uTmFtZSlcJnF1b3Q7JiN4MEQ7JiN4MEE7Y29weSAmcXVvdDskKE91dERpcilcbGli
R0xFU3YyLmRsbCZxdW90OyAmcXVvdDskKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJh
dGlvbk5hbWUpXCZxdW90OyYjeDBEOyYjeDBBO2NvcHkgJnF1b3Q7JChPdXREaXIpXGxpYkdMRVN2
Mi5saWImcXVvdDsgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb25O
YW1lKVwmcXVvdDsmI3gwRDsmI3gwQTtAZWNobyBvZmYmI3gwRDsmI3gwQTsiCisJCQkvPgorCQk8
L0NvbmZpZ3VyYXRpb24+CiAJPC9Db25maWd1cmF0aW9ucz4KIAk8UmVmZXJlbmNlcz4KIAk8L1Jl
ZmVyZW5jZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL21haW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9tYWlu
LmNwcAppbmRleCBhZDExNTYzMDljNDBlMGM5YzcxODM3MjcyNzAwOWU4ZjNiOTk1ZDg5Li4xNTRk
Mjc3YzI3YzlmNjY3MzI1NjE2ZTMzZjlhNzFiNjA4Zjk3ZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21haW4uY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5jcHAKQEAgLTcsNiArNyw3IEBACiAvLyBt
YWluLmNwcDogRExMIGVudHJ5IHBvaW50IGFuZCBtYW5hZ2VtZW50IG9mIHRocmVhZC1sb2NhbCBk
YXRhLgogCiAjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
dXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJsaWJF
R0wvU3VyZmFjZS5oIgpAQCAtOTMsNiArOTQsMjUgQEAgQ29udGV4dCAqZ2V0Q29udGV4dCgpCiAg
ICAgcmV0dXJuIGN1cnJlbnQtPmNvbnRleHQ7CiB9CiAKK0NvbnRleHQgKmdldE5vbkxvc3RDb250
ZXh0KCkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gZ2V0Q29udGV4dCgpOworICAgIAorICAg
IGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPmlzQ29udGV4dExvc3Qo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
ICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBjb250ZXh0OworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBOVUxMOworfQorCiBlZ2w6OkRpc3BsYXkgKmdldERpc3BsYXkoKQogewogICAgIEN1cnJlbnQg
KmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CkBAIC0xMDYsNiAr
MTI2LDE5IEBAIElEaXJlY3QzRERldmljZTkgKmdldERldmljZSgpCiAKICAgICByZXR1cm4gZGlz
cGxheS0+Z2V0RGV2aWNlKCk7CiB9CisKK2Jvb2wgY2hlY2tEZXZpY2VMb3N0KEhSRVNVTFQgZXJy
b3JDb2RlKQoreworICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IE5VTEw7CisKKyAgICBpZiAo
aXNEZXZpY2VMb3N0RXJyb3IoZXJyb3JDb2RlKSkKKyAgICB7CisgICAgICAgIGRpc3BsYXkgPSBn
bDo6Z2V0RGlzcGxheSgpOworICAgICAgICBkaXNwbGF5LT5ub3RpZnlEZXZpY2VMb3N0KCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CiB9CiAKIC8v
IFJlY29yZHMgYW4gZXJyb3IgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9tYWluLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL21haW4uaAppbmRleCA3ZjljODgwN2I4MGM4N2M0NjI5NjNlMzIyMDA3ZGZiMWU5MzM2
ZjRmLi41MDQ4NDhhYTY1ODc0MGY4YTU2Y2FhOWE5Y2I1NzMxNzk5YThmZjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21haW4uaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21haW4uaApAQCAtMjksOSArMjksMTIg
QEAgc3RydWN0IEN1cnJlbnQKIHZvaWQgbWFrZUN1cnJlbnQoQ29udGV4dCAqY29udGV4dCwgZWds
OjpEaXNwbGF5ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwogCiBDb250ZXh0ICpn
ZXRDb250ZXh0KCk7CitDb250ZXh0ICpnZXROb25Mb3N0Q29udGV4dCgpOwogZWdsOjpEaXNwbGF5
ICpnZXREaXNwbGF5KCk7CiAKIElEaXJlY3QzRERldmljZTkgKmdldERldmljZSgpOworCitib29s
IGNoZWNrRGV2aWNlTG9zdChIUkVTVUxUIGVycm9yQ29kZSk7CiB9CiAKIHZvaWQgZXJyb3IoR0xl
bnVtIGVycm9yQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3V0aWxpdGllcy5jcHAKaW5kZXggYmEyM2ZkMzY1YzZjMWY3OWJmZjdiZWUyZTYyNGE3
MGE5MzQwMzc3ZS4uNmRjNDE5YzdhZDUwZmE0Y2EwNmEwMzg2M2Q2NWIwZDBmY2U2YmFjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0aWVz
LmNwcApAQCAtMjAsNyArMjAsOCBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWludCBVbmlmb3JtQ29t
cG9uZW50Q291bnQoR0xlbnVtIHR5cGUpCisvLyBUaGlzIGlzIGhvdyBtdWNoIGRhdGEgdGhlIGFw
cGxpY2F0aW9uIGV4cGVjdHMgZm9yIGEgdW5pZm9ybQoraW50IFVuaWZvcm1FeHRlcm5hbENvbXBv
bmVudENvdW50KEdMZW51bSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkKICAgICB7CkBAIC01
NCw2ICs1NSw0MiBAQCBpbnQgVW5pZm9ybUNvbXBvbmVudENvdW50KEdMZW51bSB0eXBlKQogICAg
IHJldHVybiAwOwogfQogCisvLyBUaGlzIGlzIGhvdyBtdWNoIGRhdGEgd2UgYWN0dWFsbHkgc3Rv
cmUgZm9yIGEgdW5pZm9ybQoraW50IFVuaWZvcm1JbnRlcm5hbENvbXBvbmVudENvdW50KEdMZW51
bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0JPT0w6
CisgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgIGNhc2UgR0xfU0FNUExFUl8yRDoKKyAgICAgIGNh
c2UgR0xfU0FNUExFUl9DVUJFOgorICAgICAgICAgIHJldHVybiAxOworICAgICAgY2FzZSBHTF9C
T09MX1ZFQzI6CisgICAgICBjYXNlIEdMX0lOVF9WRUMyOgorICAgICAgICAgIHJldHVybiAyOwor
ICAgICAgY2FzZSBHTF9JTlRfVkVDMzoKKyAgICAgIGNhc2UgR0xfQk9PTF9WRUMzOgorICAgICAg
ICAgIHJldHVybiAzOworICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgIGNhc2UgR0xfRkxPQVRf
VkVDMjoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMzoKKyAgICAgIGNhc2UgR0xfQk9PTF9WRUM0
OgorICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OgorICAgICAgY2FzZSBHTF9JTlRfVkVDNDoKKyAg
ICAgICAgICByZXR1cm4gNDsKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoKKyAgICAgICAgICBy
ZXR1cm4gODsKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKKyAgICAgICAgICByZXR1cm4gMTI7
CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgICAgcmV0dXJuIDE2OworICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiAw
OworfQorCiBHTGVudW0gVW5pZm9ybUNvbXBvbmVudFR5cGUoR0xlbnVtIHR5cGUpCiB7CiAgICAg
c3dpdGNoKHR5cGUpCkBAIC04NSwxNiArMTIyLDI3IEBAIEdMZW51bSBVbmlmb3JtQ29tcG9uZW50
VHlwZShHTGVudW0gdHlwZSkKICAgICByZXR1cm4gR0xfTk9ORTsKIH0KIAotc2l6ZV90IFVuaWZv
cm1UeXBlU2l6ZShHTGVudW0gdHlwZSkKK3NpemVfdCBVbmlmb3JtQ29tcG9uZW50U2l6ZShHTGVu
dW0gdHlwZSkKIHsKICAgICBzd2l0Y2godHlwZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX0JPT0w6
ICByZXR1cm4gc2l6ZW9mKEdMYm9vbGVhbik7CisgICAgICBjYXNlIEdMX0JPT0w6ICByZXR1cm4g
c2l6ZW9mKEdMaW50KTsKICAgICAgIGNhc2UgR0xfRkxPQVQ6IHJldHVybiBzaXplb2YoR0xmbG9h
dCk7CiAgICAgICBjYXNlIEdMX0lOVDogICByZXR1cm4gc2l6ZW9mKEdMaW50KTsKKyAgICAgIGRl
ZmF1bHQ6ICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIFVuaWZvcm1U
eXBlU2l6ZShVbmlmb3JtQ29tcG9uZW50VHlwZSh0eXBlKSkgKiBVbmlmb3JtQ29tcG9uZW50Q291
bnQodHlwZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3NpemVfdCBVbmlmb3JtSW50ZXJuYWxTaXpl
KEdMZW51bSB0eXBlKQoreworICAgIHJldHVybiBVbmlmb3JtQ29tcG9uZW50U2l6ZShVbmlmb3Jt
Q29tcG9uZW50VHlwZSh0eXBlKSkgKiBVbmlmb3JtSW50ZXJuYWxDb21wb25lbnRDb3VudCh0eXBl
KTsKK30KKworc2l6ZV90IFVuaWZvcm1FeHRlcm5hbFNpemUoR0xlbnVtIHR5cGUpCit7CisgICAg
cmV0dXJuIFVuaWZvcm1Db21wb25lbnRTaXplKFVuaWZvcm1Db21wb25lbnRUeXBlKHR5cGUpKSAq
IFVuaWZvcm1FeHRlcm5hbENvbXBvbmVudENvdW50KHR5cGUpOwogfQogCiBpbnQgVmFyaWFibGVS
b3dDb3VudChHTGVudW0gdHlwZSkKQEAgLTIwMCwxOCArMjQ4LDIzIEBAIEdMc2l6ZWkgQ29tcHV0
ZUNvbXByZXNzZWRTaXplKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9y
bWF0KQogICAgIHsKICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoK
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIHJl
dHVybiA4ICogKEdMc2l6ZWkpY2VpbCgoZmxvYXQpd2lkdGggLyA0LjBmKSAqIChHTHNpemVpKWNl
aWwoKGZsb2F0KWhlaWdodCAvIDQuMGYpOwogICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAgcmV0dXJuIDE2ICogKEdMc2l6ZWkpY2Vp
bCgoZmxvYXQpd2lkdGggLyA0LjBmKSAqIChHTHNpemVpKWNlaWwoKGZsb2F0KWhlaWdodCAvIDQu
MGYpOwogICAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0
dXJuIDggKiAoR0xzaXplaSljZWlsKChmbG9hdCl3aWR0aCAvIDQuMGYpICogKEdMc2l6ZWkpY2Vp
bCgoZmxvYXQpaGVpZ2h0IC8gNC4wZik7CiB9CiAKIGJvb2wgSXNDb21wcmVzc2VkKEdMZW51bSBm
b3JtYXQpCiB7CiAgICAgaWYoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQgfHwKLSAgICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQp
CisgICAgICAgZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUIHx8Cisg
ICAgICAgZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUgfHwKKyAg
ICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSkKICAgICB7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMyNyw2ICszODAsNjggQEAgYm9vbCBD
aGVja1RleHR1cmVGb3JtYXRUeXBlKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQogICAgIH0K
IH0KIAorR0xlbnVtIEV4dHJhY3RGb3JtYXQoR0xlbnVtIGludGVybmFsZm9ybWF0KQoreworICAg
IHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9SR0I1NjU6ICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCOworICAgICAgY2FzZSBHTF9SR0JB
NDogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKKyAgICAgIGNhc2Ug
R0xfUkdCNV9BMTogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE7CisgICAg
ICBjYXNlIEdMX1JHQjhfT0VTOiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0I7
CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
TF9SR0JBOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6ICAgICAgICAgICBy
ZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDog
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFOworICAgICAgY2FzZSBHTF9BTFBI
QThfRVhUOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQUxQSEE7CisgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6ICAgIHJldHVybiBHTF9DT01QUkVTU0VE
X1JHQl9TM1RDX0RYVDFfRVhUOworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQxX0VYVDogICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7CisgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6IHJldHVybiBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0FOR0xFOiByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9B
TkdMRTsKKyAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX1JHQkE7CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6ICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9SR0I7CisgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDogICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9BTFBIQTsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VY
VDogICAgICAgICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRTsKKyAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFX0FMUEhBMzJGX0VYVDogICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRV9BTFBIQTsK
KyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X1JHQkE7CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHTF9SR0I7CisgICAgICBjYXNlIEdMX0FMUEhBMTZGX0VYVDogICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9BTFBIQTsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMTZGX0VYVDogICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRTsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNF
X0FMUEhBMTZGX0VYVDogICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRV9BTFBIQTsKKyAgICAg
IGNhc2UgR0xfQkdSQThfRVhUOiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0JHUkFf
RVhUOworICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfTk9ORTsgICAvLyBVbnN1cHBvcnRlZAorICAgIH0KK30KKworR0xlbnVtIEV4dHJhY3RU
eXBlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0
KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCNTY1OiAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OworICAgICAgY2FzZSBHTF9SR0JBNDogICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDsK
KyAgICAgIGNhc2UgR0xfUkdCNV9BMTogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X1VOU0lHTkVEX1NIT1JUXzVfNV81XzE7CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBHTF9S
R0JBOF9PRVM6ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfQllURTsK
KyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhUOiAgICAgICAgICAgcmV0dXJuIEdM
X1VOU0lHTkVEX0JZVEU7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOiAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBHTF9BTFBIQThfRVhU
OiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfQllURTsKKyAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDogICAgcmV0dXJuIEdMX1VOU0lHTkVE
X0JZVEU7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOiAgIHJl
dHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQzX0FOR0xFOiByZXR1cm4gR0xfVU5TSUdORURfQllURTsKKyAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRTogcmV0dXJuIEdMX1VOU0lHTkVEX0JZVEU7Cisg
ICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9G
TE9BVDsKKyAgICAgIGNhc2UgR0xfUkdCMzJGX0VYVDogICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX0ZMT0FUOworICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6ICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6ICAg
ICAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FM
UEhBMzJGX0VYVDogICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgICAgY2FzZSBHTF9SR0JB
MTZGX0VYVDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7Cisg
ICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9I
QUxGX0ZMT0FUX09FUzsKKyAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX0hBTEZfRkxPQVRfT0VTOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0Ux
NkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7CisgICAgICBj
YXNlIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6ICAgICAgICAgIHJldHVybiBHTF9IQUxGX0ZM
T0FUX09FUzsKKyAgICAgIGNhc2UgR0xfQkdSQThfRVhUOiAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX1VOU0lHTkVEX0JZVEU7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9OT05FOyAgIC8vIFVuc3VwcG9ydGVkCisgICAgfQor
fQorCiBib29sIElzQ29sb3JSZW5kZXJhYmxlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCkKIHsKICAg
ICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQpAQCAtODA2LDYgKzkyMSw1MCBAQCB1bnNpZ25lZCBp
bnQgR2V0RGVwdGhTaXplKEQzREZPUk1BVCBkZXB0aEZvcm1hdCkKICAgICB9CiB9CiAKK2Jvb2wg
SXNGbG9hdDMyRm9ybWF0KEQzREZPUk1BVCBzdXJmYWNlRm9ybWF0KQoreworICAgIHN3aXRjaChz
dXJmYWNlRm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRDNERk1UX1IxNkY6CisgICAgICBjYXNl
IEQzREZNVF9HMTZSMTZGOgorICAgICAgY2FzZSBEM0RGTVRfQTE2QjE2RzE2UjE2RjoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgY2FzZSBEM0RGTVRfUjMyRjoKKyAgICAgIGNhc2UgRDNE
Rk1UX0czMlIzMkY6CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgIGNhc2UgRDNERk1UX0E4UjhHOEI4OgorICAgICAgY2FzZSBEM0RG
TVRfWDhSOEc4Qjg6CisgICAgICBjYXNlIEQzREZNVF9BMVI1RzVCNToKKyAgICAgIGNhc2UgRDNE
Rk1UX1I1RzZCNToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElzRmxvYXQxNkZv
cm1hdChEM0RGT1JNQVQgc3VyZmFjZUZvcm1hdCkKK3sKKyAgICBzd2l0Y2goc3VyZmFjZUZvcm1h
dCkKKyAgICB7CisgICAgICBjYXNlIEQzREZNVF9SMTZGOgorICAgICAgY2FzZSBEM0RGTVRfRzE2
UjE2RjoKKyAgICAgIGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgY2FzZSBEM0RGTVRfUjMyRjoKKyAgICAgIGNhc2UgRDNERk1UX0czMlIzMkY6
CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4
OgorICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6CisgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogR0xzaXplaSBHZXRTYW1wbGVzRnJvbU11bHRp
c2FtcGxlVHlwZShEM0RNVUxUSVNBTVBMRV9UWVBFIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUgPT0g
RDNETVVMVElTQU1QTEVfTk9OTUFTS0FCTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuaAppbmRleCBiZjdmNGY5MzQ4MmJjOTgzOWIwYThk
YjJiNzBlMWM1NzVkODkwOGRhLi43MzVmYTUwM2RlMzY4NDBmYTMzYzU0MmMxMDA4NzYxNDgwMGM2
MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvdXRp
bGl0aWVzLmgKQEAgLTIxLDkgKzIxLDExIEBAIG5hbWVzcGFjZSBnbAogCiBzdHJ1Y3QgQ29sb3I7
CiAKLWludCBVbmlmb3JtQ29tcG9uZW50Q291bnQoR0xlbnVtIHR5cGUpOworaW50IFVuaWZvcm1F
eHRlcm5hbENvbXBvbmVudENvdW50KEdMZW51bSB0eXBlKTsKK2ludCBVbmlmb3JtSW50ZXJuYWxD
b21wb25lbnRDb3VudChHTGVudW0gdHlwZSk7CiBHTGVudW0gVW5pZm9ybUNvbXBvbmVudFR5cGUo
R0xlbnVtIHR5cGUpOwotc2l6ZV90IFVuaWZvcm1UeXBlU2l6ZShHTGVudW0gdHlwZSk7CitzaXpl
X3QgVW5pZm9ybUludGVybmFsU2l6ZShHTGVudW0gdHlwZSk7CitzaXplX3QgVW5pZm9ybUV4dGVy
bmFsU2l6ZShHTGVudW0gdHlwZSk7CiBpbnQgVmFyaWFibGVSb3dDb3VudChHTGVudW0gdHlwZSk7
CiBpbnQgVmFyaWFibGVDb2x1bW5Db3VudChHTGVudW0gdHlwZSk7CiAKQEAgLTM3LDYgKzM5LDgg
QEAgYm9vbCBJc0NvbXByZXNzZWQoR0xlbnVtIGZvcm1hdCk7CiBib29sIElzQ3ViZW1hcFRleHR1
cmVUYXJnZXQoR0xlbnVtIHRhcmdldCk7CiBib29sIElzVGV4dHVyZVRhcmdldChHTGVudW0gdGFy
Z2V0KTsKIGJvb2wgQ2hlY2tUZXh0dXJlRm9ybWF0VHlwZShHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSk7CitHTGVudW0gRXh0cmFjdEZvcm1hdChHTGVudW0gaW50ZXJuYWxmb3JtYXQpOworR0xl
bnVtIEV4dHJhY3RUeXBlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCk7CiAKIGJvb2wgSXNDb2xvclJl
bmRlcmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0KTsKIGJvb2wgSXNEZXB0aFJlbmRlcmFibGUo
R0xlbnVtIGludGVybmFsZm9ybWF0KTsKQEAgLTczLDYgKzc3LDggQEAgR0x1aW50IEdldEdyZWVu
U2l6ZShEM0RGT1JNQVQgY29sb3JGb3JtYXQpOwogR0x1aW50IEdldEJsdWVTaXplKEQzREZPUk1B
VCBjb2xvckZvcm1hdCk7CiBHTHVpbnQgR2V0RGVwdGhTaXplKEQzREZPUk1BVCBkZXB0aEZvcm1h
dCk7CiBHTHVpbnQgR2V0U3RlbmNpbFNpemUoRDNERk9STUFUIHN0ZW5jaWxGb3JtYXQpOworYm9v
bCBJc0Zsb2F0MzJGb3JtYXQoRDNERk9STUFUIHN1cmZhY2VGb3JtYXQpOworYm9vbCBJc0Zsb2F0
MTZGb3JtYXQoRDNERk9STUFUIHN1cmZhY2VGb3JtYXQpOwogCiBHTHNpemVpIEdldFNhbXBsZXNG
cm9tTXVsdGlzYW1wbGVUeXBlKEQzRE1VTFRJU0FNUExFX1RZUEUgdHlwZSk7CiAKQEAgLTg0LDQg
KzkwLDE4IEBAIEdMZW51bSBDb252ZXJ0RGVwdGhTdGVuY2lsRm9ybWF0KEQzREZPUk1BVCBmb3Jt
YXQpOwogc3RkOjpzdHJpbmcgZ2V0VGVtcFBhdGgoKTsKIHZvaWQgd3JpdGVGaWxlKGNvbnN0IGNo
YXIqIHBhdGgsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKTsKIAoraW5saW5lIGJvb2wg
aXNEZXZpY2VMb3N0RXJyb3IoSFJFU1VMVCBlcnJvckNvZGUpCit7CisgICAgc3dpdGNoIChlcnJv
ckNvZGUpCisgICAgeworICAgICAgY2FzZSBEM0RFUlJfRFJJVkVSSU5URVJOQUxFUlJPUjoKKyAg
ICAgIGNhc2UgRDNERVJSX0RFVklDRUxPU1Q6CisgICAgICBjYXNlIEQzREVSUl9ERVZJQ0VIVU5H
OgorICAgICAgY2FzZSBEM0RFUlJfREVWSUNFUkVNT1ZFRDoKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfTsKKwogI2Vu
ZGlmICAvLyBMSUJHTEVTVjJfVVRJTElUSUVTX0gK
</data>
<flag name="review"
          id="122025"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>