<?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>10787</bug_id>
          
          <creation_ts>2006-09-09 06:04:11 -0700</creation_ts>
          <short_desc>hose off svg code</short_desc>
          <delta_ts>2006-09-09 14:20:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>55106</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-09 06:04:11 -0700</bug_when>
    <thetext>random style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55107</commentid>
    <comment_count>1</comment_count>
      <attachid>10472</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-09 06:07:09 -0700</bug_when>
    <thetext>Created attachment 10472
remove deprecated string usage, fix style</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10472</attachid>
            <date>2006-09-09 06:07:09 -0700</date>
            <delta_ts>2006-09-09 08:25:22 -0700</delta_ts>
            <desc>remove deprecated string usage, fix style</desc>
            <filename>hosedown.patch</filename>
            <type>text/plain</type>
            <size>60882</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE2Mjc0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI5IEBACisyMDA2LTA5
LTA5ICBFcmljIFNlaWRlbCAgPGVyaWNAZXNlaWRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBSZW1vdmUgRGVwcmVjYXRlZFN0
cmluZyB1c2FnZSBhbmQgZml4IHN0eWxlLgorICAgICAgICBodHRwOi8vYnVnemlsbGEub3BlbmRh
cndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzg3CisKKyAgICAgICAgTm8gdGVzdHMgd2VyZSBo
YXJtZWQgaW4gdGhlIG1ha2luZyBvZiB0aGlzIHBhdGNoLgorCisgICAgICAgICoga2NhbnZhcy9L
Q2FudmFzRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLQ2FudmFzRmlsdGVyRWZmZWN0
Ojppbik6CisgICAgICAgIChXZWJDb3JlOjpLQ2FudmFzRmlsdGVyRWZmZWN0OjpzZXRJbik6Cisg
ICAgICAgIChXZWJDb3JlOjpLQ2FudmFzRmlsdGVyRWZmZWN0OjpyZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6S0NhbnZhc0ZpbHRlckVmZmVjdDo6c2V0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OktDYW52YXNGRU1lcmdlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBr
Y2FudmFzL0tDYW52YXNGaWx0ZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpLQ2FudmFzRkVCbGVu
ZDo6aW4yKToKKyAgICAgICAgKFdlYkNvcmU6OktDYW52YXNGRUJsZW5kOjpzZXRJbjIpOgorICAg
ICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZFQ29tcG9zaXRlOjppbjIpOgorICAgICAgICAoV2ViQ29y
ZTo6S0NhbnZhc0ZFQ29tcG9zaXRlOjpzZXRJbjIpOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZh
c0ZFRGlzcGxhY2VtZW50TWFwOjppbjIpOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZFRGlz
cGxhY2VtZW50TWFwOjpzZXRJbjIpOgorICAgICAgICAoV2ViQ29yZTo6S0NhbnZhc0ZFTWVyZ2U6
Om1lcmdlSW5wdXRzKToKKyAgICAgICAgKFdlYkNvcmU6OktDYW52YXNGRU1lcmdlOjpzZXRNZXJn
ZUlucHV0cyk6CisgICAgICAgICoga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktDYW52YXNSZXNvdXJjZTo6aWRJblJlZ2lzdHJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OktDYW52YXNSZXNvdXJjZTo6c2V0SWRJblJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OmdldFJlc291cmNlQnlJZCk6CisgICAgICAgICoga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2Vz
Lmg6CisgICAgICAgICoga2NhbnZhcy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclBhdGg6OmdldEFic29sdXRlUmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyUGF0aDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUGF0aDo6ZHJhd01h
cmtlcnNJZk5lZWRlZCk6CisgICAgICAgICoga2NhbnZhcy9SZW5kZXJTVkdDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmdldEFic29sdXRlUmVwYWludFJlY3QpOgor
ICAgICAgICAqIGtjYW52YXMvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdl
OjpnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KToKKyAgICAgICAgKiBrY2FudmFzL1JlbmRlclNWR1Rl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6cGFpbnQpOgorICAgICAg
ICAqIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyOjppZEluUmVnaXN0cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyOjpzZXRJZEluUmVnaXN0cnkpOgorICAgICAgICAq
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lmg6CisgICAgICAgICog
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW06CisgICAgICAgIChX
ZWJDb3JlOjpLQ2FudmFzRmlsdGVyUXVhcnR6OjppbWFnZUZvck5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6S0NhbnZhc0ZpbHRlclF1YXJ0ejo6c2V0SW1hZ2VGb3JOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OktDYW52YXNGRU1lcmdlUXVhcnR6OjpnZXRDSUZpbHRlcik6CisgICAgICAgICoga3N2
ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlTVkdQcm9wZXJ0eSk6CisgICAgICAgICoga3N2ZzIvY3NzL1NWR1Jl
bmRlclN0eWxlLmNwcDoKKyAgICAgICAgKiBrc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGUuaDoKKyAg
ICAgICAgKiBrc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGVEZWZzLmg6CisgICAgICAgICoga3N2ZzIv
ZWNtYS9HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpnZXQpOgorICAg
ICAgICAqIGtzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGltZXI6Om5vdGlmeUFsbCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0Rlc2NFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rlc2NFbGVtZW50OjpTVkdEZXNjRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZXNjRWxlbWVudDo6ZGVzY3JpcHRpb24pOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdEZXNjRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVu
dDo6U1ZHRkVCbGVuZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1l
bnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpTVkdGRUNvbG9y
TWF0cml4RWxlbWVudCk6CisgICAgICAgIChTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsdGVy
RWZmZWN0KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6
OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHRkVDb21wb3NpdGVF
bGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQpOgorICAgICAgICAoU1ZHRkVDb21wb3NpdGVF
bGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQpOgor
ICAgICAgICAoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUZsb29kRWxlbWVudDo6U1ZHRkVGbG9vZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCk6CisgICAgICAgIChTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoU1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChTVkdGRU9mZnNl
dEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVudCk6CisgICAgICAgIChTVkdGRU9mZnNldEVsZW1l
bnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCk6CisgICAgICAgIChTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRVRp
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OlNWR0ZF
VGlsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVy
RWZmZWN0KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6
CisgICAgICAgIChTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcDoKKyAgICAgICAgKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRml0VG9WaWV3
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpdFRvVmlld0JveDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaDoKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkaWVudCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50
OjpmaWxsQXR0cmlidXRlc0Zyb21SZWZlcmVuY2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdHRlcm5FbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICAqIGtz
dmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8pOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6cGFyc2VQcmVzZXJ2ZUFzcGVjdFJhdGlv
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUTSk6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaDoKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkaWVudCk6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVmlld0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OlNWR1ZpZXdFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1pvb21BbmRQYW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6U1ZHWm9vbUFuZFBhbik6CisKIDIwMDYtMDktMDkgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBueXBvcC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4uCkluZGV4OiBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
Y2FudmFzL0tDYW52YXNGaWx0ZXJzLmNwcAkocmV2aXNpb24gMTYyNzEpCisrKyBrY2FudmFzL0tD
YW52YXNGaWx0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDIxICsxMDMsMjIgQEAgdm9p
ZCBLQ2FudmFzRmlsdGVyRWZmZWN0OjpzZXRTdWJSZWdpb24oYwogICAgIG1fc3VicmVnaW9uID0g
c3VicmVnaW9uOwogfQogCi1EZXByZWNhdGVkU3RyaW5nIEtDYW52YXNGaWx0ZXJFZmZlY3Q6Omlu
KCkgY29uc3QKK1N0cmluZyBLQ2FudmFzRmlsdGVyRWZmZWN0OjppbigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1faW47CiB9Ci12b2lkIEtDYW52YXNGaWx0ZXJFZmZlY3Q6OnNldEluKGNvbnN0IERl
cHJlY2F0ZWRTdHJpbmcgJmluKQorCit2b2lkIEtDYW52YXNGaWx0ZXJFZmZlY3Q6OnNldEluKGNv
bnN0IFN0cmluZyAmaW4pCiB7CiAgICAgbV9pbiA9IGluOwogfQogCi1EZXByZWNhdGVkU3RyaW5n
IEtDYW52YXNGaWx0ZXJFZmZlY3Q6OnJlc3VsdCgpIGNvbnN0CitTdHJpbmcgS0NhbnZhc0ZpbHRl
ckVmZmVjdDo6cmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZXN1bHQ7CiB9CiAKLXZv
aWQgS0NhbnZhc0ZpbHRlckVmZmVjdDo6c2V0UmVzdWx0KGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcg
JnJlc3VsdCkKK3ZvaWQgS0NhbnZhc0ZpbHRlckVmZmVjdDo6c2V0UmVzdWx0KGNvbnN0IFN0cmlu
ZyAmcmVzdWx0KQogewogICAgIG1fcmVzdWx0ID0gcmVzdWx0OwogfQpAQCAtNDIxLDcgKzQyMiwx
NiBAQCBUZXh0U3RyZWFtICZLQ2FudmFzRkVNZXJnZTo6ZXh0ZXJuYWxSZXByCiB7CiAgICAgdHMg
PDwgIlt0eXBlPU1FUkdFXSAiOwogICAgIEtDYW52YXNGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVw
cmVzZW50YXRpb24odHMpOwotICAgIHRzIDw8ICJbbWVyZ2UgaW5wdXRzPSIgPDwgbV9tZXJnZUlu
cHV0cyA8PCAiXSI7ICAgIAorICAgIHRzIDw8ICJbbWVyZ2UgaW5wdXRzPVsiOworICAgIHVuc2ln
bmVkIHggPSAwOworICAgIHVuc2lnbmVkIHNpemUgPSBtX21lcmdlSW5wdXRzLnNpemUoKTsKKyAg
ICB3aGlsZSAoeCA8IHNpemUpIHsKKyAgICAgICAgdHMgPDwgbV9tZXJnZUlucHV0c1t4XTsKKyAg
ICAgICAgeCsrOworICAgICAgICBpZiAoeCA8IG1fbWVyZ2VJbnB1dHMuc2l6ZSgpKQorICAgICAg
ICAgICAgdHMgPDwgIiwgIjsKKyAgICB9CisgICAgdHMgPDwgIl1dIjsKICAgICByZXR1cm4gdHM7
CiB9CiAKSW5kZXg6IGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2Fu
dmFzL0tDYW52YXNGaWx0ZXJzLmgJKHJldmlzaW9uIDE2MjcxKQorKysga2NhbnZhcy9LQ2FudmFz
RmlsdGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjZGVmaW5lIEtDYW52
YXNGaWx0ZXJzX0gKICNpZmRlZiBTVkdfU1VQUE9SVAogCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFN0
cmluZ0xpc3QuaCIKICNpbmNsdWRlICJLQ2FudmFzUmVzb3VyY2VzLmgiCiAKICNpZmRlZiBfX09C
SkNfXwpAQCAtMTQzLDExICsxNDIsMTEgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBzdWJSZWdp
b24oKSBjb25zdDsKICAgICB2b2lkIHNldFN1YlJlZ2lvbihjb25zdCBGbG9hdFJlY3QgJnN1YnJl
Z2lvbik7CiAKLSAgICBEZXByZWNhdGVkU3RyaW5nIGluKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJ
bihjb25zdCBEZXByZWNhdGVkU3RyaW5nICZpbik7CisgICAgU3RyaW5nIGluKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRJbihjb25zdCBTdHJpbmcgJmluKTsKIAotICAgIERlcHJlY2F0ZWRTdHJpbmcg
cmVzdWx0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSZXN1bHQoY29uc3QgRGVwcmVjYXRlZFN0cmlu
ZyAmcmVzdWx0KTsKKyAgICBTdHJpbmcgcmVzdWx0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZXN1
bHQoY29uc3QgU3RyaW5nICZyZXN1bHQpOwogCiAjaWYgX19BUFBMRV9fCiAgICAgdmlydHVhbCBD
SUZpbHRlciogZ2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiopIGNvbnN0ID0gMDsKQEAg
LTE1Nyw4ICsxNTYsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fc3Vi
cmVnaW9uOwotICAgIERlcHJlY2F0ZWRTdHJpbmcgbV9pbjsKLSAgICBEZXByZWNhdGVkU3RyaW5n
IG1fcmVzdWx0OworICAgIFN0cmluZyBtX2luOworICAgIFN0cmluZyBtX3Jlc3VsdDsKIH07CiAK
IFRleHRTdHJlYW0gJm9wZXJhdG9yPDwoVGV4dFN0cmVhbSAmLCBjb25zdCBLQ2FudmFzRmlsdGVy
RWZmZWN0ICYpOwpAQCAtMTczLDggKzE3Miw4IEBAIHR5cGVkZWYgZW51bSB7CiAKIGNsYXNzIEtD
YW52YXNGRUJsZW5kIDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAg
IERlcHJlY2F0ZWRTdHJpbmcgaW4yKCkgY29uc3QgeyByZXR1cm4gbV9pbjI7IH0KLSAgICB2b2lk
IHNldEluMihjb25zdCBEZXByZWNhdGVkU3RyaW5nICZpbjIpIHsgbV9pbjIgPSBpbjI7IH0KKyAg
ICBTdHJpbmcgaW4yKCkgY29uc3QgeyByZXR1cm4gbV9pbjI7IH0KKyAgICB2b2lkIHNldEluMihj
b25zdCBTdHJpbmcgJmluMikgeyBtX2luMiA9IGluMjsgfQogICAgIAogICAgIEtDQmxlbmRNb2Rl
VHlwZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICB2b2lkIHNldEJs
ZW5kTW9kZShLQ0JsZW5kTW9kZVR5cGUgbW9kZSkgeyBtX21vZGUgPSBtb2RlOyB9CkBAIC0xODMs
NyArMTgyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEtDQmxlbmRNb2RlVHlwZSBtX21v
ZGU7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyBtX2luMjsKKyAgICBTdHJpbmcgbV9pbjI7CiB9Owog
CiB0eXBlZGVmIGVudW0gewpAQCAtMjY1LDggKzI2NCw4IEBAIHR5cGVkZWYgZW51bSB7CiAKIGNs
YXNzIEtDYW52YXNGRUNvbXBvc2l0ZSA6IHB1YmxpYyBLQ2FudmFzRmlsdGVyRWZmZWN0IHsKIHB1
YmxpYzoKLSAgICBEZXByZWNhdGVkU3RyaW5nIGluMigpIGNvbnN0IHsgcmV0dXJuIG1faW4yOyB9
Ci0gICAgdm9pZCBzZXRJbjIoY29uc3QgRGVwcmVjYXRlZFN0cmluZyAmaW4yKSB7IG1faW4yID0g
aW4yOyB9CisgICAgU3RyaW5nIGluMigpIGNvbnN0IHsgcmV0dXJuIG1faW4yOyB9CisgICAgdm9p
ZCBzZXRJbjIoY29uc3QgU3RyaW5nICZpbjIpIHsgbV9pbjIgPSBpbjI7IH0KICAgICAKICAgICBL
Q0NvbXBvc2l0ZU9wZXJhdGlvblR5cGUgb3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcGVy
YXRpb247IH0KICAgICB2b2lkIHNldE9wZXJhdGlvbihLQ0NvbXBvc2l0ZU9wZXJhdGlvblR5cGUg
b3BlcikgeyBtX29wZXJhdGlvbiA9IG9wZXI7IH0KQEAgLTI4Myw3ICsyODIsNyBAQCBwdWJsaWM6
CiAgICAgVGV4dFN0cmVhbSAmZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtICYpIGNv
bnN0OwogCiBwcml2YXRlOgotICAgIERlcHJlY2F0ZWRTdHJpbmcgbV9pbjI7CisgICAgU3RyaW5n
IG1faW4yOwogICAgIEtDQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBtX29wZXJhdGlvbjsKICAgICBm
bG9hdCBtX2sxOwogICAgIGZsb2F0IG1fazI7CkBAIC00NzUsOCArNDc0LDggQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAgICAgCi0gICAgRGVwcmVjYXRlZFN0cmluZyBpbjIoKSBjb25zdCB7IHJl
dHVybiBtX2luMjsgfQotICAgIHZvaWQgc2V0SW4yKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJmlu
MikgeyBtX2luMiA9IGluMjsgfQorICAgIFN0cmluZyBpbjIoKSBjb25zdCB7IHJldHVybiBtX2lu
MjsgfQorICAgIHZvaWQgc2V0SW4yKGNvbnN0IFN0cmluZyAmaW4yKSB7IG1faW4yID0gaW4yOyB9
CiAgICAgCiAgICAgS0NDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX3hDaGFubmVsU2VsZWN0b3I7IH0KICAgICB2b2lkIHNldFhDaGFubmVsU2Vs
ZWN0b3IoY29uc3QgS0NDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IpIHsgbV94
Q2hhbm5lbFNlbGVjdG9yID0geENoYW5uZWxTZWxlY3RvcjsgfQpAQCAtNDkwLDcgKzQ4OSw3IEBA
IHB1YmxpYzoKICAgICBUZXh0U3RyZWFtICZleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJl
YW0gJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIERlcHJlY2F0ZWRTdHJpbmcgbV9pbjI7
CisgICAgU3RyaW5nIG1faW4yOwogICAgIEtDQ2hhbm5lbFNlbGVjdG9yVHlwZSBtX3hDaGFubmVs
U2VsZWN0b3I7CiAgICAgS0NDaGFubmVsU2VsZWN0b3JUeXBlIG1feUNoYW5uZWxTZWxlY3RvcjsK
ICAgICBmbG9hdCBtX3NjYWxlOwpAQCAtNTQ4LDEzICs1NDcsMTMgQEAgcHJpdmF0ZToKIAogY2xh
c3MgS0NhbnZhc0ZFTWVyZ2UgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdCB7CiBwdWJsaWM6
Ci0gICAgRGVwcmVjYXRlZFN0cmluZ0xpc3QgbWVyZ2VJbnB1dHMoKSBjb25zdCB7IHJldHVybiBt
X21lcmdlSW5wdXRzOyB9Ci0gICAgdm9pZCBzZXRNZXJnZUlucHV0cyhjb25zdCBEZXByZWNhdGVk
U3RyaW5nTGlzdCAmbWVyZ2VJbnB1dHMpIHsgbV9tZXJnZUlucHV0cyA9IG1lcmdlSW5wdXRzOyB9
CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIG1lcmdlSW5wdXRzKCkgY29uc3QgeyByZXR1cm4g
bV9tZXJnZUlucHV0czsgfQorICAgIHZvaWQgc2V0TWVyZ2VJbnB1dHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIG1lcmdlSW5wdXRzKSB7IG1fbWVyZ2VJbnB1dHMgPSBtZXJnZUlucHV0czsgfQogCiAg
ICAgVGV4dFN0cmVhbSAmZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtICYpIGNvbnN0
OwogICAgIAogcHJpdmF0ZToKLSAgICBEZXByZWNhdGVkU3RyaW5nTGlzdCBtX21lcmdlSW5wdXRz
OworICAgIFZlY3RvcjxTdHJpbmc+IG1fbWVyZ2VJbnB1dHM7CiB9OwogCiB0eXBlZGVmIGVudW0g
ewpJbmRleDoga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2Fu
dmFzL0tDYW52YXNSZXNvdXJjZXMuY3BwCShyZXZpc2lvbiAxNjI3MSkKKysrIGtjYW52YXMvS0Nh
bnZhc1Jlc291cmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDE0ICs5NiwxNCBAQCB2b2lk
IEtDYW52YXNSZXNvdXJjZTo6aW52YWxpZGF0ZSgpCiAgICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVy
UGF0aCAqPigqaXQpLT5yZXBhaW50KCk7CiB9CiAKLURlcHJlY2F0ZWRTdHJpbmcgS0NhbnZhc1Jl
c291cmNlOjppZEluUmVnaXN0cnkoKSBjb25zdAorU3RyaW5nIEtDYW52YXNSZXNvdXJjZTo6aWRJ
blJlZ2lzdHJ5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVnaXN0cnlJZDsKKyAgICByZXR1cm4g
bV9yZWdpc3RyeUlkOwogfQogCi12b2lkIEtDYW52YXNSZXNvdXJjZTo6c2V0SWRJblJlZ2lzdHJ5
KGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIG5ld0lkKQordm9pZCBLQ2FudmFzUmVzb3VyY2U6OnNl
dElkSW5SZWdpc3RyeShjb25zdCBTdHJpbmcmIG5ld0lkKQogewotICAgIHJlZ2lzdHJ5SWQgPSBu
ZXdJZDsKKyAgICBtX3JlZ2lzdHJ5SWQgPSBuZXdJZDsKIH0gCiAKIFRleHRTdHJlYW0mIEtDYW52
YXNSZXNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtICZ0cykgY29uc3QK
QEAgLTI4OCw4ICsyODgsNiBAQCBLQ2FudmFzUmVzb3VyY2UgKmdldFJlc291cmNlQnlJZChEb2N1
bWVuCiAgICAgU1ZHRWxlbWVudCAqc3ZnRWxlbWVudCA9IHN2Z19keW5hbWljX2Nhc3QoZWxlbWVu
dCk7CiAgICAgaWYgKHN2Z0VsZW1lbnQgJiYgc3ZnRWxlbWVudC0+aXNTdHlsZWQoKSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQgKj4oc3ZnRWxlbWVudCktPmNh
bnZhc1Jlc291cmNlKCk7Ci0gICAgZWxzZQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byBmaW5kIHJlc291cmNlIHdpdGggaWQ6ICVzXG4iLCBpZC5kZXByZWNhdGVkU3RyaW5nKCku
YXNjaWkoKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IGtjYW52YXMvS0NhbnZhc1Jlc291
cmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5oCShyZXZpc2lv
biAxNjI3MSkKKysrIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFJlbmRlclBhdGhMaXN0ICZjbGll
bnRzKCkgY29uc3Q7CiAgICAgCi0gICAgRGVwcmVjYXRlZFN0cmluZyBpZEluUmVnaXN0cnkoKSBj
b25zdDsKLSAgICB2b2lkIHNldElkSW5SZWdpc3RyeShjb25zdCBEZXByZWNhdGVkU3RyaW5nJiBu
ZXdJZCk7CisgICAgU3RyaW5nIGlkSW5SZWdpc3RyeSgpIGNvbnN0OworICAgIHZvaWQgc2V0SWRJ
blJlZ2lzdHJ5KGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1BhaW50
U2VydmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNGaWx0
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0g
JikgY29uc3Q7IAogcHJpdmF0ZToKICAgICBSZW5kZXJQYXRoTGlzdCBtX2NsaWVudHM7Ci0gICAg
RGVwcmVjYXRlZFN0cmluZyByZWdpc3RyeUlkOworICAgIFN0cmluZyBtX3JlZ2lzdHJ5SWQ7CiB9
OwogCiAvLyBDbGlwcGluZyBwYXRocwpJbmRleDoga2NhbnZhcy9SZW5kZXJQYXRoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBrY2FudmFzL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiAxNjI3MSkKKysrIGtj
YW52YXMvUmVuZGVyUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBJ
bnRSZWN0IFJlbmRlclBhdGg6OmdldEFic29sdXRlUmVwYWludFJlCiAgICAgRmxvYXRSZWN0IHJl
cGFpbnRSZWN0ID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KHJlbGF0aXZlQkJveCh0cnVl
KSk7CiAgICAgCiAgICAgLy8gRmlsdGVycyBjYW4gZXhwYW5kIHRoZSBib3VuZGluZyBib3gKLSAg
ICBLQ2FudmFzRmlsdGVyICpmaWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKGRvY3VtZW50KCksIHN0eWxl
KCktPnN2Z1N0eWxlKCktPmZpbHRlcigpLm1pZCgxKSk7CisgICAgS0NhbnZhc0ZpbHRlciogZmls
dGVyID0gZ2V0RmlsdGVyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5maWx0
ZXIoKS5zdWJzdHJpbmcoMSkpOwogICAgIGlmIChmaWx0ZXIpCiAgICAgICAgIHJlcGFpbnRSZWN0
LnVuaXRlKGZpbHRlci0+ZmlsdGVyQkJveEZvckl0ZW1CQm94KHJlcGFpbnRSZWN0KSk7CiAgICAg
CkBAIC0xOTcsMTYgKzE5NywxNiBAQCB2b2lkIFJlbmRlclBhdGg6OnBhaW50KFBhaW50SW5mbyAm
cGFpbnRJCiAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGxvY2FsVHJhbnNmb3JtKCkpOwogCiAgICAg
Ly8gc2V0dXAgdG8gYXBwbHkgZmlsdGVycwotICAgIEtDYW52YXNGaWx0ZXIgKmZpbHRlciA9IGdl
dEZpbHRlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsdGVyKCkubWlk
KDEpKTsKKyAgICBLQ2FudmFzRmlsdGVyKiBmaWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKGRvY3VtZW50
KCksIHN0eWxlKCktPnN2Z1N0eWxlKCktPmZpbHRlcigpLnN1YnN0cmluZygxKSk7CiAgICAgaWYg
KGZpbHRlcikgewogICAgICAgICBmaWx0ZXItPnByZXBhcmVGaWx0ZXIocmVsYXRpdmVCQm94KHRy
dWUpKTsKICAgICAgICAgY29udGV4dCA9IGRldmljZS0+Y3VycmVudENvbnRleHQoKTsKICAgICB9
CiAKLSAgICBpZiAoS0NhbnZhc0NsaXBwZXIgKmNsaXBwZXIgPSBnZXRDbGlwcGVyQnlJZChkb2N1
bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5jbGlwUGF0aCgpLm1pZCgxKSkpCisgICAgaWYg
KEtDYW52YXNDbGlwcGVyKiBjbGlwcGVyID0gZ2V0Q2xpcHBlckJ5SWQoZG9jdW1lbnQoKSwgc3R5
bGUoKS0+c3ZnU3R5bGUoKS0+Y2xpcFBhdGgoKS5zdWJzdHJpbmcoMSkpKQogICAgICAgICBjbGlw
cGVyLT5hcHBseUNsaXAocmVsYXRpdmVCQm94KHRydWUpKTsKIAotICAgIGlmIChLQ2FudmFzTWFz
a2VyICptYXNrZXIgPSBnZXRNYXNrZXJCeUlkKGRvY3VtZW50KCksIHN0eWxlKCktPnN2Z1N0eWxl
KCktPm1hc2tFbGVtZW50KCkubWlkKDEpKSkKKyAgICBpZiAoS0NhbnZhc01hc2tlciogbWFza2Vy
ID0gZ2V0TWFza2VyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5tYXNrRWxl
bWVudCgpLnN1YnN0cmluZygxKSkpCiAgICAgICAgIG1hc2tlci0+YXBwbHlNYXNrKHJlbGF0aXZl
QkJveCh0cnVlKSk7CiAKICAgICBjb250ZXh0LT5jbGVhclBhdGgoKTsKQEAgLTQzMiw5ICs0MzIs
OSBAQCB2b2lkIFJlbmRlclBhdGg6OmRyYXdNYXJrZXJzSWZOZWVkZWQoR3JhCiAgICAgRG9jdW1l
bnQgKmRvYyA9IGRvY3VtZW50KCk7CiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUgKnN2Z1N0eWxl
ID0gc3R5bGUoKS0+c3ZnU3R5bGUoKTsKIAotICAgIEtDYW52YXNNYXJrZXIgKnN0YXJ0TWFya2Vy
ID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2Z1N0eWxlLT5zdGFydE1hcmtlcigpLm1pZCgxKSk7Ci0g
ICAgS0NhbnZhc01hcmtlciAqbWlkTWFya2VyID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2Z1N0eWxl
LT5taWRNYXJrZXIoKS5taWQoMSkpOwotICAgIEtDYW52YXNNYXJrZXIgKmVuZE1hcmtlciA9IGdl
dE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+ZW5kTWFya2VyKCkubWlkKDEpKTsKKyAgICBLQ2Fu
dmFzTWFya2VyKiBzdGFydE1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+c3Rh
cnRNYXJrZXIoKS5zdWJzdHJpbmcoMSkpOworICAgIEtDYW52YXNNYXJrZXIqIG1pZE1hcmtlciA9
IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+bWlkTWFya2VyKCkuc3Vic3RyaW5nKDEpKTsK
KyAgICBLQ2FudmFzTWFya2VyKiBlbmRNYXJrZXIgPSBnZXRNYXJrZXJCeUlkKGRvYywgc3ZnU3R5
bGUtPmVuZE1hcmtlcigpLnN1YnN0cmluZygxKSk7CiAgICAgCiAgICAgaWYgKCFzdGFydE1hcmtl
ciAmJiAhbWlkTWFya2VyICYmICFlbmRNYXJrZXIpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IGtj
YW52YXMvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL1JlbmRl
clNWR0NvbnRhaW5lci5jcHAJKHJldmlzaW9uIDE2MjcxKQorKysga2NhbnZhcy9SZW5kZXJTVkdD
b250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBSZW5k
ZXJTVkdDb250YWluZXI6OnBhaW50KFBhaW50SW5mbwogICAgIGlmIChwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgIWRyYXdzQ29udGVudHMoKSB8fCBzdHlsZSgpLT52
aXNpYmlsaXR5KCkgPT0gSElEREVOKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgS0NhbnZh
c0ZpbHRlciAqZmlsdGVyID0gZ2V0RmlsdGVyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdT
dHlsZSgpLT5maWx0ZXIoKS5taWQoMSkpOworICAgIEtDYW52YXNGaWx0ZXIqIGZpbHRlciA9IGdl
dEZpbHRlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsdGVyKCkuc3Vi
c3RyaW5nKDEpKTsKICAgICBpZiAoIWZpcnN0Q2hpbGQoKSAmJiAhZmlsdGVyKQogICAgICAgICBy
ZXR1cm47IC8vIFNwZWM6IGdyb3VwcyB3L28gY2hpbGRyZW4gc3RpbGwgbWF5IHJlbmRlciBmaWx0
ZXIgY29udGVudC4KICAgICAKQEAgLTE4MCwxMCArMTgwLDEwIEBAIHZvaWQgUmVuZGVyU1ZHQ29u
dGFpbmVyOjpwYWludChQYWludEluZm8KICAgICBpZiAoIWxvY2FsVHJhbnNmb3JtKCkuaXNJZGVu
dGl0eSgpKQogICAgICAgICBkZXZpY2VDb250ZXh0LT5jb25jYXRDVE0obG9jYWxUcmFuc2Zvcm0o
KSk7CiAgICAgCi0gICAgaWYgKEtDYW52YXNDbGlwcGVyICpjbGlwcGVyID0gZ2V0Q2xpcHBlckJ5
SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+Y2xpcFBhdGgoKS5taWQoMSkpKQor
ICAgIGlmIChLQ2FudmFzQ2xpcHBlciAqY2xpcHBlciA9IGdldENsaXBwZXJCeUlkKGRvY3VtZW50
KCksIHN0eWxlKCktPnN2Z1N0eWxlKCktPmNsaXBQYXRoKCkuc3Vic3RyaW5nKDEpKSkKICAgICAg
ICAgY2xpcHBlci0+YXBwbHlDbGlwKHJlbGF0aXZlQkJveCh0cnVlKSk7CiAKLSAgICBpZiAoS0Nh
bnZhc01hc2tlciAqbWFza2VyID0gZ2V0TWFza2VyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5z
dmdTdHlsZSgpLT5tYXNrRWxlbWVudCgpLm1pZCgxKSkpCisgICAgaWYgKEtDYW52YXNNYXNrZXIg
Km1hc2tlciA9IGdldE1hc2tlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+
bWFza0VsZW1lbnQoKS5zdWJzdHJpbmcoMSkpKQogICAgICAgICBtYXNrZXItPmFwcGx5TWFzayhy
ZWxhdGl2ZUJCb3godHJ1ZSkpOwogCiAgICAgZmxvYXQgb3BhY2l0eSA9IHN0eWxlKCktPm9wYWNp
dHkoKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBJbnRSZWN0IFJlbmRlclNWR0NvbnRhaW5lcjo6Z2V0
QWJzb2x1dGVSCiAgICAgICAgIHJlcGFpbnRSZWN0LnVuaXRlKGN1cnJlbnQtPmdldEFic29sdXRl
UmVwYWludFJlY3QoKSk7CiAgICAgCiAgICAgLy8gRmlsdGVycyBjYW4gZXhwYW5kIHRoZSBib3Vu
ZGluZyBib3gKLSAgICBLQ2FudmFzRmlsdGVyICpmaWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKGRvY3Vt
ZW50KCksIHN0eWxlKCktPnN2Z1N0eWxlKCktPmZpbHRlcigpLm1pZCgxKSk7CisgICAgS0NhbnZh
c0ZpbHRlciAqZmlsdGVyID0gZ2V0RmlsdGVyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdT
dHlsZSgpLT5maWx0ZXIoKS5zdWJzdHJpbmcoMSkpOwogICAgIGlmIChmaWx0ZXIpCiAgICAgICAg
IHJlcGFpbnRSZWN0LnVuaXRlKGVuY2xvc2luZ0ludFJlY3QoZmlsdGVyLT5maWx0ZXJCQm94Rm9y
SXRlbUJCb3gocmVwYWludFJlY3QpKSk7CiAKSW5kZXg6IGtjYW52YXMvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAx
NjI3MykKKysrIGtjYW52YXMvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDUsMTMgKzE0NSwxMyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBh
CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhl
aWdodCgpKTsKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSAqc3ZnU3R5bGUgPSBzdHlsZSgpLT5z
dmdTdHlsZSgpOwogICAgICAgICAgICAgCi0gICAgaWYgKEtDYW52YXNDbGlwcGVyICpjbGlwcGVy
ID0gZ2V0Q2xpcHBlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmNsaXBQYXRoKCkubWlkKDEp
KSkKKyAgICBpZiAoS0NhbnZhc0NsaXBwZXIqIGNsaXBwZXIgPSBnZXRDbGlwcGVyQnlJZChkb2N1
bWVudCgpLCBzdmdTdHlsZS0+Y2xpcFBhdGgoKS5zdWJzdHJpbmcoMSkpKQogICAgICAgICBjbGlw
cGVyLT5hcHBseUNsaXAoYm91bmRpbmdCb3gpOwogCi0gICAgaWYgKEtDYW52YXNNYXNrZXIgKm1h
c2tlciA9IGdldE1hc2tlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPm1hc2tFbGVtZW50KCku
bWlkKDEpKSkKKyAgICBpZiAoS0NhbnZhc01hc2tlciogbWFza2VyID0gZ2V0TWFza2VyQnlJZChk
b2N1bWVudCgpLCBzdmdTdHlsZS0+bWFza0VsZW1lbnQoKS5zdWJzdHJpbmcoMSkpKQogICAgICAg
ICBtYXNrZXItPmFwcGx5TWFzayhib3VuZGluZ0JveCk7CiAKLSAgICBLQ2FudmFzRmlsdGVyICpm
aWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKGRvY3VtZW50KCksIHN2Z1N0eWxlLT5maWx0ZXIoKS5taWQo
MSkpOworICAgIEtDYW52YXNGaWx0ZXIqIGZpbHRlciA9IGdldEZpbHRlckJ5SWQoZG9jdW1lbnQo
KSwgc3ZnU3R5bGUtPmZpbHRlcigpLnN1YnN0cmluZygxKSk7CiAgICAgaWYgKGZpbHRlcikKICAg
ICAgICAgZmlsdGVyLT5wcmVwYXJlRmlsdGVyKGJvdW5kaW5nQm94KTsKICAgICAKQEAgLTI2MCw3
ICsyNjAsNyBAQCBJbnRSZWN0IFJlbmRlclNWR0ltYWdlOjpnZXRBYnNvbHV0ZVJlcGFpCiAgICAg
RmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0
UmVjdChpbWFnZS0+eCgpLT52YWx1ZSgpLCBpbWFnZS0+eSgpLT52YWx1ZSgpLCB3aWR0aCgpLCBo
ZWlnaHQoKSkpOwogCiAgICAgLy8gRmlsdGVycyBjYW4gZXhwYW5kIHRoZSBib3VuZGluZyBib3gK
LSAgICBLQ2FudmFzRmlsdGVyICpmaWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKGRvY3VtZW50KCksIHN0
eWxlKCktPnN2Z1N0eWxlKCktPmZpbHRlcigpLm1pZCgxKSk7CisgICAgS0NhbnZhc0ZpbHRlciAq
ZmlsdGVyID0gZ2V0RmlsdGVyQnlJZChkb2N1bWVudCgpLCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5m
aWx0ZXIoKS5zdWJzdHJpbmcoMSkpOwogICAgIGlmIChmaWx0ZXIpCiAgICAgICAgIHJlcGFpbnRS
ZWN0LnVuaXRlKGZpbHRlci0+ZmlsdGVyQkJveEZvckl0ZW1CQm94KHJlcGFpbnRSZWN0KSk7CiAK
SW5kZXg6IGtjYW52YXMvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9S
ZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gMTYyNzMpCisrKyBrY2FudmFzL1JlbmRlclNWR1Rl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxMyArODAsMTMgQEAgdm9pZCBSZW5kZXJTVkdU
ZXh0OjpwYWludChQYWludEluZm8mIHBhaQogICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCgwLCAw
LCB3aWR0aCgpLCBoZWlnaHQoKSk7CiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUgKnN2Z1N0eWxl
ID0gc3R5bGUoKS0+c3ZnU3R5bGUoKTsKICAgICAgICAgICAgIAotICAgIGlmIChLQ2FudmFzQ2xp
cHBlciAqY2xpcHBlciA9IGdldENsaXBwZXJCeUlkKGRvY3VtZW50KCksIHN2Z1N0eWxlLT5jbGlw
UGF0aCgpLm1pZCgxKSkpCisgICAgaWYgKEtDYW52YXNDbGlwcGVyKiBjbGlwcGVyID0gZ2V0Q2xp
cHBlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmNsaXBQYXRoKCkuc3Vic3RyaW5nKDEpKSkK
ICAgICAgICAgY2xpcHBlci0+YXBwbHlDbGlwKGJvdW5kaW5nQm94KTsKIAotICAgIGlmIChLQ2Fu
dmFzTWFza2VyICptYXNrZXIgPSBnZXRNYXNrZXJCeUlkKGRvY3VtZW50KCksIHN2Z1N0eWxlLT5t
YXNrRWxlbWVudCgpLm1pZCgxKSkpCisgICAgaWYgKEtDYW52YXNNYXNrZXIqIG1hc2tlciA9IGdl
dE1hc2tlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPm1hc2tFbGVtZW50KCkuc3Vic3RyaW5n
KDEpKSkKICAgICAgICAgbWFza2VyLT5hcHBseU1hc2soYm91bmRpbmdCb3gpOwogCi0gICAgS0Nh
bnZhc0ZpbHRlciAqZmlsdGVyID0gZ2V0RmlsdGVyQnlJZChkb2N1bWVudCgpLCBzdmdTdHlsZS0+
ZmlsdGVyKCkubWlkKDEpKTsKKyAgICBLQ2FudmFzRmlsdGVyKiBmaWx0ZXIgPSBnZXRGaWx0ZXJC
eUlkKGRvY3VtZW50KCksIHN2Z1N0eWxlLT5maWx0ZXIoKS5zdWJzdHJpbmcoMSkpOwogICAgIGlm
IChmaWx0ZXIpCiAgICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihib3VuZGluZ0JveCk7CiAg
ICAgICAgIApJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyLmgJKHJldmlz
aW9uIDE2MjcxKQorKysga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIGNvbnN0IFJlbmRlclBh
dGggKmFjdGl2ZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlQ2xpZW50O30KICAgICB2
b2lkIHNldEFjdGl2ZUNsaWVudChjb25zdCBSZW5kZXJQYXRoICpjbGllbnQpIHsgbV9hY3RpdmVD
bGllbnQgPSBjbGllbnQ7IH0KIAotICAgIERlcHJlY2F0ZWRTdHJpbmcgaWRJblJlZ2lzdHJ5KCkg
Y29uc3QgeyAgcmV0dXJuIG1fcmVnaXN0cnlJZDsgfQotICAgIHZvaWQgc2V0SWRJblJlZ2lzdHJ5
KGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIG5ld0lkKSB7IG1fcmVnaXN0cnlJZCA9IG5ld0lkOyB9
IAorICAgIFN0cmluZyBpZEluUmVnaXN0cnkoKSBjb25zdCB7ICByZXR1cm4gbV9yZWdpc3RyeUlk
OyB9CisgICAgdm9pZCBzZXRJZEluUmVnaXN0cnkoY29uc3QgU3RyaW5nJiBuZXdJZCkgeyBtX3Jl
Z2lzdHJ5SWQgPSBuZXdJZDsgfSAKICAgICAKICAgICB2aXJ0dWFsIEtDUGFpbnRTZXJ2ZXJUeXBl
IHR5cGUoKSBjb25zdCA9IDA7CiAgICAgCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVuZGVyUGF0aChLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCosIGNvbnN0IFJl
bmRlclBhdGgqLCBLQ1BhaW50VGFyZ2V0VHlwZSkgY29uc3QgPSAwOwogcHJpdmF0ZToKICAgICBj
b25zdCBSZW5kZXJQYXRoICptX2FjdGl2ZUNsaWVudDsKLSAgICBEZXByZWNhdGVkU3RyaW5nIG1f
cmVnaXN0cnlJZDsKKyAgICBTdHJpbmcgbV9yZWdpc3RyeUlkOwogICAgIGJvb2wgbV9wYWludGlu
Z1RleHQ7CiB9OwogCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1
YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVy
UXVhcnR6LmgJKHJldmlzaW9uIDE2MjcxKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52
YXNGaWx0ZXJRdWFydHouaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KTsK
ICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KTsKICAg
ICAKLSAgICBDSUltYWdlICppbWFnZUZvck5hbWUoY29uc3QgRGVwcmVjYXRlZFN0cmluZyAmbmFt
ZSkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJbWFnZUZvck5hbWUoQ0lJbWFnZSAqaW1hZ2UsIGNvbnN0
IERlcHJlY2F0ZWRTdHJpbmcgJm5hbWUpOworICAgIENJSW1hZ2UgKmltYWdlRm9yTmFtZShjb25z
dCBTdHJpbmcgJm5hbWUpIGNvbnN0OworICAgIHZvaWQgc2V0SW1hZ2VGb3JOYW1lKENJSW1hZ2Ug
KmltYWdlLCBjb25zdCBTdHJpbmcgJm5hbWUpOwogICAgIAogICAgIHZvaWQgc2V0T3V0cHV0SW1h
Z2UoY29uc3QgS0NhbnZhc0ZpbHRlckVmZmVjdCAqZmlsdGVyRWZmZWN0LCBDSUltYWdlICpvdXRw
dXQpOwogICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UoY29uc3QgS0NhbnZhc0ZpbHRlckVmZmVjdCAq
ZmlsdGVyRWZmZWN0KTsKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVy
UXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmls
dGVyUXVhcnR6Lm1tCShyZXZpc2lvbiAxNjI3MSkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9L
Q2FudmFzRmlsdGVyUXVhcnR6Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsMTQgKzE4OCwxNCBA
QCBOU0FycmF5ICpLQ2FudmFzRmlsdGVyUXVhcnR6OjpnZXRDSUZpbHRlCiAgICAgcmV0dXJuIGZp
bHRlckVmZmVjdHM7CiB9CiAKLUNJSW1hZ2UgKktDYW52YXNGaWx0ZXJRdWFydHo6OmltYWdlRm9y
TmFtZShjb25zdCBEZXByZWNhdGVkU3RyaW5nJiBuYW1lKSBjb25zdAorQ0lJbWFnZSAqS0NhbnZh
c0ZpbHRlclF1YXJ0ejo6aW1hZ2VGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gW21faW1hZ2VzQnlOYW1lIG9iamVjdEZvcktleTpuYW1lLmdldE5TU3RyaW5n
KCldOworICAgIHJldHVybiBbbV9pbWFnZXNCeU5hbWUgb2JqZWN0Rm9yS2V5Om5hbWVdOwogfQog
Ci12b2lkIEtDYW52YXNGaWx0ZXJRdWFydHo6OnNldEltYWdlRm9yTmFtZShDSUltYWdlICppbWFn
ZSwgY29uc3QgRGVwcmVjYXRlZFN0cmluZyAmbmFtZSkKK3ZvaWQgS0NhbnZhc0ZpbHRlclF1YXJ0
ejo6c2V0SW1hZ2VGb3JOYW1lKENJSW1hZ2UgKmltYWdlLCBjb25zdCBTdHJpbmcgJm5hbWUpCiB7
Ci0gICAgW21faW1hZ2VzQnlOYW1lIHNldFZhbHVlOmltYWdlIGZvcktleTpuYW1lLmdldE5TU3Ry
aW5nKCldOworICAgIFttX2ltYWdlc0J5TmFtZSBzZXRWYWx1ZTppbWFnZSBmb3JLZXk6bmFtZV07
CiB9CiAKIHZvaWQgS0NhbnZhc0ZpbHRlclF1YXJ0ejo6c2V0T3V0cHV0SW1hZ2UoY29uc3QgS0Nh
bnZhc0ZpbHRlckVmZmVjdCAqZmlsdGVyRWZmZWN0LCBDSUltYWdlICpvdXRwdXQpCkBAIC03NzAs
MTUgKzc3MCwxMyBAQCBDSUZpbHRlciAqS0NhbnZhc0ZFTWVyZ2VRdWFydHo6OmdldENJRmlsCiB7
CiAgICAgQ0lGaWx0ZXIgKmZpbHRlciA9IG5pbDsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7Ci0gICAgRGVwcmVjYXRlZFN0cmluZ0xpc3QgaW5wdXRzID0gbWVyZ2VJbnB1dHMoKTsK
LSAgICBEZXByZWNhdGVkVmFsdWVMaXN0SXRlcmF0b3I8RGVwcmVjYXRlZFN0cmluZz4gaXQgPSBp
bnB1dHMuYmVnaW4oKTsKLSAgICBEZXByZWNhdGVkVmFsdWVMaXN0SXRlcmF0b3I8RGVwcmVjYXRl
ZFN0cmluZz4gZW5kID0gaW5wdXRzLmVuZCgpOworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
bnB1dHMgPSBtZXJnZUlucHV0cygpOwogCiAgICAgQ0lJbWFnZSAqcHJldmlvdXNPdXRwdXQgPSBx
dWFydHpGaWx0ZXItPmlucHV0SW1hZ2UodGhpcyk7Ci0gICAgZm9yICg7aXQgIT0gZW5kOyBpdCsr
KSB7Ci0gICAgICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBxdWFydHpGaWx0ZXItPmltYWdlRm9y
TmFtZSgqaXQpOwotICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChpbnB1dEltYWdlKTsKLSAgICBG
RV9RVUFSVFpfQ0hFQ0tfSU5QVVQocHJldmlvdXNPdXRwdXQpOworICAgIGZvciAodW5zaWduZWQg
eCA9IDA7IHggPCBpbnB1dHMuc2l6ZSgpOyB4KyspIHsKKyAgICAgICAgQ0lJbWFnZSAqaW5wdXRJ
bWFnZSA9IHF1YXJ0ekZpbHRlci0+aW1hZ2VGb3JOYW1lKGlucHV0c1t4XSk7CisgICAgICAgIEZF
X1FVQVJUWl9DSEVDS19JTlBVVChpbnB1dEltYWdlKTsKKyAgICAgICAgRkVfUVVBUlRaX0NIRUNL
X0lOUFVUKHByZXZpb3VzT3V0cHV0KTsKICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRl
cldpdGhOYW1lOkAiQ0lTb3VyY2VPdmVyQ29tcG9zaXRpbmciXTsKICAgICAgICAgW2ZpbHRlciBz
ZXREZWZhdWx0c107CiAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6
QCJpbnB1dEltYWdlIl07CkluZGV4OiBrc3ZnMi9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3N2ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lv
biAxNjI3MSkKKysrIGtzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgwLDEwICs0ODAsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVNW
R1Byb3BlcnR5KAogICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgczsKKyAgICAgICAg
ICAgIFN0cmluZyBzOwogICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJp
bWl0aXZlVHlwZSgpOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19VUkkpCi0gICAgICAgICAgICAgICAgcyA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdW
YWx1ZSgpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBzID0gcHJpbWl0aXZl
VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC00OTYsMTAgKzQ5NiwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5U1ZHUHJvcGVydHkoCiAgICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzOwor
ICAgICAgICAgICAgU3RyaW5nIHM7CiAgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZh
bHVlLT5wcmltaXRpdmVUeXBlKCk7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1VSSSkKLSAgICAgICAgICAgICAgICBzID0gcHJpbWl0aXZlVmFsdWUtPmdl
dFN0cmluZ1ZhbHVlKCkuZGVwcmVjYXRlZFN0cmluZygpOworICAgICAgICAgICAgICAgIHMgPSBw
cmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTUxMiwxMCArNTEyLDEwIEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlTVkdQcm9wZXJ0eSgKICAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBEZXByZWNhdGVkU3Ry
aW5nIHM7CisgICAgICAgICAgICBTdHJpbmcgczsKICAgICAgICAgICAgIGludCB0eXBlID0gcHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKQotICAgICAgICAgICAgICAgIHMgPSBwcmltaXRpdmVW
YWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5kZXByZWNhdGVkU3RyaW5nKCk7CisgICAgICAgICAgICAg
ICAgcyA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTY2LDEwICs1NjYsMTAgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVNWR1Byb3BlcnR5KAogICAgICAgICAgICAgaWYgKCFwcmlt
aXRpdmVWYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIERlcHJl
Y2F0ZWRTdHJpbmcgczsKKyAgICAgICAgICAgIFN0cmluZyBzOwogICAgICAgICAgICAgaW50IHR5
cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwogICAgICAgICAgICAgaWYgKHR5
cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpCi0gICAgICAgICAgICAgICAgcyA9IHBy
aW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAg
ICAgICAgICAgICBzID0gcHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgc3Znc3R5bGUt
PnNldEZpbHRlcihzKTsKQEAgLTU4MSwxMCArNTgxLDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlTVkdQcm9wZXJ0eSgKICAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHM7
CisgICAgICAgICAgICBTdHJpbmcgczsKICAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVVJJKQotICAgICAgICAgICAgICAgIHMgPSBwcmltaXRpdmVWYWx1ZS0+
Z2V0U3RyaW5nVmFsdWUoKS5kZXByZWNhdGVkU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgcyA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTk3LDEwICs1OTcsMTAgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVNWR1Byb3BlcnR5KAogICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIERlcHJlY2F0ZWRT
dHJpbmcgczsKKyAgICAgICAgICAgIFN0cmluZyBzOwogICAgICAgICAgICAgaW50IHR5cGUgPSBw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpCi0gICAgICAgICAgICAgICAgcyA9IHByaW1pdGl2
ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgICAg
ICAgICBzID0gcHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBrc3ZnMi9jc3MvU1ZHUmVuZGVy
U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZS5jcHAJKHJl
dmlzaW9uIDE2MjcxKQorKysga3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZH
UmVuZGVyU3R5bGUuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CituYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNWR1JlbmRlclN0eWxlICpTVkdSZW5kZXJTdHlsZTo6c19kZWZhdWx0U3R5bGUg
PSAwOwogCkBAIC0xMTAsNiArMTEwLDggQEAgdm9pZCBTVkdSZW5kZXJTdHlsZTo6aW5oZXJpdEZy
b20oY29uc3QgUwogICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MgPSBzdmdJbmhlcml0UGFyZW50LT5z
dmdfaW5oZXJpdGVkX2ZsYWdzOwogfQogCit9CisKIC8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAv
LyBTVkdfU1VQUE9SVAogCkluZGV4OiBrc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBrc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTYyNzEpCisrKyBr
c3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDEzICsxMDYs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSU19ERUZJTkVfQVRUUklCVVRFX0RB
VEFSRUZfV0lUSF9JTklUSUFMKGZsb2F0LCBzdG9wcywgb3BhY2l0eSwgU3RvcE9wYWNpdHksIHN0
b3BPcGFjaXR5LCAxLjApCiAgICAgICAgIFJTX0RFRklORV9BVFRSSUJVVEVfREFUQVJFRl9XSVRI
X0lOSVRJQUwoQ29sb3IsIHN0b3BzLCBjb2xvciwgU3RvcENvbG9yLCBzdG9wQ29sb3IsIENvbG9y
KDAsIDAsIDApKSAgICAKICAgICAgICAgCi0gICAgICAgIFJTX0RFRklORV9BVFRSSUJVVEVfREFU
QVJFRl9XSVRIX0lOSVRJQUwoRGVwcmVjYXRlZFN0cmluZywgY2xpcCwgY2xpcFBhdGgsIENsaXBQ
YXRoLCBjbGlwUGF0aCwgRGVwcmVjYXRlZFN0cmluZygpKQotICAgICAgICBSU19ERUZJTkVfQVRU
UklCVVRFX0RBVEFSRUZfV0lUSF9JTklUSUFMKERlcHJlY2F0ZWRTdHJpbmcsIG1hc2ssIG1hc2tF
bGVtZW50LCBNYXNrRWxlbWVudCwgbWFza0VsZW1lbnQsIERlcHJlY2F0ZWRTdHJpbmcoKSkKLSAg
ICAgICAgUlNfREVGSU5FX0FUVFJJQlVURV9EQVRBUkVGX1dJVEhfSU5JVElBTChEZXByZWNhdGVk
U3RyaW5nLCBtYXJrZXJzLCBzdGFydE1hcmtlciwgU3RhcnRNYXJrZXIsIHN0YXJ0TWFya2VyLCBE
ZXByZWNhdGVkU3RyaW5nKCkpCi0gICAgICAgIFJTX0RFRklORV9BVFRSSUJVVEVfREFUQVJFRl9X
SVRIX0lOSVRJQUwoRGVwcmVjYXRlZFN0cmluZywgbWFya2VycywgbWlkTWFya2VyLCBNaWRNYXJr
ZXIsIG1pZE1hcmtlciwgRGVwcmVjYXRlZFN0cmluZygpKQotICAgICAgICBSU19ERUZJTkVfQVRU
UklCVVRFX0RBVEFSRUZfV0lUSF9JTklUSUFMKERlcHJlY2F0ZWRTdHJpbmcsIG1hcmtlcnMsIGVu
ZE1hcmtlciwgRW5kTWFya2VyLCBlbmRNYXJrZXIsIERlcHJlY2F0ZWRTdHJpbmcoKSkKKyAgICAg
ICAgUlNfREVGSU5FX0FUVFJJQlVURV9EQVRBUkVGX1dJVEhfSU5JVElBTChTdHJpbmcsIGNsaXAs
IGNsaXBQYXRoLCBDbGlwUGF0aCwgY2xpcFBhdGgsIFN0cmluZygpKQorICAgICAgICBSU19ERUZJ
TkVfQVRUUklCVVRFX0RBVEFSRUZfV0lUSF9JTklUSUFMKFN0cmluZywgbWFzaywgbWFza0VsZW1l
bnQsIE1hc2tFbGVtZW50LCBtYXNrRWxlbWVudCwgU3RyaW5nKCkpCisgICAgICAgIFJTX0RFRklO
RV9BVFRSSUJVVEVfREFUQVJFRl9XSVRIX0lOSVRJQUwoU3RyaW5nLCBtYXJrZXJzLCBzdGFydE1h
cmtlciwgU3RhcnRNYXJrZXIsIHN0YXJ0TWFya2VyLCBTdHJpbmcoKSkKKyAgICAgICAgUlNfREVG
SU5FX0FUVFJJQlVURV9EQVRBUkVGX1dJVEhfSU5JVElBTChTdHJpbmcsIG1hcmtlcnMsIG1pZE1h
cmtlciwgTWlkTWFya2VyLCBtaWRNYXJrZXIsIFN0cmluZygpKQorICAgICAgICBSU19ERUZJTkVf
QVRUUklCVVRFX0RBVEFSRUZfV0lUSF9JTklUSUFMKFN0cmluZywgbWFya2VycywgZW5kTWFya2Vy
LCBFbmRNYXJrZXIsIGVuZE1hcmtlciwgU3RyaW5nKCkpCiAKLSAgICAgICAgUlNfREVGSU5FX0FU
VFJJQlVURV9EQVRBUkVGX1dJVEhfSU5JVElBTChEZXByZWNhdGVkU3RyaW5nLCBtaXNjLCBmaWx0
ZXIsIEZpbHRlciwgZmlsdGVyLCBEZXByZWNhdGVkU3RyaW5nKCkpCisgICAgICAgIFJTX0RFRklO
RV9BVFRSSUJVVEVfREFUQVJFRl9XSVRIX0lOSVRJQUwoU3RyaW5nLCBtaXNjLCBmaWx0ZXIsIEZp
bHRlciwgZmlsdGVyLCBTdHJpbmcoKSkKICAgICAgICAgUlNfREVGSU5FX0FUVFJJQlVURV9EQVRB
UkVGX1dJVEhfSU5JVElBTChmbG9hdCwgbWlzYywgZmxvb2RPcGFjaXR5LCBGbG9vZE9wYWNpdHks
IGZsb29kT3BhY2l0eSwgMS4wKQogICAgICAgICBSU19ERUZJTkVfQVRUUklCVVRFX0RBVEFSRUZf
V0lUSF9JTklUSUFMKENvbG9yLCBtaXNjLCBmbG9vZENvbG9yLCBGbG9vZENvbG9yLCBmbG9vZENv
bG9yLCBDb2xvcigwLCAwLCAwKSkgICAgCiAKSW5kZXg6IGtzdmcyL2Nzcy9TVkdSZW5kZXJTdHls
ZURlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGVEZWZzLmgJKHJl
dmlzaW9uIDE2MjcxKQorKysga3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlRGVmcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMSArMjYsMTAgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVT
QS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdSZW5kZXJTdHlsZURlZnNfSAotI2RlZmluZSBLU1ZH
X1NWR1JlbmRlclN0eWxlRGVmc19ICisjaWZuZGVmIFNWR1JlbmRlclN0eWxlRGVmc19ICisjZGVm
aW5lIFNWR1JlbmRlclN0eWxlRGVmc19ICiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUg
IkRlcHJlY2F0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAKIC8vIEhlbHBlciBtYWNy
b3MgZm9yICdTVkdSZW5kZXJTdHlsZScKQEAgLTE3NSw3ICsxNzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgICAgIH0K
IAotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIGNsaXBQYXRoOworICAgICAgICBTdHJpbmcgY2xp
cFBhdGg7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTdHlsZUNsaXBEYXRhICZvcGVyYXRvcj0o
Y29uc3QgU3R5bGVDbGlwRGF0YSAmKTsKQEAgLTE4OSw3ICsxODgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU1hc2tEYXRhICZvdGhl
cikgY29uc3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZU1hc2tEYXRhICZv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAotICAgICAgICBEZXBy
ZWNhdGVkU3RyaW5nIG1hc2tFbGVtZW50OworICAgICAgICBTdHJpbmcgbWFza0VsZW1lbnQ7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBTdHlsZU1hc2tEYXRhICZvcGVyYXRvcj0oY29uc3QgU3R5
bGVNYXNrRGF0YSAmKTsKQEAgLTIwNiw5ICsyMDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgICAgIH0KIAotICAgICAg
ICBEZXByZWNhdGVkU3RyaW5nIHN0YXJ0TWFya2VyOwotICAgICAgICBEZXByZWNhdGVkU3RyaW5n
IG1pZE1hcmtlcjsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBlbmRNYXJrZXI7CisgICAgICAg
IFN0cmluZyBzdGFydE1hcmtlcjsKKyAgICAgICAgU3RyaW5nIG1pZE1hcmtlcjsKKyAgICAgICAg
U3RyaW5nIGVuZE1hcmtlcjsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFN0eWxlTWFya2VyRGF0
YSAmb3BlcmF0b3I9KGNvbnN0IFN0eWxlTWFya2VyRGF0YSAmKTsKQEAgLTIyNiw3ICsyMjUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7CiAgICAgICAgIH0KIAotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIGZpbHRlcjsKKyAgICAg
ICAgU3RyaW5nIGZpbHRlcjsKICAgICAgICAgQ29sb3IgZmxvb2RDb2xvcjsKICAgICAgICAgZmxv
YXQgZmxvb2RPcGFjaXR5OwogCkluZGV4OiBrc3ZnMi9lY21hL0dsb2JhbE9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga3N2ZzIvZWNtYS9HbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNjI3MSkK
KysrIGtzdmcyL2VjbWEvR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCAr
NTgsNiBAQCBHbG9iYWxPYmplY3Q6On5HbG9iYWxPYmplY3QoKQogCiBLSlM6OkpTVmFsdWUgKkds
b2JhbE9iamVjdDo6Z2V0KEtKUzo6RXhlY1N0YXRlICpleGVjLCBjb25zdCBLSlM6OklkZW50aWZp
ZXIgJnApIGNvbnN0CiB7Ci0gICAga2REZWJ1ZygyNjAwNCkgPDwgIldlYkNvcmU6Okdsb2JhbE9i
amVjdCAoIiA8PCB0aGlzIDw8ICIpOjpnZXQgIiA8PCBwLmRlcHJlY2F0ZWRTdHJpbmcoKSA8PCBl
bmRsOwotCiAgICAgS0pTOjpKU1ZhbHVlICpyZXQgPSBHbG9iYWxPYmplY3Q6OmdldChleGVjLCBw
KTsKICAgICBpZihyZXQtPnR5cGUoKSAhPSBLSlM6OlVuZGVmaW5lZFR5cGUpCiAgICAgICAgIHJl
dHVybiByZXQ7CkBAIC05Niw3ICs5NCw2IEBAIEtKUzo6SlNWYWx1ZSAqR2xvYmFsT2JqZWN0Ojpn
ZXQoS0pTOjpFeGUKIAogICAgIC8vIFRoaXMgaXNuJ3QgbmVjZXNzYXJpbHkgYSBidWcuIFNvbWUg
Y29kZSB1c2VzIGlmKCF3aW5kb3cuYmxhaCkgd2luZG93LmJsYWg9MQogICAgIC8vIEJ1dCBpdCBj
YW4gYWxzbyBtZWFuIHNvbWV0aGluZyBpc24ndCBsb2FkZWQgb3IgaW1wbGVtZW50ZWQuLi4KLSAg
ICBrZERlYnVnKDI2MDA0KSA8PCAiR2xvYmFsT2JqZWN0OjpnZXQgcHJvcGVydHkgbm90IGZvdW5k
OiAiIDw8IHAuZGVwcmVjYXRlZFN0cmluZygpIDw8IGVuZGw7CiAgICAgcmV0dXJuIEtKUzo6anNV
bmRlZmluZWQoKTsKIH0KIApJbmRleDoga3N2ZzIvbWlzYy9LU1ZHVGltZVNjaGVkdWxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3N2ZzIvbWlzYy9LU1ZHVGltZVNjaGVkdWxlci5jcHAJKHJldmlzaW9u
IDE2MjcxKQorKysga3N2ZzIvbWlzYy9LU1ZHVGltZVNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFNWR1RpbWVyOjpub3RpZnlBbGwoKQogICAgICAg
ICAgICAgICAgIGlmKCFhbmltQ29sb3IpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBuYW1lID0gYW5pbUNvbG9yLT5hdHRy
aWJ1dGVOYW1lKCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBhbmltQ29sb3ItPmF0
dHJpYnV0ZU5hbWUoKTsKICAgICAgICAgICAgICAgICBDb2xvciBjb2xvciA9IGFuaW1Db2xvci0+
Y29sb3IoKTsKIAogICAgICAgICAgICAgICAgIGlmKCF0YXJnZXRDb2xvci5jb250YWlucyhuYW1l
KSkKSW5kZXg6IGtzdmcyL3N2Zy9TVkdEZXNjRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2
ZzIvc3ZnL1NWR0Rlc2NFbGVtZW50LmNwcAkocmV2aXNpb24gMTYyNzEpCisrKyBrc3ZnMi9zdmcv
U1ZHRGVzY0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsyNCwxMSBAQAogI2lm
ZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHRGVzY0VsZW1lbnQuaCIKIAotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0Rlc2NFbGVtZW50OjpT
VkdEZXNjRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAqZG9j
KSA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jKSwgU1ZHTGFuZ1NwYWNlKCkKK1NWR0Rl
c2NFbGVtZW50OjpTVkdEZXNjRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCAqZG9jKQorICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2MpCisgICAg
LCBTVkdMYW5nU3BhY2UoKQogewogfQogCkBAIC0zNCw5ICszNiwxMSBAQCBTVkdEZXNjRWxlbWVu
dDo6flNWR0Rlc2NFbGVtZW50KCkKIHsKIH0KIAotU3RyaW5nSW1wbCAqU1ZHRGVzY0VsZW1lbnQ6
OmRlc2NyaXB0aW9uKCkgY29uc3QKK1N0cmluZyBTVkdEZXNjRWxlbWVudDo6ZGVzY3JpcHRpb24o
KSBjb25zdAogewotICAgIHJldHVybiBuZXcgU3RyaW5nSW1wbChTdHJpbmcodGV4dENvbnRlbnQo
KSkuZGVwcmVjYXRlZFN0cmluZygpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpKTsKKyAgICByZXR1cm4g
dGV4dENvbnRlbnQoKS5kZXByZWNhdGVkU3RyaW5nKCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7Cit9
CisKIH0KIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDoga3N2ZzIvc3ZnL1NWR0Rlc2NFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0Rlc2NFbGVtZW50LmgJKHJldmlzaW9uIDE2
MjcxKQorKysga3N2ZzIvc3ZnL1NWR0Rlc2NFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU1ZHRGVzY0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0Rlc2NF
bGVtZW50KCk7CiAKLSAgICAgICAgU3RyaW5nSW1wbCAqZGVzY3JpcHRpb24oKSBjb25zdDsKKyAg
ICAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjI3MykK
KysrIGtzdmcyL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDggKzIyLDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lmZGVmIFNWR19TVVBQT1JUCi0j
aW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZ0xpc3QuaCIKLQogI2luY2x1ZGUgIkF0dHIuaCIKIAog
I2luY2x1ZGUgPGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaD4KQEAgLTM0LDEzICszMiwxMyBAQAog
I2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHRkVCbGVuZEVsZW1lbnQu
aCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNW
R0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCAqZG9jKQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKICAgICAsIG1fbW9kZSgwKQorICAgICwgbV9maWx0ZXJF
ZmZlY3QoMCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IDA7CiB9CiAKIFNWR0ZFQmxlbmRFbGVt
ZW50Ojp+U1ZHRkVCbGVuZEVsZW1lbnQoKQpAQCAtODMsMTIgKzgxLDE0IEBAIEtDYW52YXNGRUJs
ZW5kICpTVkdGRUJsZW5kRWxlbWVudDo6ZmlsdGUKICAgICBpZiAoIW1fZmlsdGVyRWZmZWN0KQog
ICAgICAgICByZXR1cm4gMDsKICAgICBtX2ZpbHRlckVmZmVjdC0+c2V0QmxlbmRNb2RlKChLQ0Js
ZW5kTW9kZVR5cGUpKG1vZGUoKS0xKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKGluKCku
ZGVwcmVjYXRlZFN0cmluZygpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4yKFN0cmluZyhp
bjIoKSkuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4o
KSk7CisgICAgbV9maWx0ZXJFZmZlY3QtPnNldEluMihpbjIoKSk7CiAgICAgc2V0U3RhbmRhcmRB
dHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0KTsKICAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3Q7CiB9
CiAKK30KKwogLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKSW5kZXg6
IGtzdmcyL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2
ZzIvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gMTYyNzMpCisrKyBr
c3ZnMi9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw4ICs0NCw5IEBAIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpTVkdGRUNvbG9yTWF0cmkKICAg
ICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCiAg
ICAgLCBtX3R5cGUoMCkKICAgICAsIG1fdmFsdWVzKG5ldyBTVkdOdW1iZXJMaXN0KDApKQorICAg
ICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IDA7CisKIH0KIAog
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6On5TVkdGRUNvbG9yTWF0cml4RWxlbWVudCgpCkBAIC04
Niw3ICs4Nyw3IEBAIEtDYW52YXNGRUNvbG9yTWF0cml4ICpTVkdGRUNvbG9yTWF0cml4RWwKICAg
ICBpZiAoIW1fZmlsdGVyRWZmZWN0KQogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCi0gICAg
bV9maWx0ZXJFZmZlY3QtPnNldEluKGluKCkuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICBtX2Zp
bHRlckVmZmVjdC0+c2V0SW4oaW4oKSk7CiAgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmls
dGVyRWZmZWN0KTsKICAgICBEZXByZWNhdGVkVmFsdWVMaXN0PGZsb2F0PiBfdmFsdWVzOwogICAg
IFNWR051bWJlckxpc3QgKm51bWJlcnMgPSB2YWx1ZXMoKTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTYyNzMpCisrKyBrc3Zn
Mi9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiwxMyArMjIsMTEgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lmZGVmIFNWR19TVVBQ
T1JUCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZ0xpc3QuaCIKLQogI2luY2x1ZGUgIkF0dHIu
aCIKIAotI2luY2x1ZGUgPGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5oPgotI2luY2x1ZGUgPGtj
YW52YXMvS0NhbnZhc0ZpbHRlcnMuaD4KLSNpbmNsdWRlIDxrY2FudmFzL2RldmljZS9LUmVuZGVy
aW5nRGV2aWNlLmg+CisjaW5jbHVkZSAiS0NhbnZhc1Jlc291cmNlcy5oIgorI2luY2x1ZGUgIktD
YW52YXNGaWx0ZXJzLmgiCisjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgogCiAjaW5jbHVk
ZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKQEAgLTM5LDEyICszNywxMiBA
QAogI2luY2x1ZGUgIlNWR0ZFRnVuY0JFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVGdW5jQUVs
ZW1lbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CituYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAqZG9jKQogICAg
IDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKKyAg
ICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7Ci0gICAgbV9maWx0ZXJFZmZlY3QgPSAwOwogfQogCiBT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6flNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50KCkKQEAgLTcwLDcgKzY4LDcgQEAgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXIgKlNWR0ZF
Q29tcG9uZQogICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCiAgICAgICAgIHJldHVybiAwOwogICAg
IAotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbigpLmRlcHJlY2F0ZWRTdHJpbmcoKSk7Cisg
ICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKGluKCkpOwogICAgIHNldFN0YW5kYXJkQXR0cmlidXRl
cyhtX2ZpbHRlckVmZmVjdCk7CiAgICAgCiAgICAgZm9yIChOb2RlICpuID0gZmlyc3RDaGlsZCgp
OyBuICE9IDA7IG4gPSBuLT5uZXh0U2libGluZygpKSB7CkBAIC04Nyw2ICs4NSw4IEBAIEtDYW52
YXNGRUNvbXBvbmVudFRyYW5zZmVyICpTVkdGRUNvbXBvbmUKICAgICByZXR1cm4gbV9maWx0ZXJF
ZmZlY3Q7CiB9CiAKK30KKwogLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JU
CiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtzdmcyL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjI3MykK
KysrIGtzdmcyL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiwxNCArMjIsMTIgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lmZGVmIFNWR19TVVBQ
T1JUCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZ0xpc3QuaCIKLQogI2luY2x1ZGUgIkF0dHIu
aCIKIAotI2luY2x1ZGUgPGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5oPgotI2luY2x1ZGUgPGtj
YW52YXMvS0NhbnZhc0ZpbHRlcnMuaD4KLSNpbmNsdWRlIDxrY2FudmFzL2RldmljZS9LUmVuZGVy
aW5nRGV2aWNlLmg+Ci0jaW5jbHVkZSA8a2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2Vy
dmVyR3JhZGllbnQuaD4KKyNpbmNsdWRlICJLQ2FudmFzUmVzb3VyY2VzLmgiCisjaW5jbHVkZSAi
S0NhbnZhc0ZpbHRlcnMuaCIKKyNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlLmgiCisjaW5jbHVk
ZSAiS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuaCIKIAogI2luY2x1ZGUgImtzdmcuaCIK
ICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNDYsOCArNDQsOCBAQCBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQ6OlNWR0ZFQ29tcG9zaXRlRWxlCiAgICAgLCBtX2syKDAuMCkKICAgICAsIG1fazMoMC4w
KQogICAgICwgbV9rNCgwLjApCisgICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewotICAgIG1fZmls
dGVyRWZmZWN0ID0gMDsKIH0KIAogU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojp+U1ZHRkVDb21wb3Np
dGVFbGVtZW50KCkKQEAgLTEwNCw4ICsxMDIsOCBAQCBLQ2FudmFzRkVDb21wb3NpdGUgKlNWR0ZF
Q29tcG9zaXRlRWxlbWVuCiAgICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgbV9maWx0ZXJFZmZlY3QtPnNldE9wZXJhdGlvbigoS0NDb21wb3NpdGVPcGVyYXRp
b25UeXBlKShfb3BlcmF0b3IoKSAtIDEpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4o
KS5kZXByZWNhdGVkU3RyaW5nKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbjIoU3RyaW5n
KGluMigpKS5kZXByZWNhdGVkU3RyaW5nKCkpOworICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihp
bigpKTsKKyAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4yKGluMigpKTsKICAgICBzZXRTdGFuZGFy
ZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QpOwogICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRLMShr
MSgpKTsKICAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SzIoazIoKSk7CkluZGV4OiBrc3ZnMi9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMTYyNzMpCisrKyBrc3Zn
Mi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDMsOCArNDMsOSBAQCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFRGlmZnVzCiAg
ICAgLCBtX2xpZ2h0aW5nQ29sb3IobmV3IFNWR0NvbG9yKCkpCiAgICAgLCBtX2tlcm5lbFVuaXRM
ZW5ndGhYKDAuMCkKICAgICAsIG1fa2VybmVsVW5pdExlbmd0aFkoMC4wKQorICAgICwgbV9maWx0
ZXJFZmZlY3QoMCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IDA7CisKIH0KIAogU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50Ojp+U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KCkKQEAgLTg1
LDcgKzg2LDcgQEAgS0NhbnZhc0ZFRGlmZnVzZUxpZ2h0aW5nICpTVkdGRURpZmZ1c2VMaQogewog
ICAgIGlmICghbV9maWx0ZXJFZmZlY3QpIAogICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IHN0YXRp
Y19jYXN0PEtDYW52YXNGRURpZmZ1c2VMaWdodGluZyAqPihyZW5kZXJpbmdEZXZpY2UoKS0+Y3Jl
YXRlRmlsdGVyRWZmZWN0KEZFX0RJRkZVU0VfTElHSFRJTkcpKTsKLSAgICBtX2ZpbHRlckVmZmVj
dC0+c2V0SW4oaW4oKS5kZXByZWNhdGVkU3RyaW5nKCkpOworICAgIG1fZmlsdGVyRWZmZWN0LT5z
ZXRJbihpbigpKTsKICAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QpOwog
ICAgIG1fZmlsdGVyRWZmZWN0LT5zZXREaWZmdXNlQ29uc3RhbnQoKGRpZmZ1c2VDb25zdGFudCgp
KSk7CiAgICAgbV9maWx0ZXJFZmZlY3QtPnNldFN1cmZhY2VTY2FsZSgoc3VyZmFjZVNjYWxlKCkp
KTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNjI3MykKKysrIGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw5IEBAIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudDo6U1ZHRkVEaXNwbGEKICAgICAsIG1feENoYW5uZWxTZWxlY3RvcigwKQogICAgICwgbV95
Q2hhbm5lbFNlbGVjdG9yKDApCiAgICAgLCBtX3NjYWxlKDAuMCkKKyAgICAsIG1fZmlsdGVyRWZm
ZWN0KDApCiB7Ci0gICAgbV9maWx0ZXJFZmZlY3QgPSAwOworCiB9CiAKIFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudDo6flNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCgpCkBAIC05Myw4ICs5
NCw4IEBAIEtDYW52YXNGRURpc3BsYWNlbWVudE1hcCogU1ZHRkVEaXNwbGFjZW0KICAgICAgICAg
cmV0dXJuIDA7CiAgICAgbV9maWx0ZXJFZmZlY3QtPnNldFhDaGFubmVsU2VsZWN0b3IoKEtDQ2hh
bm5lbFNlbGVjdG9yVHlwZSkoeENoYW5uZWxTZWxlY3RvcigpKSk7CiAgICAgbV9maWx0ZXJFZmZl
Y3QtPnNldFlDaGFubmVsU2VsZWN0b3IoKEtDQ2hhbm5lbFNlbGVjdG9yVHlwZSkoeUNoYW5uZWxT
ZWxlY3RvcigpKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKGluKCkuZGVwcmVjYXRlZFN0
cmluZygpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4yKFN0cmluZyhpbjIoKSkuZGVwcmVj
YXRlZFN0cmluZygpKTsKKyAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4oKSk7CisgICAgbV9m
aWx0ZXJFZmZlY3QtPnNldEluMihpbjIoKSk7CiAgICAgbV9maWx0ZXJFZmZlY3QtPnNldFNjYWxl
KHNjYWxlKCkpOwogICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdCk7CiAg
ICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0OwpJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFRmxvb2RFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNjI3MykKKysrIGtzdmcyL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDIwICsyNSwxOSBAQAogI2luY2x1ZGUgIlNWR0ZFRmxvb2RFbGVtZW50
LmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZ0xpc3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUg
PGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaD4KLSNpbmNsdWRlIDxrY2FudmFzL2RldmljZS9LUmVu
ZGVyaW5nRGV2aWNlLmg+CisjaW5jbHVkZSAiS0NhbnZhc0ZpbHRlcnMuaCIKKyNpbmNsdWRlICJL
UmVuZGVyaW5nRGV2aWNlLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1TVkdGRUZsb29kRWxlbWVudDo6U1ZHRkVGbG9vZEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykgOiAKLVNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCitTVkdGRUZsb29kRWxlbWVudDo6
U1ZHRkVGbG9vZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQg
KmRvYykKKyAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1l
LCBkb2MpCisgICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewotICAgIG1fZmlsdGVyRWZmZWN0ID0g
MDsKIH0KIAogU1ZHRkVGbG9vZEVsZW1lbnQ6On5TVkdGRUZsb29kRWxlbWVudCgpCkBAIC02Myw3
ICs2Miw3IEBAIEtDYW52YXNGRUZsb29kICpTVkdGRUZsb29kRWxlbWVudDo6ZmlsdGUKICAgICAg
ICAgbV9maWx0ZXJFZmZlY3QgPSBzdGF0aWNfY2FzdDxLQ2FudmFzRkVGbG9vZCAqPihyZW5kZXJp
bmdEZXZpY2UoKS0+Y3JlYXRlRmlsdGVyRWZmZWN0KEZFX0ZMT09EKSk7CiAgICAgaWYgKCFtX2Zp
bHRlckVmZmVjdCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldElu
KGluKCkuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4o
KSk7CiAgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0KTsKICAgICBSZW5k
ZXJTdHlsZSAqZmlsdGVyU3R5bGUgPSBjb25zdF9jYXN0PFNWR0ZFRmxvb2RFbGVtZW50ICo+KHRo
aXMpLT5zdHlsZUZvclJlbmRlcmVyKHBhcmVudE5vZGUoKS0+cmVuZGVyZXIoKSk7CiAgICAgY29u
c3QgU1ZHUmVuZGVyU3R5bGUgKnN2Z1N0eWxlID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCk7CkBA
IC03NCw2ICs3Myw4IEBAIEtDYW52YXNGRUZsb29kICpTVkdGRUZsb29kRWxlbWVudDo6ZmlsdGUK
ICAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3Q7CiB9CiAKK30KKwogLy8gdmltOnRzPTQ6bm9ldAog
I2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNjI3MykKKysrIGtzdmcyL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw5IEBAIFNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudDo6U1ZHRkVHYXVzc2lhbkIKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCiAgICAgLCBtX3N0ZERldmlhdGlvblgoMC4w
KQogICAgICwgbV9zdGREZXZpYXRpb25ZKDAuMCkKKyAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7
Ci0gICAgbV9maWx0ZXJFZmZlY3QgPSAwOworCiB9CiAKIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dDo6flNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCgpCkBAIC04Miw3ICs4Myw3IEBAIEtDYW52YXNG
RUdhdXNzaWFuQmx1ciAqU1ZHRkVHYXVzc2lhbkJsdXIKICAgICAgICAgbV9maWx0ZXJFZmZlY3Qg
PSBzdGF0aWNfY2FzdDxLQ2FudmFzRkVHYXVzc2lhbkJsdXIgKj4ocmVuZGVyaW5nRGV2aWNlKCkt
PmNyZWF0ZUZpbHRlckVmZmVjdChGRV9HQVVTU0lBTl9CTFVSKSk7CiAgICAgaWYgKCFtX2ZpbHRl
ckVmZmVjdCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKGlu
KCkuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4oKSk7
CiAgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0KTsKICAgICBtX2ZpbHRl
ckVmZmVjdC0+c2V0U3RkRGV2aWF0aW9uWChzdGREZXZpYXRpb25YKCkpOwogICAgIG1fZmlsdGVy
RWZmZWN0LT5zZXRTdGREZXZpYXRpb25ZKHN0ZERldmlhdGlvblkoKSk7CkluZGV4OiBrc3ZnMi9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdGRUxp
Z2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MjcxKQorKysga3N2ZzIvc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTMgKzIxLDExIEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpZmRlZiBTVkdfU1VQUE9SVAotI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJp
bmdMaXN0LmgiCi0KICNpbmNsdWRlICJBdHRyLmgiCiAKLSNpbmNsdWRlIDxrY2FudmFzL0tDYW52
YXNSZXNvdXJjZXMuaD4KLSNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmg+Ci0jaW5j
bHVkZSA8a2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0RldmljZS5oPgorI2luY2x1ZGUgIktDYW52
YXNSZXNvdXJjZXMuaCIKKyNpbmNsdWRlICJLQ2FudmFzRmlsdGVycy5oIgorI2luY2x1ZGUgIktS
ZW5kZXJpbmdEZXZpY2UuaCIKIAogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZH
SGVscGVyLmgiCkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtzdmcyL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MjczKQor
Kysga3N2ZzIvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
MTAgKzU2LDEwIEBAIEtDYW52YXNGRU1lcmdlICpTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGUKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0
KTsKIAotICAgIERlcHJlY2F0ZWRTdHJpbmdMaXN0IG1lcmdlSW5wdXRzOwotICAgIGZvciAoTm9k
ZSAqbiA9IGZpcnN0Q2hpbGQoKTsgbiAhPSAwOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgeworICAg
IFZlY3RvcjxTdHJpbmc+IG1lcmdlSW5wdXRzOworICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hp
bGQoKTsgbiAhPSAwOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAobi0+aGFz
VGFnTmFtZShTVkdOYW1lczo6ZmVNZXJnZU5vZGVUYWcpKQotICAgICAgICAgICAgbWVyZ2VJbnB1
dHMuYXBwZW5kKHN0YXRpY19jYXN0PFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCAqPihuKS0+aW4oKS5k
ZXByZWNhdGVkU3RyaW5nKCkpOworICAgICAgICAgICAgbWVyZ2VJbnB1dHMuYXBwZW5kKHN0YXRp
Y19jYXN0PFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCAqPihuKS0+aW4oKSk7CiAgICAgfQogCiAgICAg
bV9maWx0ZXJFZmZlY3QtPnNldE1lcmdlSW5wdXRzKG1lcmdlSW5wdXRzKTsKSW5kZXg6IGtzdmcy
L3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjI3MykKKysrIGtzdmcyL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw5IEBAIFNWR0ZFT2Zm
c2V0RWxlbWVudDo6U1ZHRkVPZmZzZXRFbGVtZW50KGMKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCiAgICAgLCBtX2R4KDAuMCkKICAgICAs
IG1fZHkoMC4wKQorICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKLSAgICBtX2ZpbHRlckVmZmVj
dCA9IDA7CisKIH0KIAogU1ZHRkVPZmZzZXRFbGVtZW50Ojp+U1ZHRkVPZmZzZXRFbGVtZW50KCkK
QEAgLTczLDcgKzc0LDcgQEAgS0NhbnZhc0ZFT2Zmc2V0ICpTVkdGRU9mZnNldEVsZW1lbnQ6OmZp
bAogICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PEtDYW52YXNGRU9mZnNldCAq
PihyZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlRmlsdGVyRWZmZWN0KEZFX09GRlNFVCkpOwogICAg
IGlmICghbV9maWx0ZXJFZmZlY3QpCiAgICAgICAgIHJldHVybiAwOwotICAgIG1fZmlsdGVyRWZm
ZWN0LT5zZXRJbihpbigpLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CisgICAgbV9maWx0ZXJFZmZlY3Qt
PnNldEluKGluKCkpOwogICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhtX2ZpbHRlckVmZmVjdCk7
CiAgICAgbV9maWx0ZXJFZmZlY3QtPnNldER4KGR4KCkpOwogICAgIG1fZmlsdGVyRWZmZWN0LT5z
ZXREeShkeSgpKTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE2MjczKQorKysga3N2ZzIvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw5IEBAIFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3UKICAgICAsIG1fbGlnaHRpbmdDb2xvcihuZXcg
U1ZHQ29sb3IoKSkKICAgICAsIG1fa2VybmVsVW5pdExlbmd0aFgoMC4wKQogICAgICwgbV9rZXJu
ZWxVbml0TGVuZ3RoWSgwLjApCisgICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewotICAgIG1fZmls
dGVyRWZmZWN0ID0gMDsKKwogfQogCiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojp+U1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCgpCkBAIC05MSw3ICs5Miw3IEBAIEtDYW52YXNGRVNw
ZWN1bGFyTGlnaHRpbmcgKlNWR0ZFU3BlY3VsYXIKIHsKICAgICBpZiAoIW1fZmlsdGVyRWZmZWN0
KSAKICAgICAgICAgbV9maWx0ZXJFZmZlY3QgPSBzdGF0aWNfY2FzdDxLQ2FudmFzRkVTcGVjdWxh
ckxpZ2h0aW5nICo+KHJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVGaWx0ZXJFZmZlY3QoRkVfU1BF
Q1VMQVJfTElHSFRJTkcpKTsKLSAgICBtX2ZpbHRlckVmZmVjdC0+c2V0SW4oaW4oKS5kZXByZWNh
dGVkU3RyaW5nKCkpOworICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbihpbigpKTsKICAgICBzZXRT
dGFuZGFyZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QpOwogICAgIG1fZmlsdGVyRWZmZWN0LT5z
ZXRTcGVjdWxhckNvbnN0YW50KChzcGVjdWxhckNvbnN0YW50KCkpKTsKICAgICBtX2ZpbHRlckVm
ZmVjdC0+c2V0U3BlY3VsYXJFeHBvbmVudCgoc3BlY3VsYXJFeHBvbmVudCgpKSk7CkluZGV4OiBr
c3ZnMi9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NW
R0ZFVGlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjI3MykKKysrIGtzdmcyL3N2Zy9TVkdGRVRp
bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsNiBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaWZkZWYgU1ZHX1NVUFBPUlQKLSNpbmNsdWRlICJEZXByZWNhdGVkU3Ry
aW5nTGlzdC5oIgotCiAjaW5jbHVkZSAiQXR0ci5oIgogCiAjaW5jbHVkZSA8a2NhbnZhcy9LQ2Fu
dmFzRmlsdGVycy5oPgpAQCAtMzMsMTIgKzMxLDEyIEBACiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJTVkdGRVRpbGVFbGVtZW50LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdGRVRpbGVFbGVtZW50OjpTVkdGRVRp
bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50ICpkb2MpIDog
Ci1TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQorU1ZH
RkVUaWxlRWxlbWVudDo6U1ZHRkVUaWxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCAqZG9jKQorICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKHRhZ05hbWUsIGRvYykKKyAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7Ci0gICAgbV9m
aWx0ZXJFZmZlY3QgPSAwOwogfQogCiBTVkdGRVRpbGVFbGVtZW50Ojp+U1ZHRkVUaWxlRWxlbWVu
dCgpCkBAIC02MywxMSArNjEsMTMgQEAgS0NhbnZhc0ZFVGlsZSAqU1ZHRkVUaWxlRWxlbWVudDo6
ZmlsdGVyRQogICAgICAgICBtX2ZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PEtDYW52YXNGRVRp
bGUgKj4ocmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZUZpbHRlckVmZmVjdChGRV9USUxFKSk7CiAg
ICAgaWYgKCFtX2ZpbHRlckVmZmVjdCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV9maWx0ZXJF
ZmZlY3QtPnNldEluKGluKCkuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICBtX2ZpbHRlckVmZmVj
dC0+c2V0SW4oaW4oKSk7CiAgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKG1fZmlsdGVyRWZmZWN0
KTsKICAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3Q7CiB9CiAKK30KKwogLy8gdmltOnRzPTQ6bm9l
dAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE2MjczKQorKysga3N2ZzIvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw5IEBAIFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQ6OlNWR0ZFVHVyYnVsZW5jZUUKICAgICAsIG1fc2VlZCgwLjApCiAgICAgLCBtX3N0
aXRjaFRpbGVzKDApCiAgICAgLCBtX3R5cGUoMCkKKyAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7
Ci0gICAgbV9maWx0ZXJFZmZlY3QgPSAwOworCiB9CiAKIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6
On5TVkdGRVR1cmJ1bGVuY2VFbGVtZW50KCkKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAxNjI3MykKKysr
IGtzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGUKICAgICBlbHNlCiAgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0U3ViUmVnaW9u
KEZsb2F0UmVjdChfeCwgX3ksIF93aWR0aCwgX2hlaWdodCkpOwogCi0gICAgZmlsdGVyRWZmZWN0
LT5zZXRSZXN1bHQocmVzdWx0KCkuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICBmaWx0ZXJFZmZl
Y3QtPnNldFJlc3VsdChyZXN1bHQoKSk7CiB9CiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IGtz
dmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guY3BwCShyZXZpc2lvbiAxNjI3MykKKysrIGtzdmcyL3N2Zy9TVkdGaXRUb1Zp
ZXdCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTAgQEAgU1ZHRml0VG9WaWV3
Qm94Ojp+U1ZHRml0VG9WaWV3Qm94KCkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJ
VEhfQ09OVEVYVChTVkdGaXRUb1ZpZXdCb3gsIFNWR1JlY3QqLCBSZWN0LCByZWN0LCBWaWV3Qm94
LCB2aWV3Qm94LCBTVkdOYW1lczo6dmlld0JveEF0dHIubG9jYWxOYW1lKCksIG1fdmlld0JveC5n
ZXQoKSkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChTVkdGaXRU
b1ZpZXdCb3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJh
dGlvLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIubG9jYWxOYW1lKCksIG1fcHJl
c2VydmVBc3BlY3RSYXRpby5nZXQoKSkKIAotdm9pZCBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmll
d0JveChTdHJpbmdJbXBsKiBzdHIpCit2b2lkIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94
KGNvbnN0IFN0cmluZyYgc3RyKQogewogICAgIGRvdWJsZSB4ID0gMCwgeSA9IDAsIHcgPSAwLCBo
ID0gMDsKLSAgICBEZXByZWNhdGVkU3RyaW5nIHZpZXdib3ggPSBTdHJpbmcoc3RyKS5kZXByZWNh
dGVkU3RyaW5nKCk7CisgICAgRGVwcmVjYXRlZFN0cmluZyB2aWV3Ym94ID0gc3RyLmRlcHJlY2F0
ZWRTdHJpbmcoKTsKICAgICBjb25zdCBjaGFyICpwID0gdmlld2JveC5sYXRpbjEoKTsKICAgICBj
b25zdCBjaGFyICplbmQgPSBwICsgdmlld2JveC5sZW5ndGgoKTsKICAgICBjb25zdCBjaGFyICpj
ID0gcDsKQEAgLTEwMiw3ICsxMDIsNyBAQCBTVkdNYXRyaXgqIFNWR0ZpdFRvVmlld0JveDo6dmll
d0JveFRvVmllCiBib29sIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OnZpZXdCb3hBdHRyKSB7Ci0gICAgICAgIHBhcnNlVmlld0JveChhdHRyLT52YWx1ZSgpLmltcGwo
KSk7CisgICAgICAgIHBhcnNlVmlld0JveChhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnByZXNlcnZl
QXNwZWN0UmF0aW9BdHRyKSB7CiAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW9CYXNlVmFsdWUo
KS0+cGFyc2VQcmVzZXJ2ZUFzcGVjdFJhdGlvKGF0dHItPnZhbHVlKCkuaW1wbCgpKTsKSW5kZXg6
IGtzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZH
Rml0VG9WaWV3Qm94LmgJKHJldmlzaW9uIDE2MjcxKQorKysga3N2ZzIvc3ZnL1NWR0ZpdFRvVmll
d0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB+U1ZHRml0VG9WaWV3Qm94KCk7CiAKICAgICAgICAgLy8gJ1NW
R0ZpdFRvVmlld0JveCcgZnVuY3Rpb25zCi0gICAgICAgIHZvaWQgcGFyc2VWaWV3Qm94KFN0cmlu
Z0ltcGwgKnN0cik7CisgICAgICAgIHZvaWQgcGFyc2VWaWV3Qm94KGNvbnN0IFN0cmluZyYpOwog
ICAgICAgICBTVkdNYXRyaXggKnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRo
LCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdDsKIAogICAgICAgICBib29sIHBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cik7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTYyNzMpCisrKyBrc3ZnMi9zdmcvU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCB2b2lk
IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAgICAgaWYgKGdyYWRpZW50VHJh
bnNmb3JtKCktPm51bWJlck9mSXRlbXMoKSA+IDApCiAgICAgICAgIG1hdCA9IGdyYWRpZW50VHJh
bnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpLT5tYXRyaXgoKTsKIAotICAgIERlcHJl
Y2F0ZWRTdHJpbmcgcmVmID0gU3RyaW5nKGhyZWYoKSkuZGVwcmVjYXRlZFN0cmluZygpOworICAg
IERlcHJlY2F0ZWRTdHJpbmcgcmVmID0gaHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKICAgICBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXIgKnBzZXJ2ZXIgPSBnZXRQYWludFNlcnZlckJ5SWQoZG9jdW1l
bnQoKSwgcmVmLm1pZCgxKSk7CiAgICAgCiAgICAgaWYgKHBzZXJ2ZXIgJiYgKHBzZXJ2ZXItPnR5
cGUoKSA9PSBQU19SQURJQUxfR1JBRElFTlQgfHwgcHNlcnZlci0+dHlwZSgpID09IFBTX0xJTkVB
Ul9HUkFESUVOVCkpCkluZGV4OiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2Mjcz
KQorKysga3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQxLDcgKzE0MSw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnJlc291cmNlTm90aWZpY2EK
IAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZXNGcm9tUmVmZXJlbmNlUGF0
dGVybihjb25zdCBTVkdQYXR0ZXJuRWxlbWVudCogdGFyZ2V0LCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm1NYXRyaXgpCiB7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyByZWYgPSBTdHJp
bmcoaHJlZigpKS5kZXByZWNhdGVkU3RyaW5nKCk7CisgICAgRGVwcmVjYXRlZFN0cmluZyByZWYg
PSBocmVmKCkuZGVwcmVjYXRlZFN0cmluZygpOwogICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciAq
cmVmU2VydmVyID0gZ2V0UGFpbnRTZXJ2ZXJCeUlkKGRvY3VtZW50KCksIHJlZi5taWQoMSkpOwog
CiAgICAgaWYgKCFyZWZTZXJ2ZXIgfHwgcmVmU2VydmVyLT50eXBlKCkgIT0gUFNfUEFUVEVSTikK
QEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50Ojpub3RpZnlBdHRyaWJ1
dGVDCiAgICAgY29uc3QgTm9kZSAqdGVzdCA9IHRoaXM7CiAgICAgd2hpbGUodGVzdCAmJiAhdGVz
dC0+aGFzQ2hpbGROb2RlcygpKQogICAgIHsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyByZWYg
PSBTdHJpbmcodGFyZ2V0LT5ocmVmKCkpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgRGVw
cmVjYXRlZFN0cmluZyByZWYgPSB0YXJnZXQtPmhyZWYoKS5kZXByZWNhdGVkU3RyaW5nKCk7CiAg
ICAgICAgIHRlc3QgPSBvd25lckRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKFN0cmluZyhyZWYu
bWlkKDEpKS5pbXBsKCkpOwogICAgICAgICBpZiAodGVzdCAmJiB0ZXN0LT5oYXNUYWdOYW1lKFNW
R05hbWVzOjpwYXR0ZXJuVGFnKSkKICAgICAgICAgICAgIHRhcmdldCA9IHN0YXRpY19jYXN0PGNv
bnN0IFNWR1BhdHRlcm5FbGVtZW50KiA+KHRlc3QpOwpJbmRleDoga3N2ZzIvc3ZnL1NWR1ByZXNl
cnZlQXNwZWN0UmF0aW8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmNwcAkocmV2aXNpb24gMTYyNzEpCisrKyBrc3ZnMi9zdmcvU1ZHUHJlc2VydmVB
c3BlY3RSYXRpby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDIzICsyMiwyMSBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaWZkZWYgU1ZHX1NVUFBPUlQKLSNpbmNsdWRlICJEZXByZWNhdGVk
U3RyaW5nLmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZ0xpc3QuaCIKIAotI2luY2x1ZGUg
IlN0cmluZ0ltcGwuaCIKLQogI2luY2x1ZGUgImtzdmcuaCIKICNpbmNsdWRlICJTVkdNYXRyaXgu
aCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpby5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHUHJlc2VydmVBc3BlY3RSYXRpbyhjb25z
dCBTVkdTdHlsZWRFbGVtZW50ICpjb250ZXh0KSA6IFNoYXJlZDxTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvPigpCitTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKGNv
bnN0IFNWR1N0eWxlZEVsZW1lbnQgKmNvbnRleHQpCisgICAgOiBTaGFyZWQ8U1ZHUHJlc2VydmVB
c3BlY3RSYXRpbz4oKQorICAgICwgbV9hbGlnbihTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlE
WU1JRCkKKyAgICAsIG1fbWVldE9yU2xpY2UoU1ZHX01FRVRPUlNMSUNFX01FRVQpCisgICAgLCBt
X2NvbnRleHQoY29udGV4dCkKIHsKLSAgICBtX2NvbnRleHQgPSBjb250ZXh0OwotICAgIG1fbWVl
dE9yU2xpY2UgPSBTVkdfTUVFVE9SU0xJQ0VfTUVFVDsKLSAgICBtX2FsaWduID0gU1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQ7CiB9CiAKIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86On5T
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKCkKQEAgLTY1LDE1ICs2MywxMyBAQCB1bnNpZ25lZCBzaG9y
dCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjptCiAgICAgcmV0dXJuIG1fbWVldE9yU2xpY2U7CiB9
CiAKLXZvaWQgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6cGFyc2VQcmVzZXJ2ZUFzcGVjdFJhdGlv
KFN0cmluZ0ltcGwgKnN0ckltcGwpCit2b2lkIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnBhcnNl
UHJlc2VydmVBc3BlY3RSYXRpbyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBTcGVj
OiBzZXQgdGhlIGRlZmF1bHRzCiAgICAgc2V0QWxpZ24oU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9f
Tk9ORSk7CiAgICAgc2V0TWVldE9yU2xpY2UoU1ZHX01FRVRPUlNMSUNFX01FRVQpOwogICAgIAot
ICAgIFN0cmluZyBzKHN0ckltcGwpOwotICAgIERlcHJlY2F0ZWRTdHJpbmcgc3RyID0gcy5kZXBy
ZWNhdGVkU3RyaW5nKCk7Ci0gICAgRGVwcmVjYXRlZFN0cmluZ0xpc3QgcGFyYW1zID0gRGVwcmVj
YXRlZFN0cmluZ0xpc3Q6OnNwbGl0KCcgJywgc3RyLnNpbXBsaWZ5V2hpdGVTcGFjZSgpKTsKKyAg
ICBEZXByZWNhdGVkU3RyaW5nTGlzdCBwYXJhbXMgPSBEZXByZWNhdGVkU3RyaW5nTGlzdDo6c3Bs
aXQoJyAnLCBzdHJpbmcuZGVwcmVjYXRlZFN0cmluZygpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpKTsK
IAogICAgIGlmIChwYXJhbXNbMF0gPT0gIm5vbmUiKQogICAgICAgICBtX2FsaWduID0gU1ZHX1BS
RVNFUlZFQVNQRUNUUkFUSU9fTk9ORTsKQEAgLTExOCwxMyArMTE0LDEwIEBAIFNWR01hdHJpeCAq
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6Z2V0Q1QKICAgICBmbG9hdCB2cGFyID0gbG9naWNXaWR0
aCAvIGxvZ2ljSGVpZ2h0OwogICAgIGZsb2F0IHN2Z2FyID0gcGh5c1dpZHRoIC8gcGh5c0hlaWdo
dDsKIAotICAgIGlmIChhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkUpCi0g
ICAgeworICAgIGlmIChhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkUpIHsK
ICAgICAgICAgdGVtcC0+c2NhbGVOb25Vbmlmb3JtKHBoeXNXaWR0aCAvIGxvZ2ljV2lkdGgsIHBo
eXNIZWlnaHQgLyBsb2dpY0hlaWdodCk7CiAgICAgICAgIHRlbXAtPnRyYW5zbGF0ZSgtbG9naWNY
LCAtbG9naWNZKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAodnBhciA8IHN2Z2FyICYmIChtZWV0T3JT
bGljZSgpID09IFNWR19NRUVUT1JTTElDRV9NRUVUKSB8fCB2cGFyID49IHN2Z2FyICYmIChtZWV0
T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElDRV9TTElDRSkpCi0gICAgeworICAgIH0gZWxzZSBp
ZiAodnBhciA8IHN2Z2FyICYmIChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElDRV9NRUVU
KSB8fCB2cGFyID49IHN2Z2FyICYmIChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElDRV9T
TElDRSkpIHsKICAgICAgICAgdGVtcC0+c2NhbGUocGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0KTsK
IAogICAgICAgICBpZiAoYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1J
TiB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEIHx8IGFsaWdu
KCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVgpCkBAIC0xMzMsOSArMTI2LDcg
QEAgU1ZHTWF0cml4ICpTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVAogICAgICAgICAgICAg
dGVtcC0+dHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAtIHBoeXNXaWR0aCAqIGxvZ2lj
SGVpZ2h0IC8gcGh5c0hlaWdodCkgLyAyLCAtbG9naWNZKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAtIHBoeXNXaWR0aCAq
IGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCksIC1sb2dpY1kpOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgeworICAgIH0gZWxzZSB7CiAgICAgICAgIHRlbXAtPnNjYWxlKHBoeXNXaWR0aCAvIGxvZ2lj
V2lkdGgpOwogCiAgICAgICAgIGlmIChhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElP
X1hNSU5ZTUlOIHx8IGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU4g
fHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTikKQEAgLTE0OSw2
ICsxNDAsOCBAQCBTVkdNYXRyaXggKlNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUCiAgICAg
cmV0dXJuIHRlbXA7CiB9CiAKK30KKwogLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19T
VVBQT1JUCiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAkocmV2aXNpb24gMTYy
NzEpCisrKyBrc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHBoeXNIZWlnaHQpOwogCiAgICAgICAgIC8vIEhlbHBlcgotICAg
ICAgICB2b2lkIHBhcnNlUHJlc2VydmVBc3BlY3RSYXRpbyhTdHJpbmdJbXBsICpzdHJpbmcpOwor
ICAgICAgICB2b2lkIHBhcnNlUHJlc2VydmVBc3BlY3RSYXRpbyhjb25zdCBTdHJpbmcmKTsKIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbV9hbGlnbjsKSW5kZXg6IGtz
dmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcy
L3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjI3MykKKysrIGtz
dmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDMsNyArMTAzLDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAog
ICAgIGlmKGdyYWRpZW50VHJhbnNmb3JtKCktPm51bWJlck9mSXRlbXMoKSA+IDApCiAgICAgICAg
IG1hdCA9IGdyYWRpZW50VHJhbnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpLT5tYXRy
aXgoKTsKIAotICAgIERlcHJlY2F0ZWRTdHJpbmcgcmVmID0gU3RyaW5nKGhyZWYoKSkuZGVwcmVj
YXRlZFN0cmluZygpOworICAgIERlcHJlY2F0ZWRTdHJpbmcgcmVmID0gaHJlZigpLmRlcHJlY2F0
ZWRTdHJpbmcoKTsKICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgKnBzZXJ2ZXIgPSBnZXRQYWlu
dFNlcnZlckJ5SWQoZG9jdW1lbnQoKSwgcmVmLm1pZCgxKSk7CiAKICAgICBpZihwc2VydmVyICYm
IChwc2VydmVyLT50eXBlKCkgPT0gUFNfUkFESUFMX0dSQURJRU5UIHx8IHBzZXJ2ZXItPnR5cGUo
KSA9PSBQU19MSU5FQVJfR1JBRElFTlQpKQpJbmRleDoga3N2ZzIvc3ZnL1NWR1N0eWxlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE2MjcxKQorKysga3N2ZzIvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJTVkdTdHlsZUVsZW1lbnQuaCIKIAogI2lu
Y2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJEZXByZWNhdGVkU3RyaW5nLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiTWVkaWFMaXN0LmgiCkluZGV4OiBrc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MjcxKQorKysga3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiUmVndWxhckV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJEZXByZWNhdGVkU3RyaW5nTGlzdC5oIgotCiAjaW5jbHVk
ZSAiQXR0ci5oIgogCiAjaW5jbHVkZSA8a2NhbnZhcy9SZW5kZXJQYXRoLmg+CkluZGV4OiBrc3Zn
Mi9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdWaWV3
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MjcxKQorKysga3N2ZzIvc3ZnL1NWR1ZpZXdFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDEzIEBACiAjaW5jbHVkZSAiU1ZHU3Ry
aW5nTGlzdC5oIgogI2luY2x1ZGUgIlNWR1pvb21BbmRQYW4uaCIKIAotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR1ZpZXdFbGVtZW50OjpTVkdWaWV3
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAqZG9jKQotOiBT
VkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvYyksIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKSwKLVNWR0ZpdFRvVmlld0JveCgpLCBTVkdab29tQW5kUGFuKCkKKyAgICA6IFNWR1N0eWxl
ZEVsZW1lbnQodGFnTmFtZSwgZG9jKQorICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpCisgICAgLCBTVkdGaXRUb1ZpZXdCb3goKQorICAgICwgU1ZHWm9vbUFuZFBhbigpCiB7CiB9
CiAKQEAgLTUyLDkgKzU0LDkgQEAgU1ZHU3RyaW5nTGlzdCAqU1ZHVmlld0VsZW1lbnQ6OnZpZXdU
YXJnZQogdm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlICphdHRyKQogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgp
OwotICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKSB7Cisg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCiAgICAgICAg
IHZpZXdUYXJnZXQoKS0+cmVzZXQodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpKTsKLSAgICB9IGVs
c2UgeworICAgIGVsc2UgewogICAgICAgICBpZihTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKQogICAgICAgICAgICB8fCBTVkdGaXRUb1ZpZXdC
b3g6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpCiAgICAgICAgICAgIHx8IFNWR1pvb21BbmRQ
YW46OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpAQCAtNjQsNSArNjYsNyBAQCB2b2lkIFNW
R1ZpZXdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgfQogfQogCit9CisKICNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAogCkluZGV4OiBrc3ZnMi9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCShyZXZpc2lvbiAxNjI3MSkK
KysrIGtzdmcyL3N2Zy9TVkdab29tQW5kUGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEg
KzMwLDExIEBACiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHWm9vbUFuZFBh
bi5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U1ZHWm9vbUFuZFBhbjo6U1ZHWm9vbUFuZFBhbigpCisgICAgOiBtX3pvb21BbmRQYW4oU1ZHX1pP
T01BTkRQQU5fTUFHTklGWSkKIHsKLSAgICBtX3pvb21BbmRQYW4gPSBTVkdfWk9PTUFORFBBTl9N
QUdOSUZZOwogfQogCiBTVkdab29tQW5kUGFuOjp+U1ZHWm9vbUFuZFBhbigpCkBAIC02NSw2ICs2
NSw4IEBAIGJvb2wgU1ZHWm9vbUFuZFBhbjo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK30KKwogLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQ
T1JUCiAK
</data>
<flag name="review"
          id="3371"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>