<?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>186973</bug_id>
          
          <creation_ts>2018-06-23 09:11:28 -0700</creation_ts>
          <short_desc>[Cocoa] Improve ARC compatibility of more code in JavaScriptCore</short_desc>
          <delta_ts>2021-01-28 14:58:44 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201803</see_also>
          <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>
          
          <blocked>221107</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mitz</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1435865</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-06-23 09:11:28 -0700</bug_when>
    <thetext>[Cocoa] Improve ARC compatibility of more code in JavaScriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435869</commentid>
    <comment_count>1</comment_count>
      <attachid>343440</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-06-23 09:56:52 -0700</bug_when>
    <thetext>Created attachment 343440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438015</commentid>
    <comment_count>2</comment_count>
      <attachid>343977</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-06-29 17:09:34 -0700</bug_when>
    <thetext>Created attachment 343977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438242</commentid>
    <comment_count>3</comment_count>
      <attachid>344027</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-06-30 17:46:02 -0700</bug_when>
    <thetext>Created attachment 344027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438317</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-07-01 11:23:59 -0700</bug_when>
    <thetext>Committed r233409: &lt;https://trac.webkit.org/changeset/233409&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438318</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-01 11:24:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/41699383&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438319</commentid>
    <comment_count>6</comment_count>
      <attachid>344027</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-01 11:49:16 -0700</bug_when>
    <thetext>Comment on attachment 344027
Patch

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

&gt; Source/JavaScriptCore/API/JSContextInternal.h:33
&gt; -    CallbackData *next;
&gt; +    CallbackData* next;

I thought in Objective-C++ code we followed the Objective-C style of putting the * next to the variable name rather than our C++ style?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438323</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2018-07-01 12:14:37 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #6)
&gt; Comment on attachment 344027 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=344027&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/API/JSContextInternal.h:33
&gt; &gt; -    CallbackData *next;
&gt; &gt; +    CallbackData* next;
&gt; 
&gt; I thought in Objective-C++ code we followed the Objective-C style of putting
&gt; the * next to the variable name rather than our C++ style?

* placement depends on the type. For Objective-C classes, the * comes after the space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570949</commentid>
    <comment_count>8</comment_count>
      <attachid>344027</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-09-15 10:47:02 -0700</bug_when>
    <thetext>Comment on attachment 344027
Patch

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

&gt; Source/JavaScriptCore/API/JSVirtualMachine.mm:-190
&gt; -        [ownedObjects release];

This change should not have been included in the patch, and was a mismerge. It introduced a storage leak fixed in bug 201803.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343440</attachid>
            <date>2018-06-23 09:56:52 -0700</date>
            <delta_ts>2018-06-23 10:12:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186973-20180623095652.patch</filename>
            <type>text/plain</type>
            <size>66801</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OWNlZjJlMmM3YTg2YjQ0NTk3NTMyYWQ0NjRhOWUzYmEwZGQwZGI0Li4xYmE2NzY1NzJjMTdkMzQ4
NjE2NjU2MzE4NzU4MTg3MGExYWVjMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOC0wNi0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBJbXByb3ZlIEFSQyBjb21wYXRpYmlsaXR5IG9mIG1vcmUgY29kZSBp
biBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg2OTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAoV2Vha0NvbnRleHRSZWY6Oldl
YWtDb250ZXh0UmVmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYWtDb250ZXh0UmVmOjp+V2Vha0Nv
bnRleHRSZWYpOiBEZWxldGVkLgorICAgICAgICAoV2Vha0NvbnRleHRSZWY6OmdldCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWFrQ29udGV4dFJlZjo6c2V0KTogRGVsZXRlZC4KKworICAgICAgICAq
IEFQSS9KU0NvbnRleHRJbnRlcm5hbC5oOiBSZW1vdmVkIHVubmVlZGVkIGhlYWRlciBndWFyZHMg
c2luY2UgdGhpcyBpcworICAgICAgICBhbiBPYmplY3RpdmUtQysrIGhlYWRlci4gUmVtb3ZlZCB1
bnVzZWQgV2Vha0NvbnRleHRSZWYgY2xhc3MuIFJlbW92ZWQgZGVjbGFyYXRpb24KKyAgICAgICAg
b2YgbWV0aG9kIC1bSlNDb250ZXh0IGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpdIGFuZCBKU0Nv
bnRleHQgcHJvcGVydHkgd3JhcHBlck1hcAorICAgICAgICBzaW5jZSBuZWl0aGVyIGlzIHVzZWQg
b3V0c2lkZSB0aGUgY2xhc3MgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBBUEkvSlNNYW5h
Z2VkVmFsdWUubW06CisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGluaXRXaXRoVmFsdWU6XSk6
IFVzZSBhIGJyaWRnaW5nIGNhc3QuCisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGRlYWxsb2Nd
KTogRGl0dG8uCisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGRpZEFkZE93bmVyOl0pOiBEaXR0
by4KKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGlkUmVtb3ZlT3duZXI6XSk6IERpdHRvLgor
ICAgICAgICAoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMpOiBEaXR0by4KKyAgICAgICAgKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmZpbmFs
aXplKTogRGl0dG8uCisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgICgrW0pTVmFs
dWUgdmFsdWVXaXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjpmbGFnczppbkNvbnRl
eHQ6XSk6IERpdHRvLgorICAgICAgICAoK1tKU1ZhbHVlIHZhbHVlV2l0aE5ld0Vycm9yRnJvbU1l
c3NhZ2U6aW5Db250ZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bSlNWYWx1ZSBzZXRWYWx1ZTpmb3JQcm9wZXJ0
eTpdKTogRGl0dG8uCisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRlUHJvcGVydHk6XSk6IERpdHRv
LgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEaXR0by4KKyAgICAgICAgKC1b
SlNWYWx1ZSBpbnZva2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKTogRGl0dG8uCisgICAgICAgICh2
YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkpOiBEaXR0by4gQWxzbyByZW1vdmVkIHVubmVlZGVkIGV4
cGxpY2l0IHR5cGUgbmFtZXMuCisgICAgICAgICh2YWx1ZVRvQXJyYXkpOiBEaXR0by4KKyAgICAg
ICAgKHZhbHVlVG9EaWN0aW9uYXJ5KTogRGl0dG8uCisgICAgICAgIChvYmplY3RUb1ZhbHVlV2l0
aG91dENvcHkpOiBEaXR0by4KKyAgICAgICAgKG9iamVjdFRvVmFsdWUpOiBEaXR0by4KKyAgICAg
ICAgKiBBUEkvSlNWaXJ0dWFsTWFjaGluZS5tbToKKyAgICAgICAgKCtbSlNWTVdyYXBwZXJDYWNo
ZSBhZGRXcmFwcGVyOmZvckpTQ29udGV4dEdyb3VwUmVmOl0pOiBEaXR0by4KKyAgICAgICAgKCtb
SlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3JvdXBSZWY6XSk6IERpdHRvLgor
ICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGlzT2xkRXh0ZXJuYWxPYmplY3Q6XSk6IERpdHRv
LgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6d2l0aE93
bmVyOl0pOiBEaXR0by4KKyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSByZW1vdmVNYW5hZ2Vk
UmVmZXJlbmNlOndpdGhPd25lcjpdKTogRGl0dG8uCisgICAgICAgICgtW0pTVmlydHVhbE1hY2hp
bmUgY29udGV4dEZvckdsb2JhbENvbnRleHRSZWY6XSk6IERpdHRvLgorICAgICAgICAoLVtKU1Zp
cnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6Zm9yR2xvYmFsQ29udGV4dFJlZjpdKTogRGl0dG8uCisg
ICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6IERpdHRvLgorICAgICAgICAoc2NhbkV4
dGVybmFsUmVtZW1iZXJlZFNldCk6IERpdHRvLgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAu
bW06CisgICAgICAgIChtYWtlV3JhcHBlcik6IERpdHRvLgorICAgICAgICAoLVtKU09iakNDbGFz
c0luZm8gd3JhcHBlckZvck9iamVjdDppbkNvbnRleHQ6XSk6IERpdHRvLgorICAgICAgICAoLVtK
U1dyYXBwZXJNYXAgb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOmluQ29udGV4dDpdKTogRGl0dG8u
CisgICAgICAgICh0cnlVbndyYXBPYmpjT2JqZWN0KTogRGl0dG8uCisgICAgICAgICogQVBJL09i
akNDYWxsYmFja0Z1bmN0aW9uLm1tOgorICAgICAgICAoYmxvY2tTaWduYXR1cmVDb250YWluc0Ns
YXNzKTogRGl0dG8uCisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvck1ldGhvZCk6IFN3
aXRjaGVkIGZyb20gcmV0YWluIHRvIENGUmV0YWluLCBidXQgbm90CisgICAgICAgIHN1cmUgd2Ug
d2lsbCBiZSBrZWVwaW5nIHRoaXMgdGhlIHNhbWUgd2F5IHVuZGVyIEFSQy4KKyAgICAgICAgKG9i
akNDYWxsYmFja0Z1bmN0aW9uRm9yQmxvY2spOiBVc2UgYSBicmlkZ2luZyBjYXN0LgorCisgICAg
ICAgICogQVBJL09iamNSdW50aW1lRXh0cmFzLmg6CisgICAgICAgIChwcm90b2NvbEltcGxlbWVu
dHNQcm90b2NvbCk6IFVzZSBhIG1vcmUgc3BlY2lmaWMgdHlwZSB0aGF0IGluY2x1ZGVzIHRoZQor
ICAgICAgICBleHBsaWNpdCBfX3Vuc2FmZV91bnJldGFpbmVkIGZvciBjb3BpZWQgcHJvdG9jb2wg
bGlzdHMuCisgICAgICAgIChmb3JFYWNoUHJvdG9jb2xJbXBsZW1lbnRpbmdQcm90b2NvbCk6IERp
dHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JD
b2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6Y29udmVydE5TTnVsbFRvTmlsKTogQWRkZWQg
dG8gcmVwbGFjZSB0aGUgQ09OVkVSVF9OU05VTExfVE9fTklMIG1hY3JvLgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKTogVXNlIGNvbnZl
cnROU051bGxUb05pbC4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTogTW92ZWQgdGhlCisgICAgICAgIENGWFBDQnJpZGdl
IFNQSSB0byBhIGhlYWRlciBuYW1lZCBDRlhQQ0JyaWRnZVNQSS5oLgorICAgICAgICAoYXVkaXRU
b2tlbkhhc0VudGl0bGVtZW50KTogRGVsZXRlZC4gTW92ZWQgdG8gRW50aXRsZW1lbnRzLmgvY3Bw
IGluIFdURi4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bjo6aGFuZGxlRXZlbnQpOiBVc2UgV1RGOjpoYXNFbnRpdGxlbWVudC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOiBVc2UgYSBi
cmlkZ2luZyBjYXN0LgorCiAyMDE4LTA2LTIyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlIG5lZWQgdG8gaGF2ZSBhIGdldERpcmVjdENvbmN1cnJl
bnRseSBmb3IgdXNlIGluIHRoZSBjb21waWxlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODIxZWFkMmU4ZjBjMDNlMDA0YThm
ZTNhMGJkZDQ2OTBhNDAyZWFlNC4uOWI3NmUyNTk3MTQwYmM1M2FhNDA3NmEzMTA2MGQyNDQyNzcw
YmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wNi0yMyAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbXByb3ZlIEFSQyBjb21wYXRpYmlsaXR5
IG9mIG1vcmUgY29kZSBpbiBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2OTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkZWQgQ0ZYUENCcmlkZ2VTUEkuaCwgZml4ZWQgYSBmZXcKKyAgICAgICAgb3RoZXIgc21hbGwg
cHJvYmxlbXMgaW4gdGhlIHByb2plY3QgZmlsZSwgYW5kIGxldCBYY29kZSBmaXggYSBmZXcgdG9v
LgorCisgICAgICAgICogd3RmL2NvY29hL0VudGl0bGVtZW50cy5oOiBBZGRlZCBoYXNFbnRpdGxl
bWVudCBmdW5jdGlvbiB3aXRoIG92ZXJsb2FkcworICAgICAgICBmb3IgYW4gYXVkaXQgdG9rZW4g
YW5kIGFuIFhQQyBjb25uZWN0aW9uLgorICAgICAgICAqIHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMu
bW06CisgICAgICAgIChXVEY6Omhhc0VudGl0bGVtZW50KTogQWRkZWQsIHdpdGggb3ZlcmxvYWRz
IGZvciBhIFNlY1Rhc2ssIGFuIGF1ZGl0IHRva2VuLAorICAgICAgICBhbmQgYW4gWFBDIGNvbm5l
Y3Rpb24uCisgICAgICAgIChXVEY6OnByb2Nlc3NIYXNFbnRpdGxlbWVudCk6IFJlZmFjdG9yZWQg
dG8gdXNlIHRoZSBmdW5jdGlvbiBhYm92ZS4KKworICAgICAgICAqIHd0Zi9zcGkvY29jb2EvQ0ZY
UENCcmlkZ2VTUEkuaDogQWRkZWQuCisKIDIwMTgtMDYtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQ29udmVydCB0aGUgc21hbGwgYml0IG9mIE9i
amVjdGl2ZS1DKysgY29kZSBpbiBXVEYgdG8gQVJDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdlOTVkNmJkMjU1YWY2
YzNjYmQ5ZTRiYTA4ZmIyMmY4ZDZhYjM2M2QuLmZhNWZiMWRjMGM4Yzg3MTQwYjkxOGMzMGRlZjNl
OWU5NWE5MzQ5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDYtMjMgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW1wcm92ZSBBUkMg
Y29tcGF0aWJpbGl0eSBvZiBtb3JlIGNvZGUgaW4gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Njk3MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAg
IChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpoYXNFbnRpdGxlbWVudCk6
IFVzZSBXVEY6Omhhc0VudGl0bGVtZW50LgorCisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94
VXRpbGl0aWVzLmg6IFJlbW92ZWQgY29ubmVjdGVkUHJvY2Vzc0hhc0VudGl0bGVtZW50IHNpbmNl
CisgICAgICAgIHdlIGNhbiBub3cgdXNlIFdURjo6aGFzRW50aXRsZW1lbnQgaW5zdGVhZC4KKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hVdGlsaXRpZXMubW06IERpdHRvLgorCisgICAgICAg
ICogU3RvcmFnZVByb2Nlc3MvaW9zL1N0b3JhZ2VQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlUHJvY2Vzczo6cGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudCk6IFVzZQorICAgICAgICBXVEY6Omhhc0VudGl0bGVtZW50LgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCk6IERpdHRvLgorCiAy
MDE4LTA2LTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIFtXVEZdIEFkZCB1c2VyLWRlZmluZWQgbGl0ZXJhbCBmb3IgQVNDSUlMaXRlcmFsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IGQ4YjBhNzU2MmEwMzVmM2Y3ZDU0
NDRlZTNjMmNiODdmMDdjNjk3MjMuLmY0ZTg4YzE0NGVhYTE2OTE5MGI2Y2EzMzdkNTRiYTBkYjVk
NjFiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCkBAIC0zMzcsMjQg
KzMzNyw0IEBAICsgKEpTQ29udGV4dCAqKWNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOihK
U0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dAogCiBAZW5kCiAKLVdlYWtDb250ZXh0UmVm
OjpXZWFrQ29udGV4dFJlZihKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgb2JqY19pbml0V2Vh
aygmbV93ZWFrQ29udGV4dCwgY29udGV4dCk7Ci19Ci0KLVdlYWtDb250ZXh0UmVmOjp+V2Vha0Nv
bnRleHRSZWYoKQotewotICAgIG9iamNfZGVzdHJveVdlYWsoJm1fd2Vha0NvbnRleHQpOwotfQot
Ci1KU0NvbnRleHQgKiBXZWFrQ29udGV4dFJlZjo6Z2V0KCkKLXsKLSAgICByZXR1cm4gb2JqY19s
b2FkV2VhaygmbV93ZWFrQ29udGV4dCk7Ci19Ci0KLXZvaWQgV2Vha0NvbnRleHRSZWY6OnNldChK
U0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgb2JqY19zdG9yZVdlYWsoJm1fd2Vha0NvbnRleHQs
IGNvbnRleHQpOwotfQotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0SW50ZXJuYWwuaAppbmRleCBiMzdjZmE0NDE1ZjhjODliZTU5MWNhYTczOWZhNjcwYjIz
NGNlM2ZkLi4yOGY3MDljMWU0OGYxZTFhODAzODU2NTBhYWU2ZTQxY2QzNTE1MGZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCkBAIC0yMyw5ICsy
Myw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEpTQ29udGV4dEludGVybmFs
X2gKLSNkZWZpbmUgSlNDb250ZXh0SW50ZXJuYWxfaAotCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5oPgogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKQEAgLTMzLDcg
KzMwLDcgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dC5oPgogCiBzdHJ1Y3Qg
Q2FsbGJhY2tEYXRhIHsKLSAgICBDYWxsYmFja0RhdGEgKm5leHQ7CisgICAgQ2FsbGJhY2tEYXRh
KiBuZXh0OwogICAgIEpTQ29udGV4dCAqY29udGV4dDsKICAgICBKU1ZhbHVlICpwcmVzZXJ2ZWRF
eGNlcHRpb247CiAgICAgSlNWYWx1ZVJlZiBjYWxsZWVWYWx1ZTsKQEAgLTQzLDI0ICs0MCwxMCBA
QCBzdHJ1Y3QgQ2FsbGJhY2tEYXRhIHsKICAgICBOU0FycmF5ICpjdXJyZW50QXJndW1lbnRzOwog
fTsKIAotY2xhc3MgV2Vha0NvbnRleHRSZWYgewotcHVibGljOgotICAgIFdlYWtDb250ZXh0UmVm
KEpTQ29udGV4dCAqID0gbmlsKTsKLSAgICB+V2Vha0NvbnRleHRSZWYoKTsKLQotICAgIEpTQ29u
dGV4dCAqIGdldCgpOwotICAgIHZvaWQgc2V0KEpTQ29udGV4dCAqKTsKLQotcHJpdmF0ZToKLSAg
ICBKU0NvbnRleHQgKm1fd2Vha0NvbnRleHQ7Ci19OwotCiBAY2xhc3MgSlNXcmFwcGVyTWFwOwog
CiBAaW50ZXJmYWNlIEpTQ29udGV4dChJbnRlcm5hbCkKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQ7Ci0KIC0gKHZv
aWQpbm90aWZ5RXhjZXB0aW9uOihKU1ZhbHVlUmVmKWV4Y2VwdGlvbjsKIC0gKEpTVmFsdWUgKil2
YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246KEpTVmFsdWVSZWYpZXhjZXB0aW9uOwogLSAoQk9PTCli
b29sRnJvbU5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1ZVJlZilleGNlcHRpb247CkBAIC03MSwxMCAr
NTQsNiBAQCBwcml2YXRlOgogLSAoSlNWYWx1ZSAqKXdyYXBwZXJGb3JPYmpDT2JqZWN0OihpZClv
YmplY3Q7CiAtIChKU1ZhbHVlICopd3JhcHBlckZvckpTT2JqZWN0OihKU1ZhbHVlUmVmKXZhbHVl
OwogCi1AcHJvcGVydHkgKHJlYWRvbmx5LCByZXRhaW4pIEpTV3JhcHBlck1hcCAqd3JhcHBlck1h
cDsKLQogQGVuZAogCiAjZW5kaWYKLQotI2VuZGlmIC8vIEpTQ29udGV4dEludGVybmFsX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCmluZGV4IDA5OWIwNGFj
ODNmZjJiZjYyOTA5MDg2MjU2MjZkMGIxZDNiNDE4NTQuLjI5YzcxN2RiM2IzZDFkMTg1NzE4NTVi
OGUxM2U2N2U1OGE0NGNiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNNYW5hZ2VkVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbQpAQCAtODgsNyArODgsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWYWx1
ZTooSlNWYWx1ZSAqKXZhbHVlCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFt2YWx1
ZS5jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwogICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiBv
d25lciA9IG1hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKCk7Ci0gICAgSlNDOjpXZWFrPEpTQzo6SlNH
bG9iYWxPYmplY3Q+IHdlYWsoZ2xvYmFsT2JqZWN0LCAmb3duZXIsIHNlbGYpOworICAgIEpTQzo6
V2VhazxKU0M6OkpTR2xvYmFsT2JqZWN0PiB3ZWFrKGdsb2JhbE9iamVjdCwgJm93bmVyLCAoX19i
cmlkZ2Ugdm9pZCopc2VsZik7CiAgICAgbV9nbG9iYWxPYmplY3Quc3dhcCh3ZWFrKTsKIAogICAg
IG1fbG9jayA9ICZleGVjLT52bSgpLmFwaUxvY2soKTsKQEAgLTk5LDkgKzk5LDkgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZQogCiAgICAgSlNDOjpKU1Zh
bHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIFt2YWx1ZSBKU1ZhbHVlUmVmXSk7CiAgICAgaWYgKGpz
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgbV93ZWFrVmFsdWUuc2V0T2JqZWN0KEpTQzo6anND
YXN0PEpTQzo6SlNPYmplY3QqPihqc1ZhbHVlLmFzQ2VsbCgpKSwgb3duZXIsIHNlbGYpOworICAg
ICAgICBtX3dlYWtWYWx1ZS5zZXRPYmplY3QoSlNDOjpqc0Nhc3Q8SlNDOjpKU09iamVjdCo+KGpz
VmFsdWUuYXNDZWxsKCkpLCBvd25lciwgKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwogICAgIGVsc2Ug
aWYgKGpzVmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgbV93ZWFrVmFsdWUuc2V0U3RyaW5nKEpT
Qzo6anNDYXN0PEpTQzo6SlNTdHJpbmcqPihqc1ZhbHVlLmFzQ2VsbCgpKSwgb3duZXIsIHNlbGYp
OworICAgICAgICBtX3dlYWtWYWx1ZS5zZXRTdHJpbmcoSlNDOjpqc0Nhc3Q8SlNDOjpKU1N0cmlu
Zyo+KGpzVmFsdWUuYXNDZWxsKCkpLCBvd25lciwgKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwogICAg
IGVsc2UKICAgICAgICAgbV93ZWFrVmFsdWUuc2V0UHJpbWl0aXZlKGpzVmFsdWUpOwogICAgIHJl
dHVybiBzZWxmOwpAQCAtMTEzLDcgKzExMyw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIGlmICh2
aXJ0dWFsTWFjaGluZSkgewogICAgICAgICBOU01hcFRhYmxlICpjb3B5ID0gW21fb3duZXJzIGNv
cHldOwogICAgICAgICBmb3IgKGlkIG93bmVyIGluIFtjb3B5IGtleUVudW1lcmF0b3JdKSB7Ci0g
ICAgICAgICAgICBzaXplX3QgY291bnQgPSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBH
ZXQobV9vd25lcnMsIG93bmVyKSk7CisgICAgICAgICAgICBzaXplX3QgY291bnQgPSByZWludGVy
cHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQobV9vd25lcnMsIChfX2JyaWRnZSB2b2lkKilvd25l
cikpOwogICAgICAgICAgICAgd2hpbGUgKGNvdW50LS0pCiAgICAgICAgICAgICAgICAgW3ZpcnR1
YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6c2VsZiB3aXRoT3duZXI6b3duZXJdOwog
ICAgICAgICB9CkBAIC0xMjcsMjMgKzEyNywyMyBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAodm9p
ZClkaWRBZGRPd25lcjooaWQpb3duZXIKIHsKLSAgICBzaXplX3QgY291bnQgPSByZWludGVycHJl
dF9jYXN0PHNpemVfdD4oTlNNYXBHZXQobV9vd25lcnMsIG93bmVyKSk7Ci0gICAgTlNNYXBJbnNl
cnQobV9vd25lcnMsIG93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCArIDEpKTsK
KyAgICBzaXplX3QgY291bnQgPSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQobV9v
d25lcnMsIChfX2JyaWRnZSB2b2lkKilvd25lcikpOworICAgIE5TTWFwSW5zZXJ0KG1fb3duZXJz
LCAoX19icmlkZ2Ugdm9pZCopb3duZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvdW50ICsg
MSkpOwogfQogCiAtICh2b2lkKWRpZFJlbW92ZU93bmVyOihpZClvd25lcgogewotICAgIHNpemVf
dCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdldChtX293bmVycywgb3du
ZXIpKTsKKyAgICBzaXplX3QgY291bnQgPSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBH
ZXQobV9vd25lcnMsIChfX2JyaWRnZSB2b2lkKilvd25lcikpOwogCiAgICAgaWYgKCFjb3VudCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNvdW50ID09IDEpIHsKLSAgICAgICAgTlNNYXBS
ZW1vdmUobV9vd25lcnMsIG93bmVyKTsKKyAgICAgICAgTlNNYXBSZW1vdmUobV9vd25lcnMsIChf
X2JyaWRnZSB2b2lkKilvd25lcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBOU01h
cEluc2VydChtX293bmVycywgb3duZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvdW50IC0g
MSkpOworICAgIE5TTWFwSW5zZXJ0KG1fb3duZXJzLCAoX19icmlkZ2Ugdm9pZCopb3duZXIsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvdW50IC0gMSkpOwogfQogCiAtIChKU1ZhbHVlICopdmFs
dWUKQEAgLTE4NCwxMyArMTg0LDEzIEBAIEBlbmQKIAogYm9vbCBKU01hbmFnZWRWYWx1ZUhhbmRs
ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpT
TWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBzdGF0aWNfY2FzdDxKU01hbmFnZWRWYWx1ZSAq
Pihjb250ZXh0KTsKLSAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3QobWFuYWdl
ZFZhbHVlKTsKKyAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gKF9fYnJpZGdlIEpT
TWFuYWdlZFZhbHVlICopY29udGV4dDsKKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1
ZVJvb3QoKF9fYnJpZGdlIHZvaWQqKW1hbmFnZWRWYWx1ZSk7CiB9CiAKIHZvaWQgSlNNYW5hZ2Vk
VmFsdWVIYW5kbGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCkKIHsKLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gc3RhdGlj
X2Nhc3Q8SlNNYW5hZ2VkVmFsdWUgKj4oY29udGV4dCk7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1h
bmFnZWRWYWx1ZSA9IChfX2JyaWRnZSBKU01hbmFnZWRWYWx1ZSAqKWNvbnRleHQ7CiAgICAgW21h
bmFnZWRWYWx1ZSBkaXNjb25uZWN0VmFsdWVdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0KaW5kZXggNWMzYzA1Njg5ZDQ2YTc1MTQ1ODZlZmFkMjg4YWI0ZTdjMzIxNTU2Ni4u
YTI2Njg0NDhmZmJjN2JmNTUzNDM3NGQxN2RhMmJlYjRjNzQxOTg4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMTIzLDggKzEyMyw4IEBAICsgKEpTVmFsdWUgKil2YWx1
ZVdpdGhOZXdBcnJheUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogCiArIChKU1ZhbHVl
ICopdmFsdWVXaXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjooTlNTdHJpbmcgKilw
YXR0ZXJuIGZsYWdzOihOU1N0cmluZyAqKWZsYWdzIGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dAogewotICAgIEpTU3RyaW5nUmVmIHBhdHRlcm5TdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdp
dGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcGF0dGVybik7Ci0gICAgSlNTdHJpbmdSZWYgZmxhZ3NT
dHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpZmxhZ3MpOwor
ICAgIEpTU3RyaW5nUmVmIHBhdHRlcm5TdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmlu
ZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF0dGVybik7CisgICAgSlNTdHJpbmdSZWYgZmxhZ3NT
dHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
ZmxhZ3MpOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdID0geyBKU1ZhbHVlTWFrZVN0cmlu
ZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBwYXR0ZXJuU3RyaW5nKSwgSlNWYWx1ZU1h
a2VTdHJpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgZmxhZ3NTdHJpbmcpIH07CiAg
ICAgSlNTdHJpbmdSZWxlYXNlKHBhdHRlcm5TdHJpbmcpOwogICAgIEpTU3RyaW5nUmVsZWFzZShm
bGFnc1N0cmluZyk7CkBAIC0xMzQsNyArMTM0LDcgQEAgKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5l
d1JlZ3VsYXJFeHByZXNzaW9uRnJvbVBhdHRlcm46KE5TU3RyaW5nICopcGF0dGVybiBmbGFnczoK
IAogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld0Vycm9yRnJvbU1lc3NhZ2U6KE5TU3RyaW5nICop
bWVzc2FnZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIHsKLSAgICBKU1N0cmluZ1Jl
ZiBzdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpbWVzc2Fn
ZSk7CisgICAgSlNTdHJpbmdSZWYgc3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmco
KF9fYnJpZGdlIENGU3RyaW5nUmVmKW1lc3NhZ2UpOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnQg
PSBKU1ZhbHVlTWFrZVN0cmluZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcp
OwogICAgIEpTU3RyaW5nUmVsZWFzZShzdHJpbmcpOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgLSAo
SlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCiAgICAg
aWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlF
eGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKKyAgICBKU1N0cmlu
Z1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXByb3BlcnR5TmFtZSk7CiAgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFBy
b3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNl
cHRpb24pOwogICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKICAgICBpZiAoZXhjZXB0aW9uKQpA
QCAtMjU5LDcgKzI1OSw3IEBAIC0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5
OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
SlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1Jl
Zilwcm9wZXJ0eU5hbWUpOworICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdp
dGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKICAgICBKU09i
amVjdFNldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5h
bWUsIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwgMCwgJmV4Y2VwdGlvbik7CiAgICAg
SlNTdHJpbmdSZWxlYXNlKG5hbWUpOwogICAgIGlmIChleGNlcHRpb24pIHsKQEAgLTI3NSw3ICsy
NzUsNyBAQCAtIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQog
ICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3Rp
ZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKKyAgICBKU1N0
cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXByb3BlcnR5TmFtZSk7CiAgICAgQk9PTCByZXN1bHQgPSBKU09iamVjdERlbGV0ZVBy
b3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNl
cHRpb24pOwogICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKICAgICBpZiAoZXhjZXB0aW9uKQpA
QCAtMjkxLDcgKzI5MSw3IEBAIC0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVy
dHlOYW1lCiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29s
RnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9
IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwor
ICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKICAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0
SGFzUHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSk7
CiAgICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC00NjEs
NyArNDYxLDcgQEAgLSAoSlNWYWx1ZSAqKWludm9rZU1ldGhvZDooTlNTdHJpbmcgKiltZXRob2Qg
d2l0aEFyZ3VtZW50czooTlNBcnJheSAqKWFyZ3VtZW50cwogICAgIGlmIChleGNlcHRpb24pCiAg
ICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlv
bl07CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmco
KENGU3RyaW5nUmVmKW1ldGhvZCk7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZiltZXRob2QpOwogICAgIEpTVmFs
dWVSZWYgZnVuY3Rpb24gPSBKU09iamVjdEdldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdLCB0aGlzT2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKICAgICBKU1N0cmluZ1Jl
bGVhc2UobmFtZSk7CiAgICAgaWYgKGV4Y2VwdGlvbikKQEAgLTY5NCwyMSArNjk0LDIxIEBAIHN0
YXRpYyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB2YWx1ZVRvT2JqZWN0V2l0aG91dENvcHko
SlNHbG9iYWxDb250ZXh0UmVmIGNvCiAgICAgICAgICAgICBBU1NFUlQoSlNWYWx1ZUlzVW5kZWZp
bmVkKGNvbnRleHQsIHZhbHVlKSk7CiAgICAgICAgICAgICBwcmltaXRpdmUgPSBuaWw7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IHZhbHVl
LCBwcmltaXRpdmUsIENvbnRhaW5lck5vbmUgfTsKKyAgICAgICAgcmV0dXJuIHsgdmFsdWUsIHBy
aW1pdGl2ZSwgQ29udGFpbmVyTm9uZSB9OwogICAgIH0KIAogICAgIEpTT2JqZWN0UmVmIG9iamVj
dCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCB2YWx1ZSwgMCk7CiAKICAgICBpZiAoaWQgd3Jh
cHBlZCA9IHRyeVVud3JhcE9iamNPYmplY3QoY29udGV4dCwgb2JqZWN0KSkKLSAgICAgICAgcmV0
dXJuIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgd3JhcHBlZCwgQ29udGFp
bmVyTm9uZSB9OworICAgICAgICByZXR1cm4geyBvYmplY3QsIHdyYXBwZWQsIENvbnRhaW5lck5v
bmUgfTsKIAogICAgIGlmIChpc0RhdGUodm0sIG9iamVjdCwgY29udGV4dCkpCi0gICAgICAgIHJl
dHVybiAoSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIFtOU0RhdGUgZGF0ZVdp
dGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIG9iamVjdCwg
MCkgLyAxMDAwLjBdLCBDb250YWluZXJOb25lIH07CisgICAgICAgIHJldHVybiB7IG9iamVjdCwg
W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpKU1ZhbHVlVG9OdW1iZXIoY29u
dGV4dCwgb2JqZWN0LCAwKSAvIDEwMDAuMF0sIENvbnRhaW5lck5vbmUgfTsKIAogICAgIGlmIChp
c0FycmF5KHZtLCBvYmplY3QsIGNvbnRleHQpKQotICAgICAgICByZXR1cm4gKEpTQ29udGFpbmVy
Q29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCBbTlNNdXRhYmxlQXJyYXkgYXJyYXldLCBDb250YWlu
ZXJBcnJheSB9OworICAgICAgICByZXR1cm4geyBvYmplY3QsIFtOU011dGFibGVBcnJheSBhcnJh
eV0sIENvbnRhaW5lckFycmF5IH07CiAKLSAgICByZXR1cm4gKEpTQ29udGFpbmVyQ29udmVydG9y
OjpUYXNrKXsgb2JqZWN0LCBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XSwgQ29udGFp
bmVyRGljdGlvbmFyeSB9OworICAgIHJldHVybiB7IG9iamVjdCwgW05TTXV0YWJsZURpY3Rpb25h
cnkgZGljdGlvbmFyeV0sIENvbnRhaW5lckRpY3Rpb25hcnkgfTsKIH0KIAogc3RhdGljIGlkIGNv
bnRhaW5lclZhbHVlVG9PYmplY3QoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTQ29udGFp
bmVyQ29udmVydG9yOjpUYXNrIHRhc2spCkBAIC04MjIsNyArODIyLDcgQEAgaWQgdmFsdWVUb0Fy
cmF5KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVl
UmVmKiBleGNlcHQKICAgICB9CiAKICAgICBpZiAoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoY29udGV4dCwgKEpT
Q29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsgdmFsdWUsIFtOU011dGFibGVBcnJheSBhcnJheV0s
IENvbnRhaW5lckFycmF5fSk7CisgICAgICAgIHJldHVybiBjb250YWluZXJWYWx1ZVRvT2JqZWN0
KGNvbnRleHQsIHsgdmFsdWUsIFtOU011dGFibGVBcnJheSBhcnJheV0sIENvbnRhaW5lckFycmF5
fSk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhjb250ZXh0KSk7CiAgICAg
aWYgKCEoSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlzVW5kZWZpbmVk
KGNvbnRleHQsIHZhbHVlKSkpIHsKQEAgLTg0NCw3ICs4NDQsNyBAQCBpZCB2YWx1ZVRvRGljdGlv
bmFyeShKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1
ZVJlZiogZQogICAgIH0KIAogICAgIGlmIChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgdmFsdWUp
KQotICAgICAgICByZXR1cm4gY29udGFpbmVyVmFsdWVUb09iamVjdChjb250ZXh0LCAoSlNDb250
YWluZXJDb252ZXJ0b3I6OlRhc2speyB2YWx1ZSwgW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlv
bmFyeV0sIENvbnRhaW5lckRpY3Rpb25hcnl9KTsKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5lclZh
bHVlVG9PYmplY3QoY29udGV4dCwgeyB2YWx1ZSwgW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlv
bmFyeV0sIENvbnRhaW5lckRpY3Rpb25hcnl9KTsKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2tlcih0b0pTKGNvbnRleHQpKTsKICAgICBpZiAoIShKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZh
bHVlKSB8fCBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpKSkgewpAQCAtOTI1LDQ5
ICs5MjUsNDkgQEAgc3RhdGljIE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sgb2JqZWN0VG9W
YWx1ZVdpdGhvdXRDb3B5KEpTQ29udGV4dCAqY29udGV4dCwKICAgICBKU0dsb2JhbENvbnRleHRS
ZWYgY29udGV4dFJlZiA9IFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl07CiAKICAgICBpZiAo
IW9iamVjdCkKLSAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsg
b2JqZWN0LCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0UmVmKSwgQ29udGFpbmVyTm9uZSB9
OworICAgICAgICByZXR1cm4geyBvYmplY3QsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHRS
ZWYpLCBDb250YWluZXJOb25lIH07CiAKICAgICBpZiAoIWNsYXNzX2NvbmZvcm1zVG9Qcm90b2Nv
bChvYmplY3RfZ2V0Q2xhc3Mob2JqZWN0KSwgZ2V0SlNFeHBvcnRQcm90b2NvbCgpKSkgewogICAg
ICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAg
ICAgICByZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIEpTT2Jq
ZWN0TWFrZUFycmF5KGNvbnRleHRSZWYsIDAsIE5VTEwsIDApLCBDb250YWluZXJBcnJheSB9Owor
ICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCBKU09iamVjdE1ha2VBcnJheShjb250ZXh0UmVm
LCAwLCBOVUxMLCAwKSwgQ29udGFpbmVyQXJyYXkgfTsKIAogICAgICAgICBpZiAoW29iamVjdCBp
c0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKLSAgICAgICAgICAgIHJldHVybiAo
T2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgSlNPYmplY3RNYWtlKGNvbnRl
eHRSZWYsIDAsIDApLCBDb250YWluZXJEaWN0aW9uYXJ5IH07CisgICAgICAgICAgICByZXR1cm4g
eyBvYmplY3QsIEpTT2JqZWN0TWFrZShjb250ZXh0UmVmLCAwLCAwKSwgQ29udGFpbmVyRGljdGlv
bmFyeSB9OwogCiAgICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TTnVsbCBjbGFz
c11dKQotICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsg
b2JqZWN0LCBKU1ZhbHVlTWFrZU51bGwoY29udGV4dFJlZiksIENvbnRhaW5lck5vbmUgfTsKKyAg
ICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNWYWx1ZU1ha2VOdWxsKGNvbnRleHRSZWYpLCBD
b250YWluZXJOb25lIH07CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbSlNW
YWx1ZSBjbGFzc11dKQotICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9y
OjpUYXNrKXsgb2JqZWN0LCAoKEpTVmFsdWUgKilvYmplY3QpLT5tX3ZhbHVlLCBDb250YWluZXJO
b25lIH07CisgICAgICAgICAgICByZXR1cm4geyBvYmplY3QsICgoSlNWYWx1ZSAqKW9iamVjdCkt
Pm1fdmFsdWUsIENvbnRhaW5lck5vbmUgfTsKIAogICAgICAgICBpZiAoW29iamVjdCBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgICAgICBKU1N0cmluZ1JlZiBzdHJp
bmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpb2JqZWN0KTsKKyAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5n
KChfX2JyaWRnZSBDRlN0cmluZ1JlZilvYmplY3QpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiBq
cyA9IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHRSZWYsIHN0cmluZyk7CiAgICAgICAgICAgICBK
U1N0cmluZ1JlbGVhc2Uoc3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5l
ckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwganMsIENvbnRhaW5lck5vbmUgfTsKKyAgICAgICAg
ICAgIHJldHVybiB7IG9iamVjdCwganMsIENvbnRhaW5lck5vbmUgfTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pIHsKICAg
ICAgICAgICAgIGlmIChpc05TQm9vbGVhbihvYmplY3QpKQotICAgICAgICAgICAgICAgIHJldHVy
biAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgSlNWYWx1ZU1ha2VCb29s
ZWFuKGNvbnRleHRSZWYsIFtvYmplY3QgYm9vbFZhbHVlXSksIENvbnRhaW5lck5vbmUgfTsKLSAg
ICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwg
SlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dFJlZiwgW29iamVjdCBkb3VibGVWYWx1ZV0pLCBDb250
YWluZXJOb25lIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCBKU1ZhbHVlTWFr
ZUJvb2xlYW4oY29udGV4dFJlZiwgW29iamVjdCBib29sVmFsdWVdKSwgQ29udGFpbmVyTm9uZSB9
OworICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0
UmVmLCBbb2JqZWN0IGRvdWJsZVZhbHVlXSksIENvbnRhaW5lck5vbmUgfTsKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dKSB7CiAg
ICAgICAgICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50ID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4
dFJlZiwgW29iamVjdCB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdICogMTAwMC4wKTsKICAgICAgICAg
ICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IEpTT2JqZWN0TWFrZURhdGUoY29udGV4dFJlZiwgMSwg
JmFyZ3VtZW50LCAwKTsKLSAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRv
cjo6VGFzayl7IG9iamVjdCwgcmVzdWx0LCBDb250YWluZXJOb25lIH07CisgICAgICAgICAgICBy
ZXR1cm4geyBvYmplY3QsIHJlc3VsdCwgQ29udGFpbmVyTm9uZSB9OwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbSlNNYW5hZ2VkVmFsdWUgY2xhc3NdXSkg
ewogICAgICAgICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBbc3RhdGljX2Nhc3Q8SlNNYW5hZ2VkVmFs
dWUgKj4ob2JqZWN0KSB2YWx1ZV07CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAg
ICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzaykgeyBvYmplY3QsIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHRSZWYpLCBDb250YWluZXJOb25lIH07Ci0gICAgICAg
ICAgICByZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIHZhbHVl
LT5tX3ZhbHVlLCBDb250YWluZXJOb25lIH07CisgICAgICAgICAgICAgICAgcmV0dXJuICB7IG9i
amVjdCwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dFJlZiksIENvbnRhaW5lck5vbmUgfTsK
KyAgICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgdmFsdWUtPm1fdmFsdWUsIENvbnRhaW5lck5v
bmUgfTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZl
cnRvcjo6VGFzayl7IG9iamVjdCwgdmFsdWVJbnRlcm5hbFZhbHVlKFtjb250ZXh0IHdyYXBwZXJG
b3JPYmpDT2JqZWN0Om9iamVjdF0pLCBDb250YWluZXJOb25lIH07CisgICAgcmV0dXJuIHsgb2Jq
ZWN0LCB2YWx1ZUludGVybmFsVmFsdWUoW2NvbnRleHQgd3JhcHBlckZvck9iakNPYmplY3Q6b2Jq
ZWN0XSksIENvbnRhaW5lck5vbmUgfTsKIH0KIAogSlNWYWx1ZVJlZiBvYmplY3RUb1ZhbHVlKEpT
Q29udGV4dCAqY29udGV4dCwgaWQgb2JqZWN0KQpAQCAtMTAwMCw3ICsxMDAwLDcgQEAgSlNWYWx1
ZVJlZiBvYmplY3RUb1ZhbHVlKEpTQ29udGV4dCAqY29udGV4dCwgaWQgb2JqZWN0KQogICAgICAg
ICAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gKE5TRGljdGlvbmFyeSAqKWN1cnJlbnQu
b2JqYzsKICAgICAgICAgICAgIGZvciAoaWQga2V5IGluIFtkaWN0aW9uYXJ5IGtleUVudW1lcmF0
b3JdKSB7CiAgICAgICAgICAgICAgICAgaWYgKFtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSkgewotICAgICAgICAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUg
PSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpa2V5KTsKKyAgICAgICAg
ICAgICAgICAgICAgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSk7CiAgICAgICAgICAgICAgICAgICAg
IEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dFJlZiwganMsIHByb3BlcnR5TmFtZSwgY29udmVy
dG9yLmNvbnZlcnQoW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmtleV0pLCAwLCAwKTsKICAgICAg
ICAgICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxN
YWNoaW5lLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1t
CmluZGV4IDFlMjA3OTFiNDVhODg0YmJkYmJjYjJhNDBjYjcyNDkzMGU4YzA3NmIuLmJmYmI2YzEw
ODVmNzllNDIwZmJlYjZlNjdlYTVhZGE2OWVhOTQxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KQEAgLTY5LDEzICs2OSwxMyBAQCBAaW1wbGVt
ZW50YXRpb24gSlNWTVdyYXBwZXJDYWNoZQogKyAodm9pZClhZGRXcmFwcGVyOihKU1ZpcnR1YWxN
YWNoaW5lICopd3JhcHBlciBmb3JKU0NvbnRleHRHcm91cFJlZjooSlNDb250ZXh0R3JvdXBSZWYp
Z3JvdXAKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh3cmFwcGVyQ2FjaGVNdXRl
eCk7Ci0gICAgTlNNYXBJbnNlcnQod3JhcHBlckNhY2hlKCksIGdyb3VwLCB3cmFwcGVyKTsKKyAg
ICBOU01hcEluc2VydCh3cmFwcGVyQ2FjaGUoKSwgZ3JvdXAsIChfX2JyaWRnZSB2b2lkKil3cmFw
cGVyKTsKIH0KIAogKyAoSlNWaXJ0dWFsTWFjaGluZSAqKXdyYXBwZXJGb3JKU0NvbnRleHRHcm91
cFJlZjooSlNDb250ZXh0R3JvdXBSZWYpZ3JvdXAKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayh3cmFwcGVyQ2FjaGVNdXRleCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTVmly
dHVhbE1hY2hpbmUgKj4oTlNNYXBHZXQod3JhcHBlckNhY2hlKCksIGdyb3VwKSk7CisgICAgcmV0
dXJuIChfX2JyaWRnZSBKU1ZpcnR1YWxNYWNoaW5lICopTlNNYXBHZXQod3JhcHBlckNhY2hlKCks
IGdyb3VwKTsKIH0KIAogQGVuZApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyBpZCBnZXRJbnRl
cm5hbE9iamNPYmplY3QoaWQgb2JqZWN0KQogLSAoYm9vbClpc09sZEV4dGVybmFsT2JqZWN0Oihp
ZClvYmplY3QKIHsKICAgICBKU0M6OlZNKiB2bSA9IHRvSlMobV9ncm91cCk7Ci0gICAgcmV0dXJu
IHZtLT5oZWFwLmNvbGxlY3RvclNsb3RWaXNpdG9yKCkuY29udGFpbnNPcGFxdWVSb290KG9iamVj
dCk7CisgICAgcmV0dXJuIHZtLT5oZWFwLmNvbGxlY3RvclNsb3RWaXNpdG9yKCkuY29udGFpbnNP
cGFxdWVSb290KChfX2JyaWRnZSB2b2lkKilvYmplY3QpOwogfQogCiAtICh2b2lkKWFkZEV4dGVy
bmFsUmVtZW1iZXJlZE9iamVjdDooaWQpb2JqZWN0CkBAIC0xODYsMTEgKzE4NiwxMCBAQCAtICh2
b2lkKWFkZE1hbmFnZWRSZWZlcmVuY2U6KGlkKW9iamVjdCB3aXRoT3duZXI6KGlkKW93bmVyCiAg
ICAgICAgIG93bmVkT2JqZWN0cyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRp
b25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJPcHRpb25zIGNhcGFjaXR5OjFd
OwogCiAgICAgICAgIFttX2V4dGVybmFsT2JqZWN0R3JhcGggc2V0T2JqZWN0Om93bmVkT2JqZWN0
cyBmb3JLZXk6b3duZXJdOwotICAgICAgICBbb3duZWRPYmplY3RzIHJlbGVhc2VdOwogICAgIH0K
IAotICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdldChv
d25lZE9iamVjdHMsIG9iamVjdCkpOwotICAgIE5TTWFwSW5zZXJ0KG93bmVkT2JqZWN0cywgb2Jq
ZWN0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCArIDEpKTsKKyAgICBzaXplX3QgY291
bnQgPSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQob3duZWRPYmplY3RzLCAoX19i
cmlkZ2Ugdm9pZCopb2JqZWN0KSk7CisgICAgTlNNYXBJbnNlcnQob3duZWRPYmplY3RzLCAoX19i
cmlkZ2Ugdm9pZCopb2JqZWN0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCArIDEpKTsK
IH0KIAogLSAodm9pZClyZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3Qgd2l0aE93bmVy
OihpZClvd25lcgpAQCAtMjExLDE0ICsyMTAsMTQgQEAgLSAodm9pZClyZW1vdmVNYW5hZ2VkUmVm
ZXJlbmNlOihpZClvYmplY3Qgd2l0aE93bmVyOihpZClvd25lcgogICAgIGlmICghb3duZWRPYmpl
Y3RzKQogICAgICAgICByZXR1cm47CiAgICAKLSAgICBzaXplX3QgY291bnQgPSByZWludGVycHJl
dF9jYXN0PHNpemVfdD4oTlNNYXBHZXQob3duZWRPYmplY3RzLCBvYmplY3QpKTsKKyAgICBzaXpl
X3QgY291bnQgPSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQob3duZWRPYmplY3Rz
LCAoX19icmlkZ2Ugdm9pZCopb2JqZWN0KSk7CiAgICAgaWYgKGNvdW50ID4gMSkgewotICAgICAg
ICBOU01hcEluc2VydChvd25lZE9iamVjdHMsIG9iamVjdCwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oY291bnQgLSAxKSk7CisgICAgICAgIE5TTWFwSW5zZXJ0KG93bmVkT2JqZWN0cywgKF9fYnJp
ZGdlIHZvaWQqKW9iamVjdCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY291bnQgLSAxKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgaWYgKGNvdW50ID09IDEpCi0gICAgICAg
IE5TTWFwUmVtb3ZlKG93bmVkT2JqZWN0cywgb2JqZWN0KTsKKyAgICAgICAgTlNNYXBSZW1vdmUo
b3duZWRPYmplY3RzLCAoX19icmlkZ2Ugdm9pZCopb2JqZWN0KTsKIAogICAgIGlmICghW293bmVk
T2JqZWN0cyBjb3VudF0pIHsKICAgICAgICAgW21fZXh0ZXJuYWxPYmplY3RHcmFwaCByZW1vdmVP
YmplY3RGb3JLZXk6b3duZXJdOwpAQCAtMjQ1LDEyICsyNDQsMTIgQEAgKyAoSlNWaXJ0dWFsTWFj
aGluZSAqKXZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjooSlNDb250ZXh0R3JvdXBS
ZWYpZ3JvdXAKIAogLSAoSlNDb250ZXh0ICopY29udGV4dEZvckdsb2JhbENvbnRleHRSZWY6KEpT
R2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEpTQ29udGV4dCAqPihOU01hcEdldChtX2NvbnRleHRDYWNoZSwgZ2xvYmFsQ29udGV4dCkpOwor
ICAgIHJldHVybiAoX19icmlkZ2UgSlNDb250ZXh0ICopTlNNYXBHZXQobV9jb250ZXh0Q2FjaGUs
IGdsb2JhbENvbnRleHQpOwogfQogCiAtICh2b2lkKWFkZENvbnRleHQ6KEpTQ29udGV4dCAqKXdy
YXBwZXIgZm9yR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRl
eHQKIHsKLSAgICBOU01hcEluc2VydChtX2NvbnRleHRDYWNoZSwgZ2xvYmFsQ29udGV4dCwgd3Jh
cHBlcik7CisgICAgTlNNYXBJbnNlcnQobV9jb250ZXh0Q2FjaGUsIGdsb2JhbENvbnRleHQsIChf
X2JyaWRnZSB2b2lkKil3cmFwcGVyKTsKIH0KIAogLSAoTG9jayYpZXh0ZXJuYWxEYXRhTXV0ZXgK
QEAgLTI5NCw5ICsyOTMsOSBAQCBzdGF0aWMgdm9pZCBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaChK
U0M6OlZNJiB2bSwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvciwgdm9pZAogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvIGFwcGVuZE93bmVkT2JqZWN0cyA9IFsm
XSB7Ci0gICAgICAgICAgICAgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW2V4dGVybmFs
T2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5OnN0YXRpY19jYXN0PGlkPihuZXh0Um9vdCldOworICAg
ICAgICAgICAgICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFtleHRlcm5hbE9iamVjdEdy
YXBoIG9iamVjdEZvcktleTooX19icmlkZ2UgaWQpbmV4dFJvb3RdOwogICAgICAgICAgICAgICAg
IGZvciAoaWQgb3duZWRPYmplY3QgaW4gb3duZWRPYmplY3RzKQotICAgICAgICAgICAgICAgICAg
ICBzdGFjay5hcHBlbmQoc3RhdGljX2Nhc3Q8dm9pZCo+KG93bmVkT2JqZWN0KSk7CisgICAgICAg
ICAgICAgICAgICAgIHN0YWNrLmFwcGVuZCgoX19icmlkZ2Ugdm9pZCopb3duZWRPYmplY3QpOwog
ICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgaWYgKGxvY2tBY3F1aXJlZCkKQEAgLTMyOSw3
ICszMjgsNyBAQCB2b2lkIHNjYW5FeHRlcm5hbFJlbWVtYmVyZWRTZXQoSlNDOjpWTSYgdm0sIEpT
Qzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgICAgICBOU01hcFRhYmxlICpvd25lZE9i
amVjdHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6a2V5XTsKICAgICAgICAg
ICAgIGJvb2wgbG9ja0FjcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAoaWQgb3duZWRP
YmplY3QgaW4gb3duZWRPYmplY3RzKQotICAgICAgICAgICAgICAgIHNjYW5FeHRlcm5hbE9iamVj
dEdyYXBoKHZtLCB2aXNpdG9yLCBvd25lZE9iamVjdCwgbG9ja0FjcXVpcmVkKTsKKyAgICAgICAg
ICAgICAgICBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCh2bSwgdmlzaXRvciwgKF9fYnJpZGdlIHZv
aWQqKW93bmVkT2JqZWN0LCBsb2NrQWNxdWlyZWQpOwogICAgICAgICB9CiAgICAgICAgIFtleHRl
cm5hbFJlbWVtYmVyZWRTZXQgcmVtb3ZlQWxsT2JqZWN0c107CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCAwMTk5MjNhYzk2MTBkZWQxNDQwNDBj
MDRjZDczNzI2YTJkM2QzYWZlLi45MWEyMTI5YzZiZjVhYWFlMWQyYTA2NDM1Zjk1NWY5MWI4YTE2
NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQpAQCAtMTI1
LDcgKzEyNSw3IEBAIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBtYWtlV3JhcHBlcihKU0NvbnRleHRS
ZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIGlkIHdyYXBwCiAKICAgICBBU1NFUlQoanNDbGFz
cyk7CiAgICAgSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Piog
b2JqZWN0ID0gSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pjo6
Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpLCBqc0NsYXNzLCAwKTsK
LSAgICBvYmplY3QtPnNldFdyYXBwZWRPYmplY3Qod3JhcHBlZE9iamVjdCk7CisgICAgb2JqZWN0
LT5zZXRXcmFwcGVkT2JqZWN0KChfX2JyaWRnZSB2b2lkKil3cmFwcGVkT2JqZWN0KTsKICAgICBp
ZiAoSlNDOjpKU09iamVjdCogcHJvdG90eXBlID0ganNDbGFzcy0+cHJvdG90eXBlKGV4ZWMpKQog
ICAgICAgICBvYmplY3QtPnNldFByb3RvdHlwZURpcmVjdCh2bSwgcHJvdG90eXBlKTsKIApAQCAt
NTI0LDggKzUyNCw4IEBAIC0gKEpTQzo6SlNPYmplY3QqKXdyYXBwZXJGb3JPYmplY3Q6KGlkKW9i
amVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKICAgICBKU0M6OlZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIEpTQzo6
SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD4qIHdyYXBwZXIgPSBKU0M6
OkpTQ2FsbGJhY2tPYmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+OjpjcmVhdGUoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUsIG1fY2xhc3NSZWYsIDApOwot
ICAgIHdyYXBwZXItPnNldFdyYXBwZWRPYmplY3Qob2JqZWN0KTsKKyAgICBhdXRvIHdyYXBwZXIg
PSBKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+OjpjcmVhdGUo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUsIG1fY2xhc3NSZWYs
IDApOworICAgIHdyYXBwZXItPnNldFdyYXBwZWRPYmplY3QoKF9fYnJpZGdlIHZvaWQqKW9iamVj
dCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTY0NCwxMCArNjQ0LDEwIEBAIC0gKEpT
VmFsdWUgKilqc1dyYXBwZXJGb3JPYmplY3Q6KGlkKW9iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4
dCAqKWNvbnRleHQKIC0gKEpTVmFsdWUgKilvYmpjV3JhcHBlckZvckpTVmFsdWVSZWY6KEpTVmFs
dWVSZWYpdmFsdWUgaW5Db250ZXh0OmNvbnRleHQKIHsKICAgICBBU1NFUlQodG9KU0dsb2JhbE9i
amVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKS0+d3JhcHBlck1hcCgpID09IHNlbGYp
OwotICAgIEpTVmFsdWUgKndyYXBwZXIgPSBzdGF0aWNfY2FzdDxKU1ZhbHVlICo+KE5TTWFwR2V0
KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1ZSkpOworICAgIEpTVmFsdWUgKndyYXBwZXIgPSAo
X19icmlkZ2UgSlNWYWx1ZSAqKU5TTWFwR2V0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1ZSk7
CiAgICAgaWYgKCF3cmFwcGVyKSB7CiAgICAgICAgIHdyYXBwZXIgPSBbW1tKU1ZhbHVlIGFsbG9j
XSBpbml0V2l0aFZhbHVlOnZhbHVlIGluQ29udGV4dDpjb250ZXh0XSBhdXRvcmVsZWFzZV07Ci0g
ICAgICAgIE5TTWFwSW5zZXJ0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1ZSwgd3JhcHBlcik7
CisgICAgICAgIE5TTWFwSW5zZXJ0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1ZSwgKF9fYnJp
ZGdlIHZvaWQqKXdyYXBwZXIpOwogICAgIH0KICAgICByZXR1cm4gd3JhcHBlcjsKIH0KQEAgLTY2
NCw3ICs2NjQsNyBAQCBpZCB0cnlVbndyYXBPYmpjT2JqZWN0KEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0
b0pTKGNvbnRleHQpKTsKICAgICBKU0M6OlZNJiB2bSA9IHRvSlMoY29udGV4dCktPnZtKCk7CiAg
ICAgaWYgKHRvSlMob2JqZWN0KS0+aW5oZXJpdHM8SlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6
SlNBUElXcmFwcGVyT2JqZWN0Pj4odm0pKQotICAgICAgICByZXR1cm4gKGlkKUpTQzo6anNDYXN0
PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4odG9KUyhvYmplY3QpKS0+d3JhcHBlZE9iamVjdCgp
OworICAgICAgICByZXR1cm4gKF9fYnJpZGdlIGlkKUpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFw
cGVyT2JqZWN0Kj4odG9KUyhvYmplY3QpKS0+d3JhcHBlZE9iamVjdCgpOwogICAgIGlmIChpZCB0
YXJnZXQgPSB0cnlVbndyYXBDb25zdHJ1Y3Rvcigmdm0sIG9iamVjdCkpCiAgICAgICAgIHJldHVy
biB0YXJnZXQ7CiAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4IDg4ODZmZTAzOWZkOWI0NTVjMzRiMzU5
YzFlZTdkMTRhY2Q4NDY0OGUuLmM0ZTczYTg2NmQ2YjYwYjA4ODIzZDc4MjEwNDUwYzkwNWMzZWQ3
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVu
Y3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5j
dGlvbi5tbQpAQCAtNjAzLDcgKzYwMyw3IEBAIHN0YXRpYyBib29sIGJsb2NrU2lnbmF0dXJlQ29u
dGFpbnNDbGFzcygpCiB7CiAgICAgc3RhdGljIGJvb2wgY29udGFpbnNDbGFzcyA9IF57CiAgICAg
ICAgIGlkIGJsb2NrID0gXihOU1N0cmluZyAqc3RyaW5nKXsgcmV0dXJuIHN0cmluZzsgfTsKLSAg
ICAgICAgcmV0dXJuIF9CbG9ja19oYXNfc2lnbmF0dXJlKGJsb2NrKSAmJiBzdHJzdHIoX0Jsb2Nr
X3NpZ25hdHVyZShibG9jayksICJOU1N0cmluZyIpOworICAgICAgICByZXR1cm4gX0Jsb2NrX2hh
c19zaWduYXR1cmUoKF9fYnJpZGdlIHZvaWQqKWJsb2NrKSAmJiBzdHJzdHIoX0Jsb2NrX3NpZ25h
dHVyZSgoX19icmlkZ2Ugdm9pZCopYmxvY2spLCAiTlNTdHJpbmciKTsKICAgICB9KCk7CiAgICAg
cmV0dXJuIGNvbnRhaW5zQ2xhc3M7CiB9CkBAIC02NzcsMTggKzY3NywyMCBAQCBKU09iamVjdFJl
ZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvck1ldGhvZChKU0NvbnRleHQgKmNvbnRleHQsIENsYXNz
IGNscywgUHJvdG9jbwogewogICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtOU0ludm9j
YXRpb24gaW52b2NhdGlvbldpdGhNZXRob2RTaWduYXR1cmU6W05TTWV0aG9kU2lnbmF0dXJlIHNp
Z25hdHVyZVdpdGhPYmpDVHlwZXM6dHlwZXNdXTsKICAgICBbaW52b2NhdGlvbiBzZXRTZWxlY3Rv
cjpzZWxdOwotICAgIC8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSB0YXJnZXQgQ2xhc3MgYmVjYXVz
ZSBtX2ludm9jYXRpb24gZG9lc24ndCByZXRhaW4gaXQgYnkgZGVmYXVsdCAoYW5kIHdlIGRvbid0
IHdhbnQgaXQgdG8pLgotICAgIC8vIEZJWE1FOiBXaGF0IHJlbGVhc2VzIGl0PwotICAgIGlmICgh
aXNJbnN0YW5jZU1ldGhvZCkKLSAgICAgICAgW2ludm9jYXRpb24gc2V0VGFyZ2V0OltjbHMgcmV0
YWluXV07CisgICAgaWYgKCFpc0luc3RhbmNlTWV0aG9kKSB7CisgICAgICAgIFtpbnZvY2F0aW9u
IHNldFRhcmdldDpjbHNdOworICAgICAgICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0aGUgdGFyZ2V0
IENsYXNzIGJlY2F1c2UgbV9pbnZvY2F0aW9uIGRvZXNuJ3QgcmV0YWluIGl0IGJ5IGRlZmF1bHQg
KGFuZCB3ZSBkb24ndCB3YW50IGl0IHRvKS4KKyAgICAgICAgLy8gRklYTUU6IFdoYXQgcmVsZWFz
ZXMgaXQ/CisgICAgICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpY2xzKTsKKyAgICB9
CiAgICAgcmV0dXJuIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbihjb250ZXh0LCBp
bnZvY2F0aW9uLCBpc0luc3RhbmNlTWV0aG9kID8gQ2FsbGJhY2tJbnN0YW5jZU1ldGhvZCA6IENh
bGxiYWNrQ2xhc3NNZXRob2QsIGlzSW5zdGFuY2VNZXRob2QgPyBjbHMgOiBuaWwsIF9wcm90b2Nv
bF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbCwgWUVTLCBpc0luc3RhbmNlTWV0
aG9kKSk7CiB9CiAKIEpTT2JqZWN0UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9yQmxvY2soSlND
b250ZXh0ICpjb250ZXh0LCBpZCB0YXJnZXQpCiB7Ci0gICAgaWYgKCFfQmxvY2tfaGFzX3NpZ25h
dHVyZSh0YXJnZXQpKQorICAgIGlmICghX0Jsb2NrX2hhc19zaWduYXR1cmUoKF9fYnJpZGdlIHZv
aWQqKXRhcmdldCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbnN0IGNoYXIqIHNp
Z25hdHVyZSA9IF9CbG9ja19zaWduYXR1cmUodGFyZ2V0KTsKKyAgICBjb25zdCBjaGFyKiBzaWdu
YXR1cmUgPSBfQmxvY2tfc2lnbmF0dXJlKChfX2JyaWRnZSB2b2lkKil0YXJnZXQpOwogICAgIE5T
SW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtOU0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRo
b2RTaWduYXR1cmU6W05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6c2ln
bmF0dXJlXV07CiAKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHVzZSAtcmV0YWluQXJndW1lbnRz
IGJlY2F1c2UgdGhhdCBsZWFrcyBtZW1vcnkuIEFyZ3VtZW50cyAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaAppbmRleCAyZDdkYjY2MTkyNTdhNjlkMTgx
YWM5Zjc5NjBlYTM5OGFjZDk2OTA3Li4yMGQ4Yjg1ODQ3YTU1M2EzM2NkZmMxM2Y1MmVjNmE0ZDk1
MmY4YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iamNSdW50aW1l
RXh0cmFzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVudGltZUV4dHJh
cy5oCkBAIC00MCw3ICs0MCw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8VCwgV1RGOjpTeXN0
ZW1GcmVlPFQ+PiBhZG9wdFN5c3RlbShVIHZhbHVlKQogaW5saW5lIGJvb2wgcHJvdG9jb2xJbXBs
ZW1lbnRzUHJvdG9jb2woUHJvdG9jb2wgKmNhbmRpZGF0ZSwgUHJvdG9jb2wgKnRhcmdldCkKIHsK
ICAgICB1bnNpZ25lZCBwcm90b2NvbFByb3RvY29sc0NvdW50OwotICAgIGF1dG8gcHJvdG9jb2xQ
cm90b2NvbHMgPSBhZG9wdFN5c3RlbTxQcm90b2NvbCpbXT4ocHJvdG9jb2xfY29weVByb3RvY29s
TGlzdChjYW5kaWRhdGUsICZwcm90b2NvbFByb3RvY29sc0NvdW50KSk7CisgICAgYXV0byBwcm90
b2NvbFByb3RvY29scyA9IGFkb3B0U3lzdGVtPF9fdW5zYWZlX3VucmV0YWluZWQgUHJvdG9jb2wq
W10+KHByb3RvY29sX2NvcHlQcm90b2NvbExpc3QoY2FuZGlkYXRlLCAmcHJvdG9jb2xQcm90b2Nv
bHNDb3VudCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm90b2NvbFByb3RvY29s
c0NvdW50OyArK2kpIHsKICAgICAgICAgaWYgKHByb3RvY29sX2lzRXF1YWwocHJvdG9jb2xQcm90
b2NvbHNbaV0sIHRhcmdldCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU5LDcgKzU5
LDcgQEAgaW5saW5lIHZvaWQgZm9yRWFjaFByb3RvY29sSW1wbGVtZW50aW5nUHJvdG9jb2woQ2xh
c3MgY2xzLCBQcm90b2NvbCAqdGFyZ2V0LCB2b2kKICAgICAvLyBJbml0aWFsbHkgZmlsbCB0aGUg
d29ya2xpc3Qgd2l0aCB0aGUgQ2xhc3MncyBwcm90b2NvbHMuCiAgICAgewogICAgICAgICB1bnNp
Z25lZCBwcm90b2NvbHNDb3VudDsKLSAgICAgICAgYXV0byBwcm90b2NvbHMgPSBhZG9wdFN5c3Rl
bTxQcm90b2NvbCpbXT4oY2xhc3NfY29weVByb3RvY29sTGlzdChjbHMsICZwcm90b2NvbHNDb3Vu
dCkpOworICAgICAgICBhdXRvIHByb3RvY29scyA9IGFkb3B0U3lzdGVtPF9fdW5zYWZlX3VucmV0
YWluZWQgUHJvdG9jb2wqW10+KGNsYXNzX2NvcHlQcm90b2NvbExpc3QoY2xzLCAmcHJvdG9jb2xz
Q291bnQpKTsKICAgICAgICAgd29ya2xpc3QuYXBwZW5kKHByb3RvY29scy5nZXQoKSwgcHJvdG9j
b2xzQ291bnQpOwogICAgIH0KIApAQCAtNjksNyArNjksNyBAQCBpbmxpbmUgdm9pZCBmb3JFYWNo
UHJvdG9jb2xJbXBsZW1lbnRpbmdQcm90b2NvbChDbGFzcyBjbHMsIFByb3RvY29sICp0YXJnZXQs
IHZvaQogICAgICAgICB3b3JrbGlzdC5yZW1vdmVMYXN0KCk7CiAKICAgICAgICAgLy8gQXJlIHdl
IGVuY291bnRlcmluZyB0aGlzIFByb3RvY29sIGZvciB0aGUgZmlyc3QgdGltZT8KLSAgICAgICAg
aWYgKCF2aXNpdGVkLmFkZChwcm90b2NvbCkuaXNOZXdFbnRyeSkKKyAgICAgICAgaWYgKCF2aXNp
dGVkLmFkZCgoX19icmlkZ2Ugdm9pZCopcHJvdG9jb2wpLmlzTmV3RW50cnkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICAvLyBJZiBpdCBpbXBsZW1lbnRzIHRoZSBwcm90b2NvbCwg
bWFrZSB0aGUgY2FsbGJhY2suCkBAIC04Miw3ICs4Miw3IEBAIGlubGluZSB2b2lkIGZvckVhY2hQ
cm90b2NvbEltcGxlbWVudGluZ1Byb3RvY29sKENsYXNzIGNscywgUHJvdG9jb2wgKnRhcmdldCwg
dm9pCiAgICAgICAgIC8vIEFkZCBpbmNvcnBvcmF0ZWQgcHJvdG9jb2xzIHRvIHRoZSB3b3JrbGlz
dC4KICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgcHJvdG9jb2xzQ291bnQ7Ci0gICAg
ICAgICAgICBhdXRvIHByb3RvY29scyA9IGFkb3B0U3lzdGVtPFByb3RvY29sKltdPihwcm90b2Nv
bF9jb3B5UHJvdG9jb2xMaXN0KHByb3RvY29sLCAmcHJvdG9jb2xzQ291bnQpKTsKKyAgICAgICAg
ICAgIGF1dG8gcHJvdG9jb2xzID0gYWRvcHRTeXN0ZW08X191bnNhZmVfdW5yZXRhaW5lZCBQcm90
b2NvbCpbXT4ocHJvdG9jb2xfY29weVByb3RvY29sTGlzdChwcm90b2NvbCwgJnByb3RvY29sc0Nv
dW50KSk7CiAgICAgICAgICAgICB3b3JrbGlzdC5hcHBlbmQocHJvdG9jb2xzLmdldCgpLCBwcm90
b2NvbHNDb3VudCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3Bl
Y3RvckNvY29hLm1tCmluZGV4IDFiYzQ0NDEyY2IwNjcxNzk3OWRhNDIwNDljOWZhZmNkMzcwNTJh
ODcuLjYxODgwNjk3MzlhNzI3Mjc0ZmZiNDkwYTZhNzg3YTkyODJiMjI3NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3Bl
Y3RvckNvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCkBAIC01OSwxNSArNTksMTQgQEAKICAgICAg
ICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgfSB3aGlsZSAoMCk7CiAKLSNkZWZpbmUgQ09OVkVSVF9OU05VTExfVE9fTklMKGV4
cHIpICAgICAgICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgaWYgKFtleHByIGlzRXF1YWw6W05TTnVsbCBudWxsXV0pICAgIFwKLSAg
ICAgICAgICAgIGV4cHIgPSBuaWw7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxl
ICgwKTsKLQotCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorc3RhdGljIHZvaWQgY29udmVydE5T
TnVsbFRvTmlsKF9fc3Ryb25nIE5TTnVtYmVyIComIG51bWJlcikKK3sKKyAgICBpZiAoW251bWJl
ciBpc0VxdWFsOltOU051bGwgbnVsbF1dKQorICAgICAgICBudW1iZXIgPSBuaWw7Cit9CisKIHN0
YXRpYyBib29sIGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0KCkKIHsKICAgICByZXR1cm4g
IXNhbmRib3hfY2hlY2soZ2V0cGlkKCksICJtYWNoLWxvb2t1cCIsIHN0YXRpY19jYXN0PGVudW0g
c2FuZGJveF9maWx0ZXJfdHlwZT4oU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgfCBTQU5EQk9Y
X0NIRUNLX05PX1JFUE9SVCksIFdJUlhQQ01hY2hQb3J0TmFtZSk7CkBAIC00OTEsNyArNDkwLDcg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFy
eSAqdXNlckluZm8pCiAgICAgQkFJTF9JRl9VTkVYUEVDVEVEX1RZUEUoc2VuZGVyLCBbTlNTdHJp
bmcgY2xhc3NdKTsKIAogICAgIE5TTnVtYmVyICphdXRvbWF0aWNhbGx5UGF1c2VOdW1iZXIgPSB1
c2VySW5mb1tXSVJBdXRvbWF0aWNhbGx5UGF1c2VdOwotICAgIENPTlZFUlRfTlNOVUxMX1RPX05J
TChhdXRvbWF0aWNhbGx5UGF1c2VOdW1iZXIpOworICAgIGNvbnZlcnROU051bGxUb05pbChhdXRv
bWF0aWNhbGx5UGF1c2VOdW1iZXIpOwogICAgIEJBSUxfSUZfVU5FWFBFQ1RFRF9UWVBFX0FMTE9X
SU5HX05JTChhdXRvbWF0aWNhbGx5UGF1c2VOdW1iZXIsIFtOU051bWJlciBjbGFzc10pOwogICAg
IEJPT0wgYXV0b21hdGljYWxseVBhdXNlID0gYXV0b21hdGljYWxseVBhdXNlTnVtYmVyLmJvb2xW
YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW0KaW5kZXggY2VhNmM5YzFhZjFlNjAxMDJhMTIzNDVlY2Y5ODY5OTQzNTZiMGUzMi4uNzUz
YWM0YThjYzBkOWJkMzBlZDU4OGZiYThjYTMwYTc4Mjk2NmNkMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0zNCwzNiArMzQsMTEg
QEAKICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjaW1w
b3J0IDx3dGYvc3BpL2NvY29hL0NGWFBDQnJpZGdlU1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Nv
Y29hL1NlY3VyaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KIAot
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRlhQ
Q0JyaWRnZS5oPgotI2Vsc2UKLWV4dGVybiAiQyIgewotICAgIHhwY19vYmplY3RfdCBfQ0ZYUEND
cmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KENGVHlwZVJlZik7Ci0gICAgQ0ZUeXBlUmVmIF9D
RlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVjdF90KTsKLX0KLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIGJvb2wgYXVkaXRUb2tlbkhhc0VudGl0bGVt
ZW50KGF1ZGl0X3Rva2VuX3QgdG9rZW4sIE5TU3RyaW5nICplbnRpdGxlbWVudCkKLXsKLSAgICBh
dXRvIHRhc2sgPSBhZG9wdENGKFNlY1Rhc2tDcmVhdGVXaXRoQXVkaXRUb2tlbihrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCB0b2tlbikpOwotICAgIGlmICghdGFzaykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgYXV0byB2YWx1ZSA9IGFkb3B0Q0YoU2VjVGFza0NvcHlWYWx1ZUZvckVudGl0bGVt
ZW50KHRhc2suZ2V0KCksIChDRlN0cmluZ1JlZillbnRpdGxlbWVudCwgbnVsbHB0cikpOwotICAg
IGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChDRkdldFR5cGVJ
RCh2YWx1ZS5nZXQoKSkgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiBDRkJvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkJvb2xl
YW5SZWY+KHZhbHVlLmdldCgpKSk7Ci19Ci0jZW5kaWYKLQogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKIC8vIENvbnN0YW50cyBwcml2YXRlIHRvIHRoaXMgZmlsZSBmb3IgbWVzc2FnZSBzZXJpYWxp
emF0aW9uIG9uIGJvdGggZW5kcy4KQEAgLTE3Myw3ICsxNDgsNyBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3QpCiAgICAg
aWYgKCFtX3ZhbGlkYXRlZCkgewogICAgICAgICBhdWRpdF90b2tlbl90IHRva2VuOwogICAgICAg
ICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4obV9jb25uZWN0aW9uLCAmdG9rZW4pOwot
ICAgICAgICBpZiAoIWF1ZGl0VG9rZW5IYXNFbnRpdGxlbWVudCh0b2tlbiwgQCJjb20uYXBwbGUu
cHJpdmF0ZS53ZWJpbnNwZWN0b3Iud2ViaW5zcGVjdG9yZCIpKSB7CisgICAgICAgIGlmICghV1RG
OjpoYXNFbnRpdGxlbWVudCh0b2tlbiwgImNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci53
ZWJpbnNwZWN0b3JkIikpIHsKICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KG1fbXV0ZXgpOwogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBD
X0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVz
LgogICAgICAgICAgICAgY2xvc2VPblF1ZXVlKCk7CkBAIC0yMTEsNyArMTg2LDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShOU1N0cmluZyAqbWVzc2Fn
ZU5hbWUsIE5TRGljdGlvbmEKICAgICBpZiAodXNlckluZm8pCiAgICAgICAgIFtkaWN0aW9uYXJ5
IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVz
ZXJJbmZvS2V5XTsKIAotICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0gX0NGWFBDQ3Jl
YXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoQ0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0
KCkpOworICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVz
c2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkuZ2V0
KCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5
cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJp
YWxpemUgeHBjIG1lc3NhZ2UiKTsKICAgICBpZiAoIXhwY0RpY3Rpb25hcnkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRlZjY3
ZTBkNDI0YmEzMmZlYzY1ZjU3MmQ2MzlmODRlOGM3NDNmZTEuLjM1YzkxZmQ4MjBkZTVhM2VkMTcz
MmZiOTllZGUzOGYzMzZjY2NhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDQsNyArNDQsNyBAQAogCQkwRkVDM0M1RTFGMzY4QTk3MDBGNTlCNkMgLyog
UmVhZFdyaXRlTG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkVDM0M1QzFGMzY4QTk3MDBGNTlCNkMgLyogUmVhZFdyaXRlTG9jay5jcHAgKi87
IH07CiAJCTBGRkYxOURDMUJCMzM0RUIwMDg4NkQ5MSAvKiBQYXJhbGxlbEhlbHBlclBvb2wuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRjE5REEx
QkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAgKi87IH07CiAJCTE0MDIy
RjQxMThGNUMzRkMwMDdGRjBFQiAvKiBsaWJibWFsbG9jLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAyMkY0MDE4RjVDM0ZDMDA3RkYwRUIgLyog
bGliYm1hbGxvYy5hICovOyB9OwotCQkxNDNEREU5NjIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRs
ZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0M0RERTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMuY3BwICovOyB9OworCQkx
NDNEREU5NjIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRERFOTUyMEM4QkMzNzAwN0Y3NkZB
IC8qIEVudGl0bGVtZW50cy5tbSAqLzsgfTsKIAkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8q
IFJBTVNpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovOyB9OwogCQkxNDQ3
QUVDNjE4RkNFNTc3MDBCM0Q3RkYgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQ3QUVDNTE4RkNFNTc3MDBC
M0Q3RkYgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTE0NDdBRUM3MThGQ0U1ODAw
MEIzRDdGRiAvKiBsaWJXVEYuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLzsgfTsK
QEAgLTE0MSw2ICsxNDEsNyBAQAogCQlDMkJDRkM0MDFGNjFEMTMwMDBDOTIyMkMgLyogTGFuZ3Vh
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJC
Q0ZDM0UxRjYxRDEzMDAwQzkyMjJDIC8qIExhbmd1YWdlLmNwcCAqLzsgfTsKIAkJQzJCQ0ZDNDIx
RjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJCQ0ZDNDExRjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1
YWdlQ0YuY3BwICovOyB9OwogCQlDMkJDRkM1NTFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGlu
Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkJD
RkM1MzFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGluZy5jcHAgKi87IH07CisJCUM4MDVFRjM5
RTVGMTQ0ODFBOTZEMzlGQyAvKiBBU0NJSUxpdGVyYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGMDUwNzkwRDlDNDMyQTk5MDg1RTc1IC8qIEFT
Q0lJTGl0ZXJhbC5jcHAgKi87IH07CiAJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRp
YVRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi87IH07CiAJCURDRUUy
MjAxMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENFRTIxRkQxQ0VBNzU1MTAwMEMy
Mzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gKi87IH07CiAJCUUxNTU1NkY1MThBMENDMTgw
MDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBD
cnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLzsgfTsKQEAgLTE1NSw3ICsxNTYsNiBAQAogCQlG
RTA1RkFGRjFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGRTFGRTUwMDc1MDAwOTMy
MzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi87IH07CiAJCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVE
QSAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogUG9pc29uZWQuY3BwICovOyB9Owog
CQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2
MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07Ci0JCUM4MDVFRjM5RTVGMTQ0ODFBOTZEMzlGQyAv
KiBBU0NJSUxpdGVyYWwuY3BwIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNkYwNTA3OTBEOUM0MzJBOTkwODVFNzUgLyogQVNDSUlMaXRlcmFsLmNwcCAq
LzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250
YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMjcwLDcgKzI3MCw3IEBACiAJCTBGRkYxOURC
MUJCMzM0RUIwMDg4NkQ5MSAvKiBQYXJhbGxlbEhlbHBlclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFyYWxsZWxIZWxwZXJQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTEzMjc0MzkyNEZDNTRFNDY5RjVBOEU2RSAvKiBTdGRVbm9yZGVyZWRTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RkVW5vcmRlcmVkU2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDIyRjQwMThGNUMzRkMwMDdGRjBFQiAvKiBs
aWJibWFsbG9jLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBhcmNoaXZlLmFyOyBwYXRoID0gbGliYm1hbGxvYy5hOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwotCQkxNDNEREU5NTIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1l
bnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVudGl0bGVtZW50
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0M0RERTk1MjBDOEJDMzcwMDdG
NzZGQSAvKiBFbnRpdGxlbWVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBFbnRpdGxlbWVudHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
M0RERTk3MjBDOEJFOTkwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRW50aXRsZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJBTVNpemUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSQU1TaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMTYsNyArMzE2LDcgQEAKIAkJMUMxODFDOTUxRDMwODAwQTAwRjVGQTE2
IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVQ29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NEQjE0OTFFNTY2NjI2MDA2Qzcz
QzAgLyogVGV4dEJyZWFrSXRlcmF0b3JDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXh0QnJlYWtJdGVyYXRvckNGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDQ0RCMTREMUU1NjY4OTgwMDZDNzNDMCAvKiBUZXh0QnJlYWtJdGVyYXRvcklDVS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvcklDVS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0NEQjE1MTFFNTY2QkM1MDA2QzczQzAgLyogQ0ZT
dHJpbmdTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ0ZTdHJpbmdTUEku
aDsgcGF0aCA9IGNmL0NGU3RyaW5nU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDQ0RCMTUxMUU1NjZCQzUwMDZDNzNDMCAvKiBDRlN0cmluZ1NQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDRlN0cmluZ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxRkE0N0M4ODE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVGhyZWFkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBNDdDODkxNTI1MDJEQTAwNTY4RDFCIC8qIFdl
YkNvcmVUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVRo
cmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNEYxQjI0ODYxOUY0MTIyOTZE
MUMxOUMgLyogUmFuZG9tRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJhbmRvbURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzMxLDYgKzMz
MSw3IEBACiAJCTMxMzdFMUQ3REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTNFREVDOTc3OEU0OUM5QkVBOTFDRkMgLyogU3RhY2tUcmFjZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1RyYWNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdDN0NDMjkxRUE0MEE3MzAwN0JEOTU2IC8qIFdlYWtM
aW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtMaW5raW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM4MjAyOUUyNDZDODRCMDA5OUZENjc2NCAv
KiBBU0NJSUxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVNDSUlM
aXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM5MUJENkJBNEQxNjRGRDI5
NEY5QTkzRCAvKiBTdGRNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rk
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0ZFOEY1MUY4RDJFQUIwMEY2
RDdENyAvKiBDYWxsYmFja0FnZ3JlZ2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FsbGJhY2tBZ2dyZWdhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzMEI0Nzg3MUFBQUFDMUEwMDEyMjNEQSAvKiBTdHJpbmdDb21tb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00MDUsNiArNDA2LDcgQEAKIAkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8q
IFR5cGVDYXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlQ2FzdHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIy
IC8qIFJlZkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291
bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNENjMxOTFGQ0I2QUI5MDAz
MkVDRDYgLyogU3RyaW5nSGFzaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0cmluZ0hhc2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Mzg0QjczRTIw
REVBMjg0MDA1QjczQjIgLyogQ0ZYUENCcmlkZ2VTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0ZYUENC
cmlkZ2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MzRCRDIxOEExRThD
MzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFN0cmluZ1ZpZXdDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdWaWV3Q0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FDOTFBNzE4OTQyRkM0MDAyNDQ5MzkgLyogTENo
YXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTENoYXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5OSw2ICs2MDEsNyBAQAogCQlDMkJDRkM1MzFGNjIxRjNG
MDBDOTIyMkMgLyogTGluZUVuZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBMaW5lRW5kaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJC
Q0ZDNTQxRjYyMUYzRjAwQzkyMjJDIC8qIExpbmVFbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTGluZUVuZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDNEY4QTkzNjE5QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3B3YXRjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDNkYwNTA3OTBEOUM0MzJBOTkwODVFNzUgLyogQVNDSUlMaXRlcmFsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFTQ0lJTGl0ZXJhbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBSYW5kb21E
ZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFuZG9tRGV2
aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NDk3QUExNTg1N0QwMzAw
QjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYVRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0OTdB
QjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjA2
LDcgKzYwOSw3IEBACiAJCUNENzYwMEZGMUY5MEEzQ0EwMDAyNkUyNiAvKiBVbnNhZmVQb2ludGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVuc2FmZVBvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNNYXBUYWJsZVNQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTczRTAyNDE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQQ1NQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlEQ0VFMjFGQTFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ0ZCdW5kbGVTUEkuaDsgcGF0aCA9
IGNmL0NGQnVuZGxlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDRUUyMUZB
MUNFQTc1MzgwMDBDMjM5NiAvKiBDRkJ1bmRsZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
Q0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja09iakNFeGNlcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09i
akNFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QmxvY2tPYmpDRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENF
RTIyMDQxQ0VCOTg2OTAwMEMyMzk2IC8qIEJhY2t3YXJkc0dyYXBoLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2t3YXJkc0dyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NDgsOCArNjUxLDYgQEAKIAkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8q
IFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tTdGF0
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUYyOTVCRjIwQjQ5RENCMDBDRjI4
M0EgLyogVVRGOENvbnZlcnNpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVVEY4Q29udmVyc2lvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZGMEE0MzY1ODg5NTRGM0NCMDdEQkVDQSAvKiBTdGRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0ZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzgyMDI5RTI0NkM4NEIwMDk5RkQ2NzY0IC8qIEFTQ0lJTGl0ZXJhbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBU0NJSUxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzZGMDUwNzkwRDlDNDMyQTk5MDg1RTc1IC8qIEFTQ0lJTGl0ZXJhbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBU0NJSUxpdGVyYWwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0xMjcx
LDYgKzEyNzIsNyBAQAogCQlDRTQ2NTE2QzE5REIxRkI0MDAzRUNBMDUgLyogY29jb2EgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTkzODRCNzNFMjBERUEy
ODQwMDVCNzNCMiAvKiBDRlhQQ0JyaWRnZVNQSS5oICovLAogCQkJCTkzRDE5MUNGMjBDQUVDRTgw
MEM1MUI4RSAvKiBGb3VuZGF0aW9uU1BJLmggKi8sCiAJCQkJQ0U0NjUxNkQxOURCMUZCNDAwM0VD
QTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLywKIAkJCQlBNTA5OEIwMTFDMTZBNEY5MDAwODc3OTcg
LyogU2VjdXJpdHlTUEkuaCAqLywKQEAgLTEzMDUsNyArMTMwNyw3IEBACiAJCQkJRENFRTIxRkEx
Q0VBNzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmggKi8sCiAJCQkJMUNDREIxNTExRTU2NkJD
NTAwNkM3M0MwIC8qIENGU3RyaW5nU1BJLmggKi8sCiAJCQkpOwotCQkJbmFtZSA9IGNmOworCQkJ
cGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJRTQzQTQ2ODUx
RTIyOEI1NzAwMjc2QjA1IC8qIHBlcnNpc3RlbmNlICovID0gewpAQCAtMTMyNyw4ICsxMzI5LDgg
QEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTE0Njk0MTlCMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRv
ZHJhaW5lZFBvb2wuY3BwICovLAogCQkJCUUzOEM0MTI0MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVU
aW1lQ29jb2EuY3BwICovLAotCQkJCTE0M0RERTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxl
bWVudHMuY3BwICovLAogCQkJCTE0M0RERTk3MjBDOEJFOTkwMDdGNzZGQSAvKiBFbnRpdGxlbWVu
dHMuaCAqLywKKwkJCQkxNDNEREU5NTIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1t
ICovLAogCQkJCTdBNkVCQTMzMjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCAq
LywKIAkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2Eu
Y3BwICovLAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhh
bmRsZXJDb2NvYS5tbSAqLywKQEAgLTE0NDQsNyArMTQ0Niw3IEBACiAJCQlpc2EgPSBQQlhTb3Vy
Y2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKLQkJCQlDODA1RUYzOUU1RjE0NDgxQTk2RDM5RkMgLyogQVNDSUlMaXRlcmFsLmNwcCBp
biBSZXNvdXJjZXMgKi8sCisJCQkJQzgwNUVGMzlFNUYxNDQ4MUE5NkQzOUZDIC8qIEFTQ0lJTGl0
ZXJhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzM4NjE1MUE4MjVCMDA0MTIzRkYgLyog
QXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQzNTE1MUE4MjVCMDA0MTIz
RkYgLyogQXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUNBNjBEMUIwMjQy
NjgwMDQ0OTczOSAvKiBBdG9taWNTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTQ4
MCw3ICsxNDgyLDcgQEAKIAkJCQlBOEE0NzNBRTE1MUE4MjVCMDA0MTIzRkYgLyogZGl5LWZwLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjAxNTFBODI1QjAwNDEyM0ZGIC8qIGRvdWJsZS1j
b252ZXJzaW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQkExNTFBODI1QjAwNDEyM0ZG
IC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQzRERFOTYyMEM4QkMzNzAwN0Y3NkZB
IC8qIEVudGl0bGVtZW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDNEREU5NjIwQzhCQzM3
MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjMx
NTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTBGN0M1
RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL2NvY29hL0VudGl0bGVtZW50cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGVjYWQ5NTFkMDFkYWZmMDM0YmZiMDNmNjg0YzNjOTU0NTZiYTEwN2QuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93
dGYvY29jb2EvRW50aXRsZW1lbnRzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRW50aXRsZW1lbnRz
LmgiCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3NwaS9jb2Nv
YS9TZWN1cml0eVNQSS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotYm9vbCBwcm9jZXNzSGFzRW50
aXRsZW1lbnQoY29uc3QgY2hhciogZW50aXRsZW1lbnQpCi17Ci0gICAgYXV0byB0YXNrID0gYWRv
cHRDRihTZWNUYXNrQ3JlYXRlRnJvbVNlbGYoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOwotICAgIGlm
ICghdGFzaykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBjZkVudGl0bGVtZW50
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGVudGl0bGVtZW50LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51
bGwpKTsKLSAgICBhdXRvIHZhbHVlID0gYWRvcHRDRihTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRs
ZW1lbnQodGFzay5nZXQoKSwgY2ZFbnRpdGxlbWVudC5nZXQoKSwgbnVsbHB0cikpOwotICAgIGlm
ICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChDRkdldFR5cGVJRCh2
YWx1ZS5nZXQoKSkgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiBDRkJvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkJvb2xlYW5S
ZWY+KHZhbHVlLmdldCgpKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9FbnRpdGxlbWVudHMuaAppbmRleCA0NmE5YTI0NjhhYmY4ODYwNjM0ZTM1NDRjYjg5NDE3YmI1
NDFhMmY4Li4wNjk4NWVhMzI2NWIwNjU3YzQ5MWM3NzNmYmU1ZTM5OTkyOWU1OGIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaApAQCAtMjUsOCArMjUsMTIgQEAKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogCisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKIG5hbWVz
cGFjZSBXVEYgewogCitXVEZfRVhQT1JUIGJvb2wgaGFzRW50aXRsZW1lbnQoYXVkaXRfdG9rZW5f
dCwgY29uc3QgY2hhciogZW50aXRsZW1lbnQpOworV1RGX0VYUE9SVCBib29sIGhhc0VudGl0bGVt
ZW50KHhwY19jb25uZWN0aW9uX3QsIGNvbnN0IGNoYXIqIGVudGl0bGVtZW50KTsKIFdURl9FWFBP
UlQgYm9vbCBwcm9jZXNzSGFzRW50aXRsZW1lbnQoY29uc3QgY2hhciogZW50aXRsZW1lbnQpOwog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0Vu
dGl0bGVtZW50cy5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0VudGl0bGVtZW50cy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ODEzZGI4Mjk1NjYyMTVjMmEyZmY0N2VhMjAwZTYxN2Q5M2UyZDI3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRW50
aXRsZW1lbnRzLmgiCisKKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQoU2VjVGFza1Jl
ZiB0YXNrLCBjb25zdCBjaGFyKiBlbnRpdGxlbWVudCkKK3sKKyAgICBpZiAoIXRhc2spCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoQ1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBlbnRpdGxlbWVudCwga0NG
U3RyaW5nRW5jb2RpbmdBU0NJSSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIGF1dG8gdmFsdWUg
PSBhZG9wdENGKFNlY1Rhc2tDb3B5VmFsdWVGb3JFbnRpdGxlbWVudCh0YXNrLCBzdHJpbmcuZ2V0
KCksIG51bGxwdHIpKTsKKyAgICByZXR1cm4gdmFsdWUgJiYgQ0ZHZXRUeXBlSUQodmFsdWUuZ2V0
KCkpID09IENGQm9vbGVhbkdldFR5cGVJRCgpICYmIENGQm9vbGVhbkdldFZhbHVlKHN0YXRpY19j
YXN0PENGQm9vbGVhblJlZj4odmFsdWUuZ2V0KCkpKTsKK30KKworYm9vbCBoYXNFbnRpdGxlbWVu
dChhdWRpdF90b2tlbl90IHRva2VuLCBjb25zdCBjaGFyKiBlbnRpdGxlbWVudCkKK3sKKyAgICBy
ZXR1cm4gaGFzRW50aXRsZW1lbnQoYWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4o
a0NGQWxsb2NhdG9yRGVmYXVsdCwgdG9rZW4pKS5nZXQoKSwgZW50aXRsZW1lbnQpOworfQorCiti
b29sIGhhc0VudGl0bGVtZW50KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgY29uc3QgY2hh
ciAqZW50aXRsZW1lbnQpCit7CisgICAgYXV0byB2YWx1ZSA9IGFkb3B0T1NPYmplY3QoeHBjX2Nv
bm5lY3Rpb25fY29weV9lbnRpdGxlbWVudF92YWx1ZShjb25uZWN0aW9uLCBlbnRpdGxlbWVudCkp
OworICAgIHJldHVybiB2YWx1ZSAmJiB4cGNfZ2V0X3R5cGUodmFsdWUuZ2V0KCkpID09IFhQQ19U
WVBFX0JPT0wgJiYgeHBjX2Jvb2xfZ2V0X3ZhbHVlKHZhbHVlLmdldCgpKTsKK30KKworYm9vbCBw
cm9jZXNzSGFzRW50aXRsZW1lbnQoY29uc3QgY2hhciogZW50aXRsZW1lbnQpCit7CisgICAgcmV0
dXJuIGhhc0VudGl0bGVtZW50KGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxmKGtDRkFsbG9j
YXRvckRlZmF1bHQpKS5nZXQoKSwgZW50aXRsZW1lbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9DRlhQQ0JyaWRnZVNQSS5o
IGIvU291cmNlL1dURi93dGYvc3BpL2NvY29hL0NGWFBDQnJpZGdlU1BJLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDIzYWJkZTE4NjVhMTNjMmNjNDlhZGY0MWU1NTYyMTNhZDQwMmE5MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9DRlhQQ0JyaWRnZVNQSS5oCkBAIC0wLDAgKzEs
MzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxDb3JlRm91
bmRhdGlvbi9DRlhQQ0JyaWRnZS5oPgorI2VuZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgorCit4
cGNfb2JqZWN0X3QgX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdChDRlR5cGVSZWYp
OworQ0ZUeXBlUmVmIF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVj
dF90KTsKKworV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2lu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggNzc4YzgzM2Q5N2QxZDZlZmEyNjRj
OWY2ZTIzMmVmZDJjZTMyNDIxMS4uZGQyNTA4ODRjMWNhOTZiOTdjMTk0ODZjODJiZTNkMWY2OTRi
Y2Q4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGll
cy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VF
bnRyeVBvaW50Lm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogI2ltcG9ydCA8V2ViQ29yZS9Q
cm9jZXNzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xNDAsMTEgKzE0MSw3IEBAIGJvb2wgWFBDU2VydmljZUlu
aXRpYWxpemVyRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKEhhc2hNYXA8U3Ry
aW5nLCBTCiAKIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omhhc0VudGl0bGVt
ZW50KGNvbnN0IGNoYXIqIGVudGl0bGVtZW50KQogewotICAgIGF1dG8gdmFsdWUgPSBhZG9wdE9T
T2JqZWN0KHhwY19jb25uZWN0aW9uX2NvcHlfZW50aXRsZW1lbnRfdmFsdWUobV9jb25uZWN0aW9u
LmdldCgpLCBlbnRpdGxlbWVudCkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiB4cGNfZ2V0X3R5cGUodmFsdWUuZ2V0KCkpID09IFhQQ19UWVBF
X0JPT0wgJiYgeHBjX2Jvb2xfZ2V0X3ZhbHVlKHZhbHVlLmdldCgpKTsKKyAgICByZXR1cm4gV1RG
OjpoYXNFbnRpdGxlbWVudChtX2Nvbm5lY3Rpb24uZ2V0KCksIGVudGl0bGVtZW50KTsKIH0KIAog
Ym9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6aXNDbGllbnRTYW5kYm94ZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hVdGlsaXRpZXMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94VXRpbGl0aWVzLmgKaW5kZXggZDYwZjQy
N2Q2Nzk3ODczZTMyMjIyYjYyYjU2NTMwMmM5NWU2MzZhYi4uYzA1ZDc4MWQ4MzA2ZmU2MDNjN2U1
ZGQwNDc1ZWY2YTBkYWI0MmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1NhbmRib3hVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJv
eFV0aWxpdGllcy5oCkBAIC0zOCw2ICszOCw0IEBAIGJvb2wgcHJvY2Vzc0hhc0NvbnRhaW5lcigp
OwogLy8gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIHByb2Nlc3MgaXMgbm90IGluIGEg
Y29udGFpbmVyLgogU3RyaW5nIHBhdGhGb3JQcm9jZXNzQ29udGFpbmVyKCk7CiAKLWJvb2wgY29u
bmVjdGVkUHJvY2Vzc0hhc0VudGl0bGVtZW50KHhwY19jb25uZWN0aW9uX3QsIGNvbnN0IGNoYXIg
KmVudGl0bGVtZW50KTsKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1NhbmRib3hVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveFV0
aWxpdGllcy5tbQppbmRleCBhZmM2YjI0YWUxZDdlODg5ZWFjMDczZjZjZDk2ZDA0MjJkNjIzMWJi
Li5kYzM1MGZiNGYyNTI0OGRlZWU2NWNiYTFmMjM5NTRmYjgyZTczMGNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveFV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveFV0aWxpdGllcy5tbQpAQCAtMjksNyArMjksNiBAQAog
I2ltcG9ydCA8YXJyYXk+CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4KICNpbXBvcnQgPHd0Zi9PU09i
amVjdFB0ci5oPgotI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgogI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBD
U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc3LDEzICs3Niw0IEBA
IFN0cmluZyBwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgocGF0aC5kYXRhKCkpOwogfQogCi1ib29sIGNvbm5lY3RlZFByb2Nlc3NIYXNFbnRpdGxl
bWVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIgKmVudGl0bGVtZW50
KQotewotICAgIGF1dG8gdmFsdWUgPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NvcHlf
ZW50aXRsZW1lbnRfdmFsdWUoY29ubmVjdGlvbiwgZW50aXRsZW1lbnQpKTsKLSAgICBpZiAoIXZh
bHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4geHBjX2dldF90eXBlKHZh
bHVlLmdldCgpKSA9PSBYUENfVFlQRV9CT09MICYmIHhwY19ib29sX2dldF92YWx1ZSh2YWx1ZS5n
ZXQoKSk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
aW9zL1N0b3JhZ2VQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9p
b3MvU3RvcmFnZVByb2Nlc3NJT1MubW0KaW5kZXggZWNlMGMxMDNkYmM0NGJkMTk4MGFiYWI4M2Uy
MTQ2YTUzMGYwZTYyNi4uNzcxMTliMzhjYjRkMTdiMDI1YTNiZWIzZWI3YTVmNGYxOTk4ZGE4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9pb3MvU3RvcmFnZVByb2Nl
c3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9pb3MvU3RvcmFnZVBy
b2Nlc3NJT1MubW0KQEAgLTMwLDEyICszMCw3IEBACiAjaW1wb3J0ICJTdG9yYWdlUHJvY2Vzcy5o
IgogCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCi0jaW1wb3J0
ICJTYW5kYm94VXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNp
bXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyNpbXBvcnQgPHd0Zi9j
b2NvYS9FbnRpdGxlbWVudHMuaD4KIAogI2RlZmluZSBFTkFCTEVfTUFOVUFMX0RBVEFCQVNFX1NB
TkRCT1hJTkcgMAogCkBAIC02MSw3ICs1Niw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmluaXRp
YWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVyCiAK
IGJvb2wgU3RvcmFnZVByb2Nlc3M6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnQoKSBjb25zdAogewotICAgIHN0YXRpYyBib29sIGhhc0VudGl0bGVtZW50ID0gY29ubmVj
dGVkUHJvY2Vzc0hhc0VudGl0bGVtZW50KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nv
bm5lY3Rpb24oKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7
CisgICAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0bGVtZW50KHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgImNvbS5hcHBsZS5kZXZl
bG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7CiAgICAgcmV0dXJuIGhhc0VudGl0bGVtZW50
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IGE3OTU5ODZhYTlmOWRjOTAwNWM0ZTg3YzIxNjY3MWJkYzcwODY5NzQu
LmMyZGU3MTk0YTg3MjA1NDI4ZDFlYjA1NDA0YmI1ZjZjNWI2OTczMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMTMs
NiArMTEzLDcgQEAKICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbXBv
cnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1w
b3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzk5LDcgKzQwMCw3IEBAIGJv
b2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAKIGJvb2wgV2ViUGFnZTo6cGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudCgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQgPSBjb25uZWN0
ZWRQcm9jZXNzSGFzRW50aXRsZW1lbnQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCAiY29tLmFwcGxlLmRldmVsb3Blci5X
ZWJLaXQuU2VydmljZVdvcmtlcnMiKTsKKyAgICBzdGF0aWMgYm9vbCBoYXNFbnRpdGxlbWVudCA9
IFdURjo6aGFzRW50aXRsZW1lbnQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCAiY29tLmFwcGxlLmRldmVsb3Blci5XZWJL
aXQuU2VydmljZVdvcmtlcnMiKTsKICAgICByZXR1cm4gaGFzRW50aXRsZW1lbnQ7CiB9CiAK
</data>
<flag name="review"
          id="361509"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343977</attachid>
            <date>2018-06-29 17:09:34 -0700</date>
            <delta_ts>2018-06-30 17:45:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186973-20180629170933.patch</filename>
            <type>text/plain</type>
            <size>72324</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YWUyMTkxNDBlYjQ1NWJjYmUyMzBmOGVmNDQ4MGRhNDkwZDVjNTcwLi5iYzQxODg1YWNlYTY5ODZk
NzBlMWI2NzRkY2EwOGRiZTViNTczMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOC0wNi0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBJbXByb3ZlIEFSQyBjb21wYXRpYmlsaXR5IG9mIG1vcmUgY29kZSBp
biBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg2OTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAoV2Vha0NvbnRleHRSZWY6Oldl
YWtDb250ZXh0UmVmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYWtDb250ZXh0UmVmOjp+V2Vha0Nv
bnRleHRSZWYpOiBEZWxldGVkLgorICAgICAgICAoV2Vha0NvbnRleHRSZWY6OmdldCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWFrQ29udGV4dFJlZjo6c2V0KTogRGVsZXRlZC4KKworICAgICAgICAq
IEFQSS9KU0NvbnRleHRJbnRlcm5hbC5oOiBSZW1vdmVkIHVubmVlZGVkIGhlYWRlciBndWFyZHMg
c2luY2UgdGhpcyBpcworICAgICAgICBhbiBPYmplY3RpdmUtQysrIGhlYWRlci4gUmVtb3ZlZCB1
bnVzZWQgV2Vha0NvbnRleHRSZWYgY2xhc3MuIFJlbW92ZWQgZGVjbGFyYXRpb24KKyAgICAgICAg
b2YgbWV0aG9kIC1bSlNDb250ZXh0IGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpdIGFuZCBKU0Nv
bnRleHQgcHJvcGVydHkgd3JhcHBlck1hcAorICAgICAgICBzaW5jZSBuZWl0aGVyIGlzIHVzZWQg
b3V0c2lkZSB0aGUgY2xhc3MgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBBUEkvSlNNYW5h
Z2VkVmFsdWUubW06CisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGluaXRXaXRoVmFsdWU6XSk6
IFVzZSBhIGJyaWRnaW5nIGNhc3QuCisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGRlYWxsb2Nd
KTogRGl0dG8uCisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGRpZEFkZE93bmVyOl0pOiBEaXR0
by4KKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGlkUmVtb3ZlT3duZXI6XSk6IERpdHRvLgor
ICAgICAgICAoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMpOiBEaXR0by4KKyAgICAgICAgKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmZpbmFs
aXplKTogRGl0dG8uCisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgICgrW0pTVmFs
dWUgdmFsdWVXaXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjpmbGFnczppbkNvbnRl
eHQ6XSk6IERpdHRvLgorICAgICAgICAoK1tKU1ZhbHVlIHZhbHVlV2l0aE5ld0Vycm9yRnJvbU1l
c3NhZ2U6aW5Db250ZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bSlNWYWx1ZSBzZXRWYWx1ZTpmb3JQcm9wZXJ0
eTpdKTogRGl0dG8uCisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRlUHJvcGVydHk6XSk6IERpdHRv
LgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEaXR0by4KKyAgICAgICAgKC1b
SlNWYWx1ZSBpbnZva2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKTogRGl0dG8uCisgICAgICAgICh2
YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkpOiBEaXR0by4gQWxzbyByZW1vdmVkIHVubmVlZGVkIGV4
cGxpY2l0IHR5cGUgbmFtZXMuCisgICAgICAgICh2YWx1ZVRvQXJyYXkpOiBEaXR0by4KKyAgICAg
ICAgKHZhbHVlVG9EaWN0aW9uYXJ5KTogRGl0dG8uCisgICAgICAgIChvYmplY3RUb1ZhbHVlV2l0
aG91dENvcHkpOiBEaXR0by4KKyAgICAgICAgKG9iamVjdFRvVmFsdWUpOiBEaXR0by4KKyAgICAg
ICAgKiBBUEkvSlNWaXJ0dWFsTWFjaGluZS5tbToKKyAgICAgICAgKCtbSlNWTVdyYXBwZXJDYWNo
ZSBhZGRXcmFwcGVyOmZvckpTQ29udGV4dEdyb3VwUmVmOl0pOiBEaXR0by4KKyAgICAgICAgKCtb
SlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3JvdXBSZWY6XSk6IERpdHRvLgor
ICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGlzT2xkRXh0ZXJuYWxPYmplY3Q6XSk6IERpdHRv
LgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6d2l0aE93
bmVyOl0pOiBEaXR0by4KKyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSByZW1vdmVNYW5hZ2Vk
UmVmZXJlbmNlOndpdGhPd25lcjpdKTogRGl0dG8uCisgICAgICAgICgtW0pTVmlydHVhbE1hY2hp
bmUgY29udGV4dEZvckdsb2JhbENvbnRleHRSZWY6XSk6IERpdHRvLgorICAgICAgICAoLVtKU1Zp
cnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6Zm9yR2xvYmFsQ29udGV4dFJlZjpdKTogRGl0dG8uCisg
ICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6IERpdHRvLgorICAgICAgICAoc2NhbkV4
dGVybmFsUmVtZW1iZXJlZFNldCk6IERpdHRvLgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAu
bW06CisgICAgICAgIChtYWtlV3JhcHBlcik6IERpdHRvLgorICAgICAgICAoLVtKU09iakNDbGFz
c0luZm8gd3JhcHBlckZvck9iamVjdDppbkNvbnRleHQ6XSk6IERpdHRvLgorICAgICAgICAoLVtK
U1dyYXBwZXJNYXAgb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOmluQ29udGV4dDpdKTogRGl0dG8u
CisgICAgICAgICh0cnlVbndyYXBPYmpjT2JqZWN0KTogRGl0dG8uCisgICAgICAgICogQVBJL09i
akNDYWxsYmFja0Z1bmN0aW9uLm1tOgorICAgICAgICAoYmxvY2tTaWduYXR1cmVDb250YWluc0Ns
YXNzKTogRGl0dG8uCisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvck1ldGhvZCk6IFN3
aXRjaGVkIGZyb20gcmV0YWluIHRvIENGUmV0YWluLCBidXQgbm90CisgICAgICAgIHN1cmUgd2Ug
d2lsbCBiZSBrZWVwaW5nIHRoaXMgdGhlIHNhbWUgd2F5IHVuZGVyIEFSQy4KKyAgICAgICAgKG9i
akNDYWxsYmFja0Z1bmN0aW9uRm9yQmxvY2spOiBVc2UgYSBicmlkZ2luZyBjYXN0LgorCisgICAg
ICAgICogQVBJL09iamNSdW50aW1lRXh0cmFzLmg6CisgICAgICAgIChwcm90b2NvbEltcGxlbWVu
dHNQcm90b2NvbCk6IFVzZSBhIG1vcmUgc3BlY2lmaWMgdHlwZSB0aGF0IGluY2x1ZGVzIHRoZQor
ICAgICAgICBleHBsaWNpdCBfX3Vuc2FmZV91bnJldGFpbmVkIGZvciBjb3BpZWQgcHJvdG9jb2wg
bGlzdHMuCisgICAgICAgIChmb3JFYWNoUHJvdG9jb2xJbXBsZW1lbnRpbmdQcm90b2NvbCk6IERp
dHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JD
b2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6Y29udmVydE5TTnVsbFRvTmlsKTogQWRkZWQg
dG8gcmVwbGFjZSB0aGUgQ09OVkVSVF9OU05VTExfVE9fTklMIG1hY3JvLgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKTogVXNlIGNvbnZl
cnROU051bGxUb05pbC4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTogTW92ZWQgdGhlCisgICAgICAgIENGWFBDQnJpZGdl
IFNQSSB0byBhIGhlYWRlciBuYW1lZCBDRlhQQ0JyaWRnZVNQSS5oLgorICAgICAgICAoYXVkaXRU
b2tlbkhhc0VudGl0bGVtZW50KTogRGVsZXRlZC4gTW92ZWQgdG8gRW50aXRsZW1lbnRzLmgvY3Bw
IGluIFdURi4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bjo6aGFuZGxlRXZlbnQpOiBVc2UgV1RGOjpoYXNFbnRpdGxlbWVudC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOiBVc2UgYSBi
cmlkZ2luZyBjYXN0LgorCiAyMDE4LTA2LTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlIHNob3VsZG4ndCByZWN1cnNlIGludG8gdGhlIHBhcnNlciB3aGVu
IGdhdGhlcmluZyBtZXRhZGF0YSBhYm91dCB2YXJpb3VzIGZ1bmN0aW9uIG9mZnNldHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
NDk3NTJmM2UwMzdlY2I5ZjU3NzQ2ZDkzZDQ5YzA4MzRmODYyY2NiNy4uNWEyN2QyMGVlNDhiM2Iw
NjVkMGQ2YjI5ZTliMWVjMzEzODRkMGM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wNi0y
MyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbXBy
b3ZlIEFSQyBjb21wYXRpYmlsaXR5IG9mIG1vcmUgY29kZSBpbiBKYXZhU2NyaXB0Q29yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2OTczCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgQ0ZYUENCcmlkZ2VTUEkuaCwgZml4ZWQgYSBmZXcK
KyAgICAgICAgb3RoZXIgc21hbGwgcHJvYmxlbXMgaW4gdGhlIHByb2plY3QgZmlsZSwgYW5kIGxl
dCBYY29kZSBmaXggYSBmZXcgdG9vLgorCisgICAgICAgICogd3RmL2NvY29hL0VudGl0bGVtZW50
cy5oOiBBZGRlZCBoYXNFbnRpdGxlbWVudCBmdW5jdGlvbiB3aXRoIG92ZXJsb2FkcworICAgICAg
ICBmb3IgYW4gYXVkaXQgdG9rZW4gYW5kIGFuIFhQQyBjb25uZWN0aW9uLgorICAgICAgICAqIHd0
Zi9jb2NvYS9FbnRpdGxlbWVudHMubW06CisgICAgICAgIChXVEY6Omhhc0VudGl0bGVtZW50KTog
QWRkZWQsIHdpdGggb3ZlcmxvYWRzIGZvciBhIFNlY1Rhc2ssIGFuIGF1ZGl0IHRva2VuLAorICAg
ICAgICBhbmQgYW4gWFBDIGNvbm5lY3Rpb24uCisgICAgICAgIChXVEY6OnByb2Nlc3NIYXNFbnRp
dGxlbWVudCk6IFJlZmFjdG9yZWQgdG8gdXNlIHRoZSBmdW5jdGlvbiBhYm92ZS4KKworICAgICAg
ICAqIHd0Zi9zcGkvY29jb2EvQ0ZYUENCcmlkZ2VTUEkuaDogQWRkZWQuCisKIDIwMTgtMDYtMjgg
IE9saXZpYSBCYXJuZXR0ICA8b2Jhcm5ldHRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbmQgaW4g
cGFnZSBmb3IgdHlwb2dyYXBoaWMgcXVvdGVzIGRvZXMgbm90IGZpbmQgbG93IChHZXJtYW4pIHF1
b3RlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA2YjlmMDRlNWEwMTExODE3NzQwNWU5NDJiZTg5ZDQ4MjZmM2NkZmQ2
Li5jMTIwOTgzMGMxM2QyN2EyMjExYjUwNzFiMjJiOTZhMGIzMTlkN2U0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzIEBACisyMDE4LTA2LTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIEltcHJvdmUgQVJDIGNvbXBhdGliaWxpdHkgb2YgbW9yZSBjb2Rl
IGluIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQ
Q1NlcnZpY2VFbnRyeVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlh
bGl6ZXJEZWxlZ2F0ZTo6aGFzRW50aXRsZW1lbnQpOiBVc2UgV1RGOjpoYXNFbnRpdGxlbWVudC4K
KworICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveFV0aWxpdGllcy5oOiBSZW1vdmVkIGNvbm5l
Y3RlZFByb2Nlc3NIYXNFbnRpdGxlbWVudCBzaW5jZQorICAgICAgICB3ZSBjYW4gbm93IHVzZSBX
VEY6Omhhc0VudGl0bGVtZW50IGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94
VXRpbGl0aWVzLm1tOiBEaXR0by4KKworICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL2lvcy9TdG9y
YWdlUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OnBhcmVu
dFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQpOiBVc2UKKyAgICAgICAgV1RGOjpo
YXNFbnRpdGxlbWVudC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNl
V29ya2VyRW50aXRsZW1lbnQpOiBEaXR0by4KKwogMjAxOC0wNi0yOSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjIzMzM1OSk6IENhdXNlZCBJ
VFAgdGVzdHMgdG8gYmUgZmxha3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
aW5kZXggZDhiMGE3NTYyYTAzNWYzZjdkNTQ0NGVlM2MyY2I4N2YwN2M2OTcyMy4uZjRlODhjMTQ0
ZWFhMTY5MTkwYjZjYTMzN2Q1NGJhMGRiNWQ2MWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0KQEAgLTMzNywyNCArMzM3LDQgQEAgKyAoSlNDb250ZXh0ICopY29udGV4
dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0
CiAKIEBlbmQKIAotV2Vha0NvbnRleHRSZWY6OldlYWtDb250ZXh0UmVmKEpTQ29udGV4dCAqY29u
dGV4dCkKLXsKLSAgICBvYmpjX2luaXRXZWFrKCZtX3dlYWtDb250ZXh0LCBjb250ZXh0KTsKLX0K
LQotV2Vha0NvbnRleHRSZWY6On5XZWFrQ29udGV4dFJlZigpCi17Ci0gICAgb2JqY19kZXN0cm95
V2VhaygmbV93ZWFrQ29udGV4dCk7Ci19Ci0KLUpTQ29udGV4dCAqIFdlYWtDb250ZXh0UmVmOjpn
ZXQoKQotewotICAgIHJldHVybiBvYmpjX2xvYWRXZWFrKCZtX3dlYWtDb250ZXh0KTsKLX0KLQot
dm9pZCBXZWFrQ29udGV4dFJlZjo6c2V0KEpTQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICBvYmpj
X3N0b3JlV2VhaygmbV93ZWFrQ29udGV4dCwgY29udGV4dCk7Ci19Ci0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCmluZGV4IGIzN2NmYTQ0
MTVmOGM4OWJlNTkxY2FhNzM5ZmE2NzBiMjM0Y2UzZmQuLjI4ZjcwOWMxZTQ4ZjFlMWE4MDM4NTY1
MGFhZTZlNDFjZDM1MTUwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dEludGVybmFsLmgKQEAgLTIzLDkgKzIzLDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpZm5kZWYgSlNDb250ZXh0SW50ZXJuYWxfaAotI2RlZmluZSBKU0NvbnRleHRJbnRlcm5hbF9o
Ci0KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CiAKICNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRApAQCAtMzMsNyArMzAsNyBAQAogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNDb250ZXh0Lmg+CiAKIHN0cnVjdCBDYWxsYmFja0RhdGEgewotICAgIENhbGxiYWNrRGF0
YSAqbmV4dDsKKyAgICBDYWxsYmFja0RhdGEqIG5leHQ7CiAgICAgSlNDb250ZXh0ICpjb250ZXh0
OwogICAgIEpTVmFsdWUgKnByZXNlcnZlZEV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlUmVmIGNhbGxl
ZVZhbHVlOwpAQCAtNDMsMjQgKzQwLDEwIEBAIHN0cnVjdCBDYWxsYmFja0RhdGEgewogICAgIE5T
QXJyYXkgKmN1cnJlbnRBcmd1bWVudHM7CiB9OwogCi1jbGFzcyBXZWFrQ29udGV4dFJlZiB7Ci1w
dWJsaWM6Ci0gICAgV2Vha0NvbnRleHRSZWYoSlNDb250ZXh0ICogPSBuaWwpOwotICAgIH5XZWFr
Q29udGV4dFJlZigpOwotCi0gICAgSlNDb250ZXh0ICogZ2V0KCk7Ci0gICAgdm9pZCBzZXQoSlND
b250ZXh0ICopOwotCi1wcml2YXRlOgotICAgIEpTQ29udGV4dCAqbV93ZWFrQ29udGV4dDsKLX07
Ci0KIEBjbGFzcyBKU1dyYXBwZXJNYXA7CiAKIEBpbnRlcmZhY2UgSlNDb250ZXh0KEludGVybmFs
KQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENv
bnRleHRSZWYpY29udGV4dDsKLQogLSAodm9pZClub3RpZnlFeGNlcHRpb246KEpTVmFsdWVSZWYp
ZXhjZXB0aW9uOwogLSAoSlNWYWx1ZSAqKXZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1
ZVJlZilleGNlcHRpb247CiAtIChCT09MKWJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOihKU1ZhbHVl
UmVmKWV4Y2VwdGlvbjsKQEAgLTcxLDEwICs1NCw2IEBAIHByaXZhdGU6CiAtIChKU1ZhbHVlICop
d3JhcHBlckZvck9iakNPYmplY3Q6KGlkKW9iamVjdDsKIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9y
SlNPYmplY3Q6KEpTVmFsdWVSZWYpdmFsdWU7CiAKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHJldGFp
bikgSlNXcmFwcGVyTWFwICp3cmFwcGVyTWFwOwotCiBAZW5kCiAKICNlbmRpZgotCi0jZW5kaWYg
Ly8gSlNDb250ZXh0SW50ZXJuYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU01hbmFnZWRWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5h
Z2VkVmFsdWUubW0KaW5kZXggMDk5YjA0YWM4M2ZmMmJmNjI5MDkwODYyNTYyNmQwYjFkM2I0MTg1
NC4uMjljNzE3ZGIzYjNkMWQxODU3MTg1NWI4ZTEzZTY3ZTU4YTQ0Y2JkZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCkBAIC04OCw3ICs4OCw3IEBAIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUKICAgICBKU0M6OkV4
ZWNTdGF0ZSogZXhlYyA9IHRvSlMoW3ZhbHVlLmNvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7
CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwogICAgIGF1dG8mIG93bmVyID0gbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIo
KTsKLSAgICBKU0M6OldlYWs8SlNDOjpKU0dsb2JhbE9iamVjdD4gd2VhayhnbG9iYWxPYmplY3Qs
ICZvd25lciwgc2VsZik7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNHbG9iYWxPYmplY3Q+IHdlYWso
Z2xvYmFsT2JqZWN0LCAmb3duZXIsIChfX2JyaWRnZSB2b2lkKilzZWxmKTsKICAgICBtX2dsb2Jh
bE9iamVjdC5zd2FwKHdlYWspOwogCiAgICAgbV9sb2NrID0gJmV4ZWMtPnZtKCkuYXBpTG9jaygp
OwpAQCAtOTksOSArOTksOSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWYWx1ZTooSlNWYWx1
ZSAqKXZhbHVlCiAKICAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgW3ZhbHVl
IEpTVmFsdWVSZWZdKTsKICAgICBpZiAoanNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICBtX3dl
YWtWYWx1ZS5zZXRPYmplY3QoSlNDOjpqc0Nhc3Q8SlNDOjpKU09iamVjdCo+KGpzVmFsdWUuYXND
ZWxsKCkpLCBvd25lciwgc2VsZik7CisgICAgICAgIG1fd2Vha1ZhbHVlLnNldE9iamVjdChKU0M6
OmpzQ2FzdDxKU0M6OkpTT2JqZWN0Kj4oanNWYWx1ZS5hc0NlbGwoKSksIG93bmVyLCAoX19icmlk
Z2Ugdm9pZCopc2VsZik7CiAgICAgZWxzZSBpZiAoanNWYWx1ZS5pc1N0cmluZygpKQotICAgICAg
ICBtX3dlYWtWYWx1ZS5zZXRTdHJpbmcoSlNDOjpqc0Nhc3Q8SlNDOjpKU1N0cmluZyo+KGpzVmFs
dWUuYXNDZWxsKCkpLCBvd25lciwgc2VsZik7CisgICAgICAgIG1fd2Vha1ZhbHVlLnNldFN0cmlu
ZyhKU0M6OmpzQ2FzdDxKU0M6OkpTU3RyaW5nKj4oanNWYWx1ZS5hc0NlbGwoKSksIG93bmVyLCAo
X19icmlkZ2Ugdm9pZCopc2VsZik7CiAgICAgZWxzZQogICAgICAgICBtX3dlYWtWYWx1ZS5zZXRQ
cmltaXRpdmUoanNWYWx1ZSk7CiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xMTMsNyArMTEzLDcgQEAg
LSAodm9pZClkZWFsbG9jCiAgICAgaWYgKHZpcnR1YWxNYWNoaW5lKSB7CiAgICAgICAgIE5TTWFw
VGFibGUgKmNvcHkgPSBbbV9vd25lcnMgY29weV07CiAgICAgICAgIGZvciAoaWQgb3duZXIgaW4g
W2NvcHkga2V5RW51bWVyYXRvcl0pIHsKLSAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdldChtX293bmVycywgb3duZXIpKTsKKyAgICAgICAg
ICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdldChtX293
bmVycywgKF9fYnJpZGdlIHZvaWQqKW93bmVyKSk7CiAgICAgICAgICAgICB3aGlsZSAoY291bnQt
LSkKICAgICAgICAgICAgICAgICBbdmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVyZW5j
ZTpzZWxmIHdpdGhPd25lcjpvd25lcl07CiAgICAgICAgIH0KQEAgLTEyNywyMyArMTI3LDIzIEBA
IC0gKHZvaWQpZGVhbGxvYwogCiAtICh2b2lkKWRpZEFkZE93bmVyOihpZClvd25lcgogewotICAg
IHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdldChtX293bmVy
cywgb3duZXIpKTsKLSAgICBOU01hcEluc2VydChtX293bmVycywgb3duZXIsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGNvdW50ICsgMSkpOworICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8c2l6ZV90PihOU01hcEdldChtX293bmVycywgKF9fYnJpZGdlIHZvaWQqKW93bmVyKSk7
CisgICAgTlNNYXBJbnNlcnQobV9vd25lcnMsIChfX2JyaWRnZSB2b2lkKilvd25lciwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY291bnQgKyAxKSk7CiB9CiAKIC0gKHZvaWQpZGlkUmVtb3ZlT3du
ZXI6KGlkKW93bmVyCiB7Ci0gICAgc2l6ZV90IGNvdW50ID0gcmVpbnRlcnByZXRfY2FzdDxzaXpl
X3Q+KE5TTWFwR2V0KG1fb3duZXJzLCBvd25lcikpOworICAgIHNpemVfdCBjb3VudCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdldChtX293bmVycywgKF9fYnJpZGdlIHZvaWQqKW93
bmVyKSk7CiAKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY291
bnQgPT0gMSkgewotICAgICAgICBOU01hcFJlbW92ZShtX293bmVycywgb3duZXIpOworICAgICAg
ICBOU01hcFJlbW92ZShtX293bmVycywgKF9fYnJpZGdlIHZvaWQqKW93bmVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIE5TTWFwSW5zZXJ0KG1fb3duZXJzLCBvd25lciwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY291bnQgLSAxKSk7CisgICAgTlNNYXBJbnNlcnQobV9vd25lcnMs
IChfX2JyaWRnZSB2b2lkKilvd25lciwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY291bnQgLSAx
KSk7CiB9CiAKIC0gKEpTVmFsdWUgKil2YWx1ZQpAQCAtMTg0LDEzICsxODQsMTMgQEAgQGVuZAog
CiBib29sIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IHN0
YXRpY19jYXN0PEpTTWFuYWdlZFZhbHVlICo+KGNvbnRleHQpOwotICAgIHJldHVybiB2aXNpdG9y
LmNvbnRhaW5zT3BhcXVlUm9vdChtYW5hZ2VkVmFsdWUpOworICAgIEpTTWFuYWdlZFZhbHVlICpt
YW5hZ2VkVmFsdWUgPSAoX19icmlkZ2UgSlNNYW5hZ2VkVmFsdWUgKiljb250ZXh0OworICAgIHJl
dHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdCgoX19icmlkZ2Ugdm9pZCopbWFuYWdlZFZh
bHVlKTsKIH0KIAogdm9pZCBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KQogewotICAgIEpTTWFuYWdlZFZh
bHVlICptYW5hZ2VkVmFsdWUgPSBzdGF0aWNfY2FzdDxKU01hbmFnZWRWYWx1ZSAqPihjb250ZXh0
KTsKKyAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gKF9fYnJpZGdlIEpTTWFuYWdl
ZFZhbHVlICopY29udGV4dDsKICAgICBbbWFuYWdlZFZhbHVlIGRpc2Nvbm5lY3RWYWx1ZV07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQppbmRleCA1YzNjMDU2ODlkNDZhNzUx
NDU4NmVmYWQyODhhYjRlN2MzMjE1NTY2Li5hMjY2ODQ0OGZmYmM3YmY1NTM0Mzc0ZDE3ZGEyYmVi
NGM3NDE5ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUu
bW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCkBAIC0xMjMsOCAr
MTIzLDggQEAgKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OihKU0NvbnRl
eHQgKiljb250ZXh0CiAKICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhOZXdSZWd1bGFyRXhwcmVzc2lv
bkZyb21QYXR0ZXJuOihOU1N0cmluZyAqKXBhdHRlcm4gZmxhZ3M6KE5TU3RyaW5nICopZmxhZ3Mg
aW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiB7Ci0gICAgSlNTdHJpbmdSZWYgcGF0dGVy
blN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwYXR0ZXJu
KTsKLSAgICBKU1N0cmluZ1JlZiBmbGFnc1N0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3Ry
aW5nKChDRlN0cmluZ1JlZilmbGFncyk7CisgICAgSlNTdHJpbmdSZWYgcGF0dGVyblN0cmluZyA9
IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXR0ZXJu
KTsKKyAgICBKU1N0cmluZ1JlZiBmbGFnc1N0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3Ry
aW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilmbGFncyk7CiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbMl0gPSB7IEpTVmFsdWVNYWtlU3RyaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IHBhdHRlcm5TdHJpbmcpLCBKU1ZhbHVlTWFrZVN0cmluZyhbY29udGV4dCBKU0dsb2JhbENvbnRl
eHRSZWZdLCBmbGFnc1N0cmluZykgfTsKICAgICBKU1N0cmluZ1JlbGVhc2UocGF0dGVyblN0cmlu
Zyk7CiAgICAgSlNTdHJpbmdSZWxlYXNlKGZsYWdzU3RyaW5nKTsKQEAgLTEzNCw3ICsxMzQsNyBA
QCArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjoo
TlNTdHJpbmcgKilwYXR0ZXJuIGZsYWdzOgogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3RXJy
b3JGcm9tTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dAogewotICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENG
U3RyaW5nKChDRlN0cmluZ1JlZiltZXNzYWdlKTsKKyAgICBKU1N0cmluZ1JlZiBzdHJpbmcgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpbWVzc2FnZSk7
CiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIHN0cmluZyk7CiAgICAgSlNTdHJpbmdSZWxlYXNlKHN0cmluZyk7
CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCAtIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNT
dHJpbmcgKilwcm9wZXJ0eU5hbWUKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4g
W19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgSlNT
dHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilw
cm9wZXJ0eU5hbWUpOworICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKICAgICBKU1ZhbHVl
UmVmIHJlc3VsdCA9IEpTT2JqZWN0R2V0UHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7CiAgICAgSlNTdHJpbmdSZWxlYXNlKG5h
bWUpOwogICAgIGlmIChleGNlcHRpb24pCkBAIC0yNTksNyArMjU5LDcgQEAgLSAodm9pZClzZXRW
YWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVh
dGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7CisgICAgSlNTdHJpbmdS
ZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1Jl
Zilwcm9wZXJ0eU5hbWUpOwogICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoW19jb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0sIG9iamVjdCwgbmFtZSwgb2JqZWN0VG9WYWx1ZShfY29udGV4dCwgdmFs
dWUpLCAwLCAmZXhjZXB0aW9uKTsKICAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7CiAgICAgaWYg
KGV4Y2VwdGlvbikgewpAQCAtMjc1LDcgKzI3NSw3IEBAIC0gKEJPT0wpZGVsZXRlUHJvcGVydHk6
KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0
dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAg
SlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1Jl
Zilwcm9wZXJ0eU5hbWUpOworICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdp
dGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKICAgICBCT09M
IHJlc3VsdCA9IEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0sIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7CiAgICAgSlNTdHJpbmdSZWxlYXNlKG5h
bWUpOwogICAgIGlmIChleGNlcHRpb24pCkBAIC0yOTEsNyArMjkxLDcgQEAgLSAoQk9PTCloYXNQ
cm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKICAgICBpZiAoZXhjZXB0aW9uKQogICAg
ICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07
CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENG
U3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwog
ICAgIEJPT0wgcmVzdWx0ID0gSlNPYmplY3RIYXNQcm9wZXJ0eShbX2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lKTsKICAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQ2MSw3ICs0NjEsNyBAQCAtIChKU1ZhbHVlICopaW52b2tl
TWV0aG9kOihOU1N0cmluZyAqKW1ldGhvZCB3aXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJndW1l
bnRzCiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZy
b21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpbWV0aG9kKTsKKyAgICBKU1N0
cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKW1ldGhvZCk7CiAgICAgSlNWYWx1ZVJlZiBmdW5jdGlvbiA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHRoaXNPYmplY3QsIG5hbWUsICZl
eGNlcHRpb24pOwogICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKICAgICBpZiAoZXhjZXB0aW9u
KQpAQCAtNjk0LDIxICs2OTQsMjEgQEAgc3RhdGljIEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNr
IHZhbHVlVG9PYmplY3RXaXRob3V0Q29weShKU0dsb2JhbENvbnRleHRSZWYgY28KICAgICAgICAg
ICAgIEFTU0VSVChKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpKTsKICAgICAgICAg
ICAgIHByaW1pdGl2ZSA9IG5pbDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gKEpTQ29udGFp
bmVyQ29udmVydG9yOjpUYXNrKXsgdmFsdWUsIHByaW1pdGl2ZSwgQ29udGFpbmVyTm9uZSB9Owor
ICAgICAgICByZXR1cm4geyB2YWx1ZSwgcHJpbWl0aXZlLCBDb250YWluZXJOb25lIH07CiAgICAg
fQogCiAgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHZh
bHVlLCAwKTsKIAogICAgIGlmIChpZCB3cmFwcGVkID0gdHJ5VW53cmFwT2JqY09iamVjdChjb250
ZXh0LCBvYmplY3QpKQotICAgICAgICByZXR1cm4gKEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNr
KXsgb2JqZWN0LCB3cmFwcGVkLCBDb250YWluZXJOb25lIH07CisgICAgICAgIHJldHVybiB7IG9i
amVjdCwgd3JhcHBlZCwgQ29udGFpbmVyTm9uZSB9OwogCiAgICAgaWYgKGlzRGF0ZSh2bSwgb2Jq
ZWN0LCBjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFz
ayl7IG9iamVjdCwgW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpKU1ZhbHVl
VG9OdW1iZXIoY29udGV4dCwgb2JqZWN0LCAwKSAvIDEwMDAuMF0sIENvbnRhaW5lck5vbmUgfTsK
KyAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2lu
Y2UxOTcwOkpTVmFsdWVUb051bWJlcihjb250ZXh0LCBvYmplY3QsIDApIC8gMTAwMC4wXSwgQ29u
dGFpbmVyTm9uZSB9OwogCiAgICAgaWYgKGlzQXJyYXkodm0sIG9iamVjdCwgY29udGV4dCkpCi0g
ICAgICAgIHJldHVybiAoSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIFtOU011
dGFibGVBcnJheSBhcnJheV0sIENvbnRhaW5lckFycmF5IH07CisgICAgICAgIHJldHVybiB7IG9i
amVjdCwgW05TTXV0YWJsZUFycmF5IGFycmF5XSwgQ29udGFpbmVyQXJyYXkgfTsKIAotICAgIHJl
dHVybiAoSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIFtOU011dGFibGVEaWN0
aW9uYXJ5IGRpY3Rpb25hcnldLCBDb250YWluZXJEaWN0aW9uYXJ5IH07CisgICAgcmV0dXJuIHsg
b2JqZWN0LCBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XSwgQ29udGFpbmVyRGljdGlv
bmFyeSB9OwogfQogCiBzdGF0aWMgaWQgY29udGFpbmVyVmFsdWVUb09iamVjdChKU0dsb2JhbENv
bnRleHRSZWYgY29udGV4dCwgSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sgdGFzaykKQEAgLTgy
Miw3ICs4MjIsNyBAQCBpZCB2YWx1ZVRvQXJyYXkoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQs
IEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdAogICAgIH0KIAogICAgIGlmIChK
U1ZhbHVlSXNPYmplY3QoY29udGV4dCwgdmFsdWUpKQotICAgICAgICByZXR1cm4gY29udGFpbmVy
VmFsdWVUb09iamVjdChjb250ZXh0LCAoSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyB2YWx1
ZSwgW05TTXV0YWJsZUFycmF5IGFycmF5XSwgQ29udGFpbmVyQXJyYXl9KTsKKyAgICAgICAgcmV0
dXJuIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoY29udGV4dCwgeyB2YWx1ZSwgW05TTXV0YWJsZUFy
cmF5IGFycmF5XSwgQ29udGFpbmVyQXJyYXl9KTsKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2tlcih0b0pTKGNvbnRleHQpKTsKICAgICBpZiAoIShKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZh
bHVlKSB8fCBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpKSkgewpAQCAtODQ0LDcg
Kzg0NCw3IEBAIGlkIHZhbHVlVG9EaWN0aW9uYXJ5KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBlCiAgICAgfQogCiAgICAgaWYgKEpTVmFs
dWVJc09iamVjdChjb250ZXh0LCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBjb250YWluZXJWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IHZhbHVlLCBb
TlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XSwgQ29udGFpbmVyRGljdGlvbmFyeX0pOwor
ICAgICAgICByZXR1cm4gY29udGFpbmVyVmFsdWVUb09iamVjdChjb250ZXh0LCB7IHZhbHVlLCBb
TlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XSwgQ29udGFpbmVyRGljdGlvbmFyeX0pOwog
CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMoY29udGV4dCkpOwogICAgIGlmICgh
KEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc1VuZGVmaW5lZChjb250
ZXh0LCB2YWx1ZSkpKSB7CkBAIC05MjUsNDkgKzkyNSw0OSBAQCBzdGF0aWMgT2JqY0NvbnRhaW5l
ckNvbnZlcnRvcjo6VGFzayBvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkoSlNDb250ZXh0ICpjb250
ZXh0LAogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0gW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXTsKIAogICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gKE9iamND
b250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHRSZWYpLCBDb250YWluZXJOb25lIH07CisgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dFJlZiksIENvbnRhaW5lck5vbmUgfTsKIAogICAgIGlm
ICghY2xhc3NfY29uZm9ybXNUb1Byb3RvY29sKG9iamVjdF9nZXRDbGFzcyhvYmplY3QpLCBnZXRK
U0V4cG9ydFByb3RvY29sKCkpKSB7CiAgICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6
W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZl
cnRvcjo6VGFzayl7IG9iamVjdCwgSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dFJlZiwgMCwgTlVM
TCwgMCksIENvbnRhaW5lckFycmF5IH07CisgICAgICAgICAgICByZXR1cm4geyBvYmplY3QsIEpT
T2JqZWN0TWFrZUFycmF5KGNvbnRleHRSZWYsIDAsIE5VTEwsIDApLCBDb250YWluZXJBcnJheSB9
OwogCiAgICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFz
c11dKQotICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsg
b2JqZWN0LCBKU09iamVjdE1ha2UoY29udGV4dFJlZiwgMCwgMCksIENvbnRhaW5lckRpY3Rpb25h
cnkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNPYmplY3RNYWtlKGNvbnRleHRS
ZWYsIDAsIDApLCBDb250YWluZXJEaWN0aW9uYXJ5IH07CiAKICAgICAgICAgaWYgKFtvYmplY3Qg
aXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNsYXNzXV0pCi0gICAgICAgICAgICByZXR1cm4gKE9iamND
b250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIEpTVmFsdWVNYWtlTnVsbChjb250ZXh0
UmVmKSwgQ29udGFpbmVyTm9uZSB9OworICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCBKU1Zh
bHVlTWFrZU51bGwoY29udGV4dFJlZiksIENvbnRhaW5lck5vbmUgfTsKIAogICAgICAgICBpZiAo
W29iamVjdCBpc0tpbmRPZkNsYXNzOltKU1ZhbHVlIGNsYXNzXV0pCi0gICAgICAgICAgICByZXR1
cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsICgoSlNWYWx1ZSAqKW9i
amVjdCktPm1fdmFsdWUsIENvbnRhaW5lck5vbmUgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG9i
amVjdCwgKChKU1ZhbHVlICopb2JqZWN0KS0+bV92YWx1ZSwgQ29udGFpbmVyTm9uZSB9OwogCiAg
ICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5n
KChDRlN0cmluZ1JlZilvYmplY3QpOworICAgICAgICAgICAgSlNTdHJpbmdSZWYgc3RyaW5nID0g
SlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKW9iamVjdCk7
CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGpzID0gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dFJl
Ziwgc3RyaW5nKTsKICAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShzdHJpbmcpOwotICAgICAg
ICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCBqcywg
Q29udGFpbmVyTm9uZSB9OworICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCBqcywgQ29udGFp
bmVyTm9uZSB9OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpbTlNOdW1iZXIgY2xhc3NdXSkgewogICAgICAgICAgICAgaWYgKGlzTlNCb29sZWFuKG9iamVj
dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNr
KXsgb2JqZWN0LCBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dFJlZiwgW29iamVjdCBib29sVmFs
dWVdKSwgQ29udGFpbmVyTm9uZSB9OwotICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVy
Q29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0UmVmLCBb
b2JqZWN0IGRvdWJsZVZhbHVlXSksIENvbnRhaW5lck5vbmUgfTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyBvYmplY3QsIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0UmVmLCBbb2JqZWN0IGJv
b2xWYWx1ZV0pLCBDb250YWluZXJOb25lIH07CisgICAgICAgICAgICByZXR1cm4geyBvYmplY3Qs
IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHRSZWYsIFtvYmplY3QgZG91YmxlVmFsdWVdKSwgQ29u
dGFpbmVyTm9uZSB9OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZD
bGFzczpbTlNEYXRlIGNsYXNzXV0pIHsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgYXJndW1lbnQg
PSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0UmVmLCBbb2JqZWN0IHRpbWVJbnRlcnZhbFNpbmNl
MTk3MF0gKiAxMDAwLjApOwogICAgICAgICAgICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNPYmpl
Y3RNYWtlRGF0ZShjb250ZXh0UmVmLCAxLCAmYXJndW1lbnQsIDApOwotICAgICAgICAgICAgcmV0
dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCByZXN1bHQsIENvbnRh
aW5lck5vbmUgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgcmVzdWx0LCBDb250YWlu
ZXJOb25lIH07CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNz
OltKU01hbmFnZWRWYWx1ZSBjbGFzc11dKSB7CiAgICAgICAgICAgICBKU1ZhbHVlICp2YWx1ZSA9
IFtzdGF0aWNfY2FzdDxKU01hbmFnZWRWYWx1ZSAqPihvYmplY3QpIHZhbHVlXTsKICAgICAgICAg
ICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29u
dmVydG9yOjpUYXNrKSB7IG9iamVjdCwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dFJlZiks
IENvbnRhaW5lck5vbmUgfTsKLSAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZl
cnRvcjo6VGFzayl7IG9iamVjdCwgdmFsdWUtPm1fdmFsdWUsIENvbnRhaW5lck5vbmUgfTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIHsgb2JqZWN0LCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0UmVmKSwgQ29udGFpbmVyTm9uZSB9OworICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCB2
YWx1ZS0+bV92YWx1ZSwgQ29udGFpbmVyTm9uZSB9OwogICAgICAgICB9CiAgICAgfQogCi0gICAg
cmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCB2YWx1ZUludGVy
bmFsVmFsdWUoW2NvbnRleHQgd3JhcHBlckZvck9iakNPYmplY3Q6b2JqZWN0XSksIENvbnRhaW5l
ck5vbmUgfTsKKyAgICByZXR1cm4geyBvYmplY3QsIHZhbHVlSW50ZXJuYWxWYWx1ZShbY29udGV4
dCB3cmFwcGVyRm9yT2JqQ09iamVjdDpvYmplY3RdKSwgQ29udGFpbmVyTm9uZSB9OwogfQogCiBK
U1ZhbHVlUmVmIG9iamVjdFRvVmFsdWUoSlNDb250ZXh0ICpjb250ZXh0LCBpZCBvYmplY3QpCkBA
IC0xMDAwLDcgKzEwMDAsNyBAQCBKU1ZhbHVlUmVmIG9iamVjdFRvVmFsdWUoSlNDb250ZXh0ICpj
b250ZXh0LCBpZCBvYmplY3QpCiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkg
PSAoTlNEaWN0aW9uYXJ5ICopY3VycmVudC5vYmpjOwogICAgICAgICAgICAgZm9yIChpZCBrZXkg
aW4gW2RpY3Rpb25hcnkga2V5RW51bWVyYXRvcl0pIHsKICAgICAgICAgICAgICAgICBpZiAoW2tl
eSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgICAgICAgICAgICAg
IEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChD
RlN0cmluZ1JlZilrZXkpOworICAgICAgICAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9wZXJ0
eU5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
a2V5KTsKICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0UmVm
LCBqcywgcHJvcGVydHlOYW1lLCBjb252ZXJ0b3IuY29udmVydChbZGljdGlvbmFyeSBvYmplY3RG
b3JLZXk6a2V5XSksIDAsIDApOwogICAgICAgICAgICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2Uo
cHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KaW5kZXggMzBjMzdlMmU1YThkOWZjYTY1ZGZlY2Y1
MjYwN2I4OGI0NjhiZDc2Mi4uYmNjODc5NDg5ZTYyNzE2YzQyNzBlZjg2NTlmOTZjNzM0NTY2M2Q2
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5l
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQpA
QCAtNzAsMTMgKzcwLDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBKU1ZNV3JhcHBlckNhY2hlCiArICh2
b2lkKWFkZFdyYXBwZXI6KEpTVmlydHVhbE1hY2hpbmUgKil3cmFwcGVyIGZvckpTQ29udGV4dEdy
b3VwUmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogewogICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKHdyYXBwZXJDYWNoZU11dGV4KTsKLSAgICBOU01hcEluc2VydCh3cmFwcGVyQ2Fj
aGUoKSwgZ3JvdXAsIHdyYXBwZXIpOworICAgIE5TTWFwSW5zZXJ0KHdyYXBwZXJDYWNoZSgpLCBn
cm91cCwgKF9fYnJpZGdlIHZvaWQqKXdyYXBwZXIpOwogfQogCiArIChKU1ZpcnR1YWxNYWNoaW5l
ICopd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAog
ewogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKHdyYXBwZXJDYWNoZU11dGV4KTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNWaXJ0dWFsTWFjaGluZSAqPihOU01hcEdldCh3cmFwcGVy
Q2FjaGUoKSwgZ3JvdXApKTsKKyAgICByZXR1cm4gKF9fYnJpZGdlIEpTVmlydHVhbE1hY2hpbmUg
KilOU01hcEdldCh3cmFwcGVyQ2FjaGUoKSwgZ3JvdXApOwogfQogCiBAZW5kCkBAIC0xNTQsNyAr
MTU0LDcgQEAgc3RhdGljIGlkIGdldEludGVybmFsT2JqY09iamVjdChpZCBvYmplY3QpCiAtIChi
b29sKWlzT2xkRXh0ZXJuYWxPYmplY3Q6KGlkKW9iamVjdAogewogICAgIEpTQzo6Vk0qIHZtID0g
dG9KUyhtX2dyb3VwKTsKLSAgICByZXR1cm4gdm0tPmhlYXAuY29sbGVjdG9yU2xvdFZpc2l0b3Io
KS5jb250YWluc09wYXF1ZVJvb3Qob2JqZWN0KTsKKyAgICByZXR1cm4gdm0tPmhlYXAuY29sbGVj
dG9yU2xvdFZpc2l0b3IoKS5jb250YWluc09wYXF1ZVJvb3QoKF9fYnJpZGdlIHZvaWQqKW9iamVj
dCk7CiB9CiAKIC0gKHZvaWQpYWRkRXh0ZXJuYWxSZW1lbWJlcmVkT2JqZWN0OihpZClvYmplY3QK
QEAgLTE4NywxMSArMTg3LDEwIEBAIC0gKHZvaWQpYWRkTWFuYWdlZFJlZmVyZW5jZTooaWQpb2Jq
ZWN0IHdpdGhPd25lcjooaWQpb3duZXIKICAgICAgICAgb3duZWRPYmplY3RzID0gW1tOU01hcFRh
YmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6
aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MV07CiAKICAgICAgICAgW21fZXh0ZXJuYWxPYmplY3RH
cmFwaCBzZXRPYmplY3Q6b3duZWRPYmplY3RzIGZvcktleTpvd25lcl07Ci0gICAgICAgIFtvd25l
ZE9iamVjdHMgcmVsZWFzZV07CiAgICAgfQogCi0gICAgc2l6ZV90IGNvdW50ID0gcmVpbnRlcnBy
ZXRfY2FzdDxzaXplX3Q+KE5TTWFwR2V0KG93bmVkT2JqZWN0cywgb2JqZWN0KSk7Ci0gICAgTlNN
YXBJbnNlcnQob3duZWRPYmplY3RzLCBvYmplY3QsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNv
dW50ICsgMSkpOworICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihO
U01hcEdldChvd25lZE9iamVjdHMsIChfX2JyaWRnZSB2b2lkKilvYmplY3QpKTsKKyAgICBOU01h
cEluc2VydChvd25lZE9iamVjdHMsIChfX2JyaWRnZSB2b2lkKilvYmplY3QsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGNvdW50ICsgMSkpOwogfQogCiAtICh2b2lkKXJlbW92ZU1hbmFnZWRSZWZl
cmVuY2U6KGlkKW9iamVjdCB3aXRoT3duZXI6KGlkKW93bmVyCkBAIC0yMTIsMTQgKzIxMSwxNCBA
QCAtICh2b2lkKXJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6KGlkKW9iamVjdCB3aXRoT3duZXI6KGlk
KW93bmVyCiAgICAgaWYgKCFvd25lZE9iamVjdHMpCiAgICAgICAgIHJldHVybjsKICAgIAotICAg
IHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdldChvd25lZE9i
amVjdHMsIG9iamVjdCkpOworICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6
ZV90PihOU01hcEdldChvd25lZE9iamVjdHMsIChfX2JyaWRnZSB2b2lkKilvYmplY3QpKTsKICAg
ICBpZiAoY291bnQgPiAxKSB7Ci0gICAgICAgIE5TTWFwSW5zZXJ0KG93bmVkT2JqZWN0cywgb2Jq
ZWN0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCAtIDEpKTsKKyAgICAgICAgTlNNYXBJ
bnNlcnQob3duZWRPYmplY3RzLCAoX19icmlkZ2Ugdm9pZCopb2JqZWN0LCByZWludGVycHJldF9j
YXN0PHZvaWQqPihjb3VudCAtIDEpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICBpZiAoY291bnQgPT0gMSkKLSAgICAgICAgTlNNYXBSZW1vdmUob3duZWRPYmplY3RzLCBvYmpl
Y3QpOworICAgICAgICBOU01hcFJlbW92ZShvd25lZE9iamVjdHMsIChfX2JyaWRnZSB2b2lkKilv
YmplY3QpOwogCiAgICAgaWYgKCFbb3duZWRPYmplY3RzIGNvdW50XSkgewogICAgICAgICBbbV9l
eHRlcm5hbE9iamVjdEdyYXBoIHJlbW92ZU9iamVjdEZvcktleTpvd25lcl07CkBAIC0yNDYsMTIg
KzI0NSwxMiBAQCArIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4
dEdyb3VwUmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogCiAtIChKU0NvbnRleHQgKiljb250
ZXh0Rm9yR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRleHQK
IHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNDb250ZXh0ICo+KE5TTWFwR2V0KG1fY29udGV4
dENhY2hlLCBnbG9iYWxDb250ZXh0KSk7CisgICAgcmV0dXJuIChfX2JyaWRnZSBKU0NvbnRleHQg
KilOU01hcEdldChtX2NvbnRleHRDYWNoZSwgZ2xvYmFsQ29udGV4dCk7CiB9CiAKIC0gKHZvaWQp
YWRkQ29udGV4dDooSlNDb250ZXh0ICopd3JhcHBlciBmb3JHbG9iYWxDb250ZXh0UmVmOihKU0ds
b2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dAogewotICAgIE5TTWFwSW5zZXJ0KG1fY29udGV4
dENhY2hlLCBnbG9iYWxDb250ZXh0LCB3cmFwcGVyKTsKKyAgICBOU01hcEluc2VydChtX2NvbnRl
eHRDYWNoZSwgZ2xvYmFsQ29udGV4dCwgKF9fYnJpZGdlIHZvaWQqKXdyYXBwZXIpOwogfQogCiAt
IChMb2NrJilleHRlcm5hbERhdGFNdXRleApAQCAtMzIxLDkgKzMyMCw5IEBAIHN0YXRpYyB2b2lk
IHNjYW5FeHRlcm5hbE9iamVjdEdyYXBoKEpTQzo6Vk0mIHZtLCBKU0M6OlNsb3RWaXNpdG9yJiB2
aXNpdG9yLCB2b2lkCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGF1
dG8gYXBwZW5kT3duZWRPYmplY3RzID0gWyZdIHsKLSAgICAgICAgICAgICAgICBOU01hcFRhYmxl
ICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6c3RhdGlj
X2Nhc3Q8aWQ+KG5leHRSb290KV07CisgICAgICAgICAgICAgICAgTlNNYXBUYWJsZSAqb3duZWRP
YmplY3RzID0gW2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBpZClu
ZXh0Um9vdF07CiAgICAgICAgICAgICAgICAgZm9yIChpZCBvd25lZE9iamVjdCBpbiBvd25lZE9i
amVjdHMpCi0gICAgICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChzdGF0aWNfY2FzdDx2b2lk
Kj4ob3duZWRPYmplY3QpKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKChfX2Jy
aWRnZSB2b2lkKilvd25lZE9iamVjdCk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBp
ZiAobG9ja0FjcXVpcmVkKQpAQCAtMzU2LDcgKzM1NSw3IEBAIHZvaWQgc2NhbkV4dGVybmFsUmVt
ZW1iZXJlZFNldChKU0M6OlZNJiB2bSwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICAg
ICAgICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9i
amVjdEZvcktleTprZXldOwogICAgICAgICAgICAgYm9vbCBsb2NrQWNxdWlyZWQgPSB0cnVlOwog
ICAgICAgICAgICAgZm9yIChpZCBvd25lZE9iamVjdCBpbiBvd25lZE9iamVjdHMpCi0gICAgICAg
ICAgICAgICAgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGgodm0sIHZpc2l0b3IsIG93bmVkT2JqZWN0
LCBsb2NrQWNxdWlyZWQpOworICAgICAgICAgICAgICAgIHNjYW5FeHRlcm5hbE9iamVjdEdyYXBo
KHZtLCB2aXNpdG9yLCAoX19icmlkZ2Ugdm9pZCopb3duZWRPYmplY3QsIGxvY2tBY3F1aXJlZCk7
CiAgICAgICAgIH0KICAgICAgICAgW2V4dGVybmFsUmVtZW1iZXJlZFNldCByZW1vdmVBbGxPYmpl
Y3RzXTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3Jh
cHBlck1hcC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCmlu
ZGV4IDAxOTkyM2FjOTYxMGRlZDE0NDA0MGMwNGNkNzM3MjZhMmQzZDNhZmUuLjkxYTIxMjljNmJm
NWFhYWUxZDJhMDY0MzVmOTU1ZjkxYjhhMTY0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNXcmFwcGVyTWFwLm1tCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIG1ha2VXcmFwcGVyKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGFzcywgaWQg
d3JhcHAKIAogICAgIEFTU0VSVChqc0NsYXNzKTsKICAgICBKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8
SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+KiBvYmplY3QgPSBKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8
SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9iamNXcmFwcGVyT2JqZWN0
U3RydWN0dXJlKCksIGpzQ2xhc3MsIDApOwotICAgIG9iamVjdC0+c2V0V3JhcHBlZE9iamVjdCh3
cmFwcGVkT2JqZWN0KTsKKyAgICBvYmplY3QtPnNldFdyYXBwZWRPYmplY3QoKF9fYnJpZGdlIHZv
aWQqKXdyYXBwZWRPYmplY3QpOwogICAgIGlmIChKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUgPSBq
c0NsYXNzLT5wcm90b3R5cGUoZXhlYykpCiAgICAgICAgIG9iamVjdC0+c2V0UHJvdG90eXBlRGly
ZWN0KHZtLCBwcm90b3R5cGUpOwogCkBAIC01MjQsOCArNTI0LDggQEAgLSAoSlNDOjpKU09iamVj
dCopd3JhcHBlckZvck9iamVjdDooaWQpb2JqZWN0IGluQ29udGV4dDooSlNDb250ZXh0ICopY29u
dGV4dAogICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIodm0pOwogCi0gICAgSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFw
cGVyT2JqZWN0Piogd3JhcHBlciA9IEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3Jh
cHBlck9iamVjdD46OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0
cnVjdHVyZSwgbV9jbGFzc1JlZiwgMCk7Ci0gICAgd3JhcHBlci0+c2V0V3JhcHBlZE9iamVjdChv
YmplY3QpOworICAgIGF1dG8gd3JhcHBlciA9IEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpT
QVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIHN0cnVjdHVyZSwgbV9jbGFzc1JlZiwgMCk7CisgICAgd3JhcHBlci0+c2V0V3JhcHBlZE9i
amVjdCgoX19icmlkZ2Ugdm9pZCopb2JqZWN0KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApA
QCAtNjQ0LDEwICs2NDQsMTAgQEAgLSAoSlNWYWx1ZSAqKWpzV3JhcHBlckZvck9iamVjdDooaWQp
b2JqZWN0IGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogLSAoSlNWYWx1ZSAqKW9iamNX
cmFwcGVyRm9ySlNWYWx1ZVJlZjooSlNWYWx1ZVJlZil2YWx1ZSBpbkNvbnRleHQ6Y29udGV4dAog
ewogICAgIEFTU0VSVCh0b0pTR2xvYmFsT2JqZWN0KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0pLT53cmFwcGVyTWFwKCkgPT0gc2VsZik7Ci0gICAgSlNWYWx1ZSAqd3JhcHBlciA9IHN0YXRp
Y19jYXN0PEpTVmFsdWUgKj4oTlNNYXBHZXQobV9jYWNoZWRPYmpDV3JhcHBlcnMsIHZhbHVlKSk7
CisgICAgSlNWYWx1ZSAqd3JhcHBlciA9IChfX2JyaWRnZSBKU1ZhbHVlICopTlNNYXBHZXQobV9j
YWNoZWRPYmpDV3JhcHBlcnMsIHZhbHVlKTsKICAgICBpZiAoIXdyYXBwZXIpIHsKICAgICAgICAg
d3JhcHBlciA9IFtbW0pTVmFsdWUgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWUgaW5Db250ZXh0
OmNvbnRleHRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgTlNNYXBJbnNlcnQobV9jYWNoZWRPYmpD
V3JhcHBlcnMsIHZhbHVlLCB3cmFwcGVyKTsKKyAgICAgICAgTlNNYXBJbnNlcnQobV9jYWNoZWRP
YmpDV3JhcHBlcnMsIHZhbHVlLCAoX19icmlkZ2Ugdm9pZCopd3JhcHBlcik7CiAgICAgfQogICAg
IHJldHVybiB3cmFwcGVyOwogfQpAQCAtNjY0LDcgKzY2NCw3IEBAIGlkIHRyeVVud3JhcE9iamNP
YmplY3QoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMoY29udGV4dCkpOwogICAgIEpTQzo6Vk0mIHZt
ID0gdG9KUyhjb250ZXh0KS0+dm0oKTsKICAgICBpZiAodG9KUyhvYmplY3QpLT5pbmhlcml0czxK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+Pih2bSkpCi0gICAg
ICAgIHJldHVybiAoaWQpSlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3QqPih0b0pT
KG9iamVjdCkpLT53cmFwcGVkT2JqZWN0KCk7CisgICAgICAgIHJldHVybiAoX19icmlkZ2UgaWQp
SlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3QqPih0b0pTKG9iamVjdCkpLT53cmFw
cGVkT2JqZWN0KCk7CiAgICAgaWYgKGlkIHRhcmdldCA9IHRyeVVud3JhcENvbnN0cnVjdG9yKCZ2
bSwgb2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKICAgICByZXR1cm4gbmlsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KaW5k
ZXggODg4NmZlMDM5ZmQ5YjQ1NWMzNGIzNTljMWVlN2QxNGFjZDg0NjQ4ZS4uYzRlNzNhODY2ZDZi
NjBiMDg4MjNkNzgyMTA0NTBjOTA1YzNlZDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC02MDMsNyArNjAzLDcgQEAgc3Rh
dGljIGJvb2wgYmxvY2tTaWduYXR1cmVDb250YWluc0NsYXNzKCkKIHsKICAgICBzdGF0aWMgYm9v
bCBjb250YWluc0NsYXNzID0gXnsKICAgICAgICAgaWQgYmxvY2sgPSBeKE5TU3RyaW5nICpzdHJp
bmcpeyByZXR1cm4gc3RyaW5nOyB9OwotICAgICAgICByZXR1cm4gX0Jsb2NrX2hhc19zaWduYXR1
cmUoYmxvY2spICYmIHN0cnN0cihfQmxvY2tfc2lnbmF0dXJlKGJsb2NrKSwgIk5TU3RyaW5nIik7
CisgICAgICAgIHJldHVybiBfQmxvY2tfaGFzX3NpZ25hdHVyZSgoX19icmlkZ2Ugdm9pZCopYmxv
Y2spICYmIHN0cnN0cihfQmxvY2tfc2lnbmF0dXJlKChfX2JyaWRnZSB2b2lkKilibG9jayksICJO
U1N0cmluZyIpOwogICAgIH0oKTsKICAgICByZXR1cm4gY29udGFpbnNDbGFzczsKIH0KQEAgLTY3
NywxOCArNjc3LDIwIEBAIEpTT2JqZWN0UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9yTWV0aG9k
KEpTQ29udGV4dCAqY29udGV4dCwgQ2xhc3MgY2xzLCBQcm90b2NvCiB7CiAgICAgTlNJbnZvY2F0
aW9uICppbnZvY2F0aW9uID0gW05TSW52b2NhdGlvbiBpbnZvY2F0aW9uV2l0aE1ldGhvZFNpZ25h
dHVyZTpbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczp0eXBlc11dOwog
ICAgIFtpbnZvY2F0aW9uIHNldFNlbGVjdG9yOnNlbF07Ci0gICAgLy8gV2UgbmVlZCB0byByZXRh
aW4gdGhlIHRhcmdldCBDbGFzcyBiZWNhdXNlIG1faW52b2NhdGlvbiBkb2Vzbid0IHJldGFpbiBp
dCBieSBkZWZhdWx0IChhbmQgd2UgZG9uJ3Qgd2FudCBpdCB0bykuCi0gICAgLy8gRklYTUU6IFdo
YXQgcmVsZWFzZXMgaXQ/Ci0gICAgaWYgKCFpc0luc3RhbmNlTWV0aG9kKQotICAgICAgICBbaW52
b2NhdGlvbiBzZXRUYXJnZXQ6W2NscyByZXRhaW5dXTsKKyAgICBpZiAoIWlzSW5zdGFuY2VNZXRo
b2QpIHsKKyAgICAgICAgW2ludm9jYXRpb24gc2V0VGFyZ2V0OmNsc107CisgICAgICAgIC8vIFdl
IG5lZWQgdG8gcmV0YWluIHRoZSB0YXJnZXQgQ2xhc3MgYmVjYXVzZSBtX2ludm9jYXRpb24gZG9l
c24ndCByZXRhaW4gaXQgYnkgZGVmYXVsdCAoYW5kIHdlIGRvbid0IHdhbnQgaXQgdG8pLgorICAg
ICAgICAvLyBGSVhNRTogV2hhdCByZWxlYXNlcyBpdD8KKyAgICAgICAgQ0ZSZXRhaW4oKF9fYnJp
ZGdlIENGVHlwZVJlZiljbHMpOworICAgIH0KICAgICByZXR1cm4gb2JqQ0NhbGxiYWNrRnVuY3Rp
b25Gb3JJbnZvY2F0aW9uKGNvbnRleHQsIGludm9jYXRpb24sIGlzSW5zdGFuY2VNZXRob2QgPyBD
YWxsYmFja0luc3RhbmNlTWV0aG9kIDogQ2FsbGJhY2tDbGFzc01ldGhvZCwgaXNJbnN0YW5jZU1l
dGhvZCA/IGNscyA6IG5pbCwgX3Byb3RvY29sX2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2Nv
bCwgc2VsLCBZRVMsIGlzSW5zdGFuY2VNZXRob2QpKTsKIH0KIAogSlNPYmplY3RSZWYgb2JqQ0Nh
bGxiYWNrRnVuY3Rpb25Gb3JCbG9jayhKU0NvbnRleHQgKmNvbnRleHQsIGlkIHRhcmdldCkKIHsK
LSAgICBpZiAoIV9CbG9ja19oYXNfc2lnbmF0dXJlKHRhcmdldCkpCisgICAgaWYgKCFfQmxvY2tf
aGFzX3NpZ25hdHVyZSgoX19icmlkZ2Ugdm9pZCopdGFyZ2V0KSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgY29uc3QgY2hhciogc2lnbmF0dXJlID0gX0Jsb2NrX3NpZ25hdHVyZSh0YXJn
ZXQpOworICAgIGNvbnN0IGNoYXIqIHNpZ25hdHVyZSA9IF9CbG9ja19zaWduYXR1cmUoKF9fYnJp
ZGdlIHZvaWQqKXRhcmdldCk7CiAgICAgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gW05TSW52
b2NhdGlvbiBpbnZvY2F0aW9uV2l0aE1ldGhvZFNpZ25hdHVyZTpbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpzaWduYXR1cmVdXTsKIAogICAgIC8vIFdlIGRvbid0IHdh
bnQgdG8gdXNlIC1yZXRhaW5Bcmd1bWVudHMgYmVjYXVzZSB0aGF0IGxlYWtzIG1lbW9yeS4gQXJn
dW1lbnRzIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVudGlt
ZUV4dHJhcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVudGltZUV4dHJhcy5o
CmluZGV4IDJkN2RiNjYxOTI1N2E2OWQxODFhYzlmNzk2MGVhMzk4YWNkOTY5MDcuLjIwZDhiODU4
NDdhNTUzYTMzY2RmYzEzZjUyZWM2YTRkOTUyZjhjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL09iamNSdW50aW1lRXh0cmFzLmgKQEAgLTQwLDcgKzQwLDcgQEAgaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxULCBXVEY6OlN5c3RlbUZyZWU8VD4+IGFkb3B0U3lzdGVtKFUgdmFsdWUp
CiBpbmxpbmUgYm9vbCBwcm90b2NvbEltcGxlbWVudHNQcm90b2NvbChQcm90b2NvbCAqY2FuZGlk
YXRlLCBQcm90b2NvbCAqdGFyZ2V0KQogewogICAgIHVuc2lnbmVkIHByb3RvY29sUHJvdG9jb2xz
Q291bnQ7Ci0gICAgYXV0byBwcm90b2NvbFByb3RvY29scyA9IGFkb3B0U3lzdGVtPFByb3RvY29s
KltdPihwcm90b2NvbF9jb3B5UHJvdG9jb2xMaXN0KGNhbmRpZGF0ZSwgJnByb3RvY29sUHJvdG9j
b2xzQ291bnQpKTsKKyAgICBhdXRvIHByb3RvY29sUHJvdG9jb2xzID0gYWRvcHRTeXN0ZW08X191
bnNhZmVfdW5yZXRhaW5lZCBQcm90b2NvbCpbXT4ocHJvdG9jb2xfY29weVByb3RvY29sTGlzdChj
YW5kaWRhdGUsICZwcm90b2NvbFByb3RvY29sc0NvdW50KSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHByb3RvY29sUHJvdG9jb2xzQ291bnQ7ICsraSkgewogICAgICAgICBpZiAocHJv
dG9jb2xfaXNFcXVhbChwcm90b2NvbFByb3RvY29sc1tpXSwgdGFyZ2V0KSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgdm9pZCBmb3JFYWNoUHJvdG9j
b2xJbXBsZW1lbnRpbmdQcm90b2NvbChDbGFzcyBjbHMsIFByb3RvY29sICp0YXJnZXQsIHZvaQog
ICAgIC8vIEluaXRpYWxseSBmaWxsIHRoZSB3b3JrbGlzdCB3aXRoIHRoZSBDbGFzcydzIHByb3Rv
Y29scy4KICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHByb3RvY29sc0NvdW50OwotICAgICAgICBh
dXRvIHByb3RvY29scyA9IGFkb3B0U3lzdGVtPFByb3RvY29sKltdPihjbGFzc19jb3B5UHJvdG9j
b2xMaXN0KGNscywgJnByb3RvY29sc0NvdW50KSk7CisgICAgICAgIGF1dG8gcHJvdG9jb2xzID0g
YWRvcHRTeXN0ZW08X191bnNhZmVfdW5yZXRhaW5lZCBQcm90b2NvbCpbXT4oY2xhc3NfY29weVBy
b3RvY29sTGlzdChjbHMsICZwcm90b2NvbHNDb3VudCkpOwogICAgICAgICB3b3JrbGlzdC5hcHBl
bmQocHJvdG9jb2xzLmdldCgpLCBwcm90b2NvbHNDb3VudCk7CiAgICAgfQogCkBAIC02OSw3ICs2
OSw3IEBAIGlubGluZSB2b2lkIGZvckVhY2hQcm90b2NvbEltcGxlbWVudGluZ1Byb3RvY29sKENs
YXNzIGNscywgUHJvdG9jb2wgKnRhcmdldCwgdm9pCiAgICAgICAgIHdvcmtsaXN0LnJlbW92ZUxh
c3QoKTsKIAogICAgICAgICAvLyBBcmUgd2UgZW5jb3VudGVyaW5nIHRoaXMgUHJvdG9jb2wgZm9y
IHRoZSBmaXJzdCB0aW1lPwotICAgICAgICBpZiAoIXZpc2l0ZWQuYWRkKHByb3RvY29sKS5pc05l
d0VudHJ5KQorICAgICAgICBpZiAoIXZpc2l0ZWQuYWRkKChfX2JyaWRnZSB2b2lkKilwcm90b2Nv
bCkuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIElmIGl0
IGltcGxlbWVudHMgdGhlIHByb3RvY29sLCBtYWtlIHRoZSBjYWxsYmFjay4KQEAgLTgyLDcgKzgy
LDcgQEAgaW5saW5lIHZvaWQgZm9yRWFjaFByb3RvY29sSW1wbGVtZW50aW5nUHJvdG9jb2woQ2xh
c3MgY2xzLCBQcm90b2NvbCAqdGFyZ2V0LCB2b2kKICAgICAgICAgLy8gQWRkIGluY29ycG9yYXRl
ZCBwcm90b2NvbHMgdG8gdGhlIHdvcmtsaXN0LgogICAgICAgICB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBwcm90b2NvbHNDb3VudDsKLSAgICAgICAgICAgIGF1dG8gcHJvdG9jb2xzID0gYWRvcHRT
eXN0ZW08UHJvdG9jb2wqW10+KHByb3RvY29sX2NvcHlQcm90b2NvbExpc3QocHJvdG9jb2wsICZw
cm90b2NvbHNDb3VudCkpOworICAgICAgICAgICAgYXV0byBwcm90b2NvbHMgPSBhZG9wdFN5c3Rl
bTxfX3Vuc2FmZV91bnJldGFpbmVkIFByb3RvY29sKltdPihwcm90b2NvbF9jb3B5UHJvdG9jb2xM
aXN0KHByb3RvY29sLCAmcHJvdG9jb2xzQ291bnQpKTsKICAgICAgICAgICAgIHdvcmtsaXN0LmFw
cGVuZChwcm90b2NvbHMuZ2V0KCksIHByb3RvY29sc0NvdW50KTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggMWJjNDQ0MTJjYjA2
NzE3OTc5ZGE0MjA0OWM5ZmFmY2QzNzA1MmE4Ny4uNjE4ODA2OTczOWE3MjcyNzRmZmI0OTBhNmE3
ODdhOTI4MmIyMjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0K
QEAgLTU5LDE1ICs1OSwxNCBAQAogICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKTsKIAotI2RlZmlu
ZSBDT05WRVJUX05TTlVMTF9UT19OSUwoZXhwcikgICAgICAgICAgXAotICAgIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoW2V4cHIgaXNFcXVh
bDpbTlNOdWxsIG51bGxdXSkgICAgXAotICAgICAgICAgICAgZXhwciA9IG5pbDsgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKDApOwotCi0KIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCitzdGF0aWMgdm9pZCBjb252ZXJ0TlNOdWxsVG9OaWwoX19zdHJvbmcgTlNOdW1iZXIgKiYg
bnVtYmVyKQoreworICAgIGlmIChbbnVtYmVyIGlzRXF1YWw6W05TTnVsbCBudWxsXV0pCisgICAg
ICAgIG51bWJlciA9IG5pbDsKK30KKwogc3RhdGljIGJvb2wgY2FuQWNjZXNzV2ViSW5zcGVjdG9y
TWFjaFBvcnQoKQogewogICAgIHJldHVybiAhc2FuZGJveF9jaGVjayhnZXRwaWQoKSwgIm1hY2gt
bG9va3VwIiwgc3RhdGljX2Nhc3Q8ZW51bSBzYW5kYm94X2ZpbHRlcl90eXBlPihTQU5EQk9YX0ZJ
TFRFUl9HTE9CQUxfTkFNRSB8IFNBTkRCT1hfQ0hFQ0tfTk9fUkVQT1JUKSwgV0lSWFBDTWFjaFBv
cnROYW1lKTsKQEAgLTQ5MSw3ICs0OTAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICBCQUlMX0lGX1VORVhQ
RUNURURfVFlQRShzZW5kZXIsIFtOU1N0cmluZyBjbGFzc10pOwogCiAgICAgTlNOdW1iZXIgKmF1
dG9tYXRpY2FsbHlQYXVzZU51bWJlciA9IHVzZXJJbmZvW1dJUkF1dG9tYXRpY2FsbHlQYXVzZV07
Ci0gICAgQ09OVkVSVF9OU05VTExfVE9fTklMKGF1dG9tYXRpY2FsbHlQYXVzZU51bWJlcik7Cisg
ICAgY29udmVydE5TTnVsbFRvTmlsKGF1dG9tYXRpY2FsbHlQYXVzZU51bWJlcik7CiAgICAgQkFJ
TF9JRl9VTkVYUEVDVEVEX1RZUEVfQUxMT1dJTkdfTklMKGF1dG9tYXRpY2FsbHlQYXVzZU51bWJl
ciwgW05TTnVtYmVyIGNsYXNzXSk7CiAgICAgQk9PTCBhdXRvbWF0aWNhbGx5UGF1c2UgPSBhdXRv
bWF0aWNhbGx5UGF1c2VOdW1iZXIuYm9vbFZhbHVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2Ev
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQppbmRleCBjZWE2YzljMWFmMWU2MDEwMmEx
MjM0NWVjZjk4Njk5NDM1NmIwZTMyLi43NTNhYzRhOGNjMGQ5YmQzMGVkNTg4ZmJhOGNhMzBhNzgy
OTY2Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24ubW0KQEAgLTM0LDM2ICszNCwxMSBAQAogI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBv
cnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9j
b2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvQ0ZYUENCcmlkZ2VT
UEkuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0
Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNp
bXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+Ci0jZWxzZQotZXh0ZXJuICJDIiB7
Ci0gICAgeHBjX29iamVjdF90IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoQ0ZU
eXBlUmVmKTsKLSAgICBDRlR5cGVSZWYgX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2Fn
ZSh4cGNfb2JqZWN0X3QpOwotfQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMg
Ym9vbCBhdWRpdFRva2VuSGFzRW50aXRsZW1lbnQoYXVkaXRfdG9rZW5fdCB0b2tlbiwgTlNTdHJp
bmcgKmVudGl0bGVtZW50KQotewotICAgIGF1dG8gdGFzayA9IGFkb3B0Q0YoU2VjVGFza0NyZWF0
ZVdpdGhBdWRpdFRva2VuKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRva2VuKSk7Ci0gICAgaWYgKCF0
YXNrKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIHZhbHVlID0gYWRvcHRDRihT
ZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQodGFzay5nZXQoKSwgKENGU3RyaW5nUmVmKWVu
dGl0bGVtZW50LCBudWxscHRyKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlLmdldCgpKSAhPSBDRkJvb2xlYW5HZXRU
eXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIENGQm9vbGVhbkdl
dFZhbHVlKHN0YXRpY19jYXN0PENGQm9vbGVhblJlZj4odmFsdWUuZ2V0KCkpKTsKLX0KLSNlbmRp
ZgotCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogLy8gQ29uc3RhbnRzIHByaXZhdGUgdG8gdGhp
cyBmaWxlIGZvciBtZXNzYWdlIHNlcmlhbGl6YXRpb24gb24gYm90aCBlbmRzLgpAQCAtMTczLDcg
KzE0OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6aGFuZGxlRXZlbnQo
eHBjX29iamVjdF90IG9iamVjdCkKICAgICBpZiAoIW1fdmFsaWRhdGVkKSB7CiAgICAgICAgIGF1
ZGl0X3Rva2VuX3QgdG9rZW47CiAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tl
bihtX2Nvbm5lY3Rpb24sICZ0b2tlbik7Ci0gICAgICAgIGlmICghYXVkaXRUb2tlbkhhc0VudGl0
bGVtZW50KHRva2VuLCBAImNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci53ZWJpbnNwZWN0
b3JkIikpIHsKKyAgICAgICAgaWYgKCFXVEY6Omhhc0VudGl0bGVtZW50KHRva2VuLCAiY29tLmFw
cGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLndlYmluc3BlY3RvcmQiKSkgewogICAgICAgICAgICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAgICAgICAgICAgICAvLyBUaGlz
IHdpbGwgdHJpZ2dlciBvbmUgbGFzdCBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50
IG9uIHRoZSBxdWV1ZSBhbmQgZGVyZWYgdXMuCiAgICAgICAgICAgICBjbG9zZU9uUXVldWUoKTsK
QEAgLTIxMSw3ICsxODYsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OnNl
bmRNZXNzYWdlKE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYQogICAgIGlmICh1c2Vy
SW5mbykKICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnVzZXJJbmZvIGZvcktleTpSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uVXNlckluZm9LZXldOwogCi0gICAgeHBjX29iamVjdF90
IHhwY0RpY3Rpb25hcnkgPSBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChDRkRp
Y3Rpb25hcnlSZWYpZGljdGlvbmFyeS5nZXQoKSk7CisgICAgeHBjX29iamVjdF90IHhwY0RpY3Rp
b25hcnkgPSBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChfX2JyaWRnZSBDRkRp
Y3Rpb25hcnlSZWYpZGljdGlvbmFyeS5nZXQoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4
cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlwZSh4cGNEaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9E
SUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwogICAgIGlmICgh
eHBjRGljdGlvbmFyeSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYmU4OWYxN2ZiMmQzNTNlMWVhYjlmMjQzMWVjMjMwNDBlMGE1
MWViNS4uM2U2MDY4Y2M2OWRmOTQ0ZDQ0OGJlOTk4OWRjZjhkZjk0ZmJiNTc2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NCw3ICs0NCw3IEBACiAJCTBG
RUMzQzVFMUYzNjhBOTcwMEY1OUI2QyAvKiBSZWFkV3JpdGVMb2NrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUMzQzVDMUYzNjhBOTcwMEY1OUI2
QyAvKiBSZWFkV3JpdGVMb2NrLmNwcCAqLzsgfTsKIAkJMEZGRjE5REMxQkIzMzRFQjAwODg2RDkx
IC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkZGMTlEQTFCQjMzNEVCMDA4ODZEOTEgLyogUGFyYWxsZWxIZWxw
ZXJQb29sLmNwcCAqLzsgfTsKIAkJMTQwMjJGNDExOEY1QzNGQzAwN0ZGMEVCIC8qIGxpYmJtYWxs
b2MuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MDIyRjQwMThGNUMzRkMwMDdGRjBFQiAvKiBsaWJibWFsbG9jLmEgKi87IH07Ci0JCTE0M0RERTk2
MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRERFOTUyMEM4QkMzNzAwN0Y3NkZBIC8qIEVu
dGl0bGVtZW50cy5jcHAgKi87IH07CisJCTE0M0RERTk2MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRp
dGxlbWVudHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDNEREU5NTIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1tICovOyB9OwogCQkx
NDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyog
UkFNU2l6ZS5jcHAgKi87IH07CiAJCTE0NDdBRUM2MThGQ0U1NzcwMEIzRDdGRiAvKiBGb3VuZGF0
aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0NDdBRUM1MThGQ0U1NzcwMEIzRDdGRiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAq
LzsgfTsKIAkJMTQ0N0FFQzcxOEZDRTU4MDAwQjNEN0ZGIC8qIGxpYldURi5hIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQyNDdCNjIxNDY4OUI4NjAw
RTc4Qjc2IC8qIGxpYldURi5hICovOyB9OwpAQCAtMTQyLDYgKzE0Miw3IEBACiAJCUMyQkNGQzQw
MUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkJDRkMzRTFGNjFEMTMwMDBDOTIyMkMgLyogTGFuZ3Vh
Z2UuY3BwICovOyB9OwogCQlDMkJDRkM0MjFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkJDRkM0
MTFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi87IH07CiAJCUMyQkNGQzU1MUY2
MjFGM0YwMEM5MjIyQyAvKiBMaW5lRW5kaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQkNGQzUzMUY2MjFGM0YwMEM5MjIyQyAvKiBMaW5lRW5k
aW5nLmNwcCAqLzsgfTsKKwkJQzgwNUVGMzlFNUYxNDQ4MUE5NkQzOUZDIC8qIEFTQ0lJTGl0ZXJh
bC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkYw
NTA3OTBEOUM0MzJBOTkwODVFNzUgLyogQVNDSUlMaXRlcmFsLmNwcCAqLzsgfTsKIAkJQ0Q1NDk3
QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVk
aWFUaW1lLmNwcCAqLzsgfTsKIAkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2Jq
Q0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAq
LzsgfTsKIAkJRTE1NTU2RjUxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRp
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1
NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwICovOyB9
OwpAQCAtMTU2LDcgKzE1Nyw2IEBACiAJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZB
c3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCAqLzsgfTsK
IAkJRkU4NTQxNkUxRkJFMjg1RDAwOERBNURBIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODU0MTZDMUZCRTI4NUIwMDhEQTVE
QSAvKiBQb2lzb25lZC5jcHAgKi87IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBT
dGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKLQkJ
QzgwNUVGMzlFNUYxNDQ4MUE5NkQzOUZDIC8qIEFTQ0lJTGl0ZXJhbC5jcHAgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjA1MDc5MEQ5QzQzMkE5OTA4
NUU3NSAvKiBBU0NJSUxpdGVyYWwuY3BwICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0y
NzEsNyArMjcxLDcgQEAKIAkJMEZGRjE5REIxQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVs
cGVyUG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJhbGxlbEhlbHBl
clBvb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTMyNzQzOTI0RkM1NEU0NjlG
NUE4RTZFIC8qIFN0ZFVub3JkZXJlZFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdGRVbm9yZGVyZWRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQw
MjJGNDAxOEY1QzNGQzAwN0ZGMEVCIC8qIGxpYmJtYWxsb2MuYSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJibWFs
bG9jLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTE0M0RERTk1MjBD
OEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRW50aXRsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTQzRERFOTUyMEM4QkMzNzAwN0Y3NkZBIC8qIEVudGl0bGVtZW50cy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVudGl0bGVtZW50cy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRERFOTcyMEM4QkU5OTAwN0Y3NkZBIC8qIEVudGl0
bGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbnRpdGxlbWVudHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRB
IC8qIFJBTVNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUkFN
U2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0M0Y2MTFFMTU2NUYwRjkw
MERCNTE0QSAvKiBSQU1TaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJB
TVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNCwxMCArMzE0LDEwIEBA
CiAJCTFDMTgxQzhDMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJMYXRpbjEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxODFDOEQxRDMwN0FCODAwRjVGQTE2IC8qIFVU
ZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QzE4MUM4RTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQzE4MUM5NTFEMzA4MDBBMDBGNUZBMTYgLyogVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW07IHBhdGggPSBtYWMv
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMUNDREIxNDkxRTU2NjYyNjAwNkM3M0MwIC8qIFRleHRCcmVha0l0ZXJhdG9yQ0Yu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGV4dEJyZWFrSXRlcmF0b3JDRi5o
OyBwYXRoID0gY2YvVGV4dEJyZWFrSXRlcmF0b3JDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4MUM5NTFEMzA4MDBBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDQ0RCMTQ5MUU1NjY2MjYwMDZDNzNDMCAvKiBUZXh0QnJlYWtJdGVyYXRvckNGLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRCcmVha0l0ZXJhdG9yQ0YuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREIxNEQxRTU2Njg5ODAwNkM3M0MwIC8q
IFRleHRCcmVha0l0ZXJhdG9ySUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRleHRCcmVha0l0ZXJhdG9ySUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
Q0RCMTUxMUU1NjZCQzUwMDZDNzNDMCAvKiBDRlN0cmluZ1NQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDRlN0cmluZ1NQSS5oOyBwYXRoID0gY2YvQ0ZTdHJpbmdTUEkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNDREIxNTExRTU2NkJDNTAwNkM3M0MwIC8q
IENGU3RyaW5nU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGU3RyaW5n
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGQTQ3Qzg4MTUyNTAyREEwMDU2
OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkNvcmVUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
RkE0N0M4OTE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI0RjFCMjQ4NjE5RjQxMjI5NkQxQzE5QyAvKiBSYW5kb21EZXZpY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZG9tRGV2aWNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zMzIsNiArMzMyLDcgQEAKIAkJMzEzN0UxRDdEQkQ4NEFDMzhG
QUU0RDM0IC8qIEluZGV4U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
ZGV4U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxM0VERUM5Nzc4RTQ5QzlC
RUE5MUNGQyAvKiBTdGFja1RyYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0YWNrVHJhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0M3
Q0MyOTFFQTQwQTczMDA3QkQ5NTYgLyogV2Vha0xpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vha0xpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzgyMDI5RTI0NkM4NEIwMDk5RkQ2NzY0IC8qIEFTQ0lJTGl0ZXJhbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBU0NJSUxpdGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzkxQkQ2QkE0RDE2NEZEMjk0RjlBOTNEIC8qIFN0ZE1hcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGRNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEzRkU4RjUxRjhEMkVBQjAwRjZEN0Q3IC8qIENhbGxiYWNrQWdncmVnYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0FnZ3JlZ2F0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMwQjQ3ODcxQUFBQUMxQTAwMTIyM0RBIC8q
IFN0cmluZ0NvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdD
b21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwNiw4ICs0MDcsOSBAQAog
CQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NkY0NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzM0Q2MzE5MUZDQjZBQjkwMDMyRUNENiAvKiBTdHJpbmdIYXNoZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSGFzaGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3
T2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFN0cmluZ1Zp
ZXdPYmpDLm1tOyBwYXRoID0gbWFjL1N0cmluZ1ZpZXdPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk5MzkzNEJENDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0cmluZ1ZpZXdDRi5jcHA7
IHBhdGggPSBjZi9TdHJpbmdWaWV3Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5Mzg0QjczRTIwREVBMjg0MDA1QjczQjIgLyogQ0ZYUENCcmlkZ2VTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ0ZYUENCcmlkZ2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM5
MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nVmlld09iakMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzOTM0QkQ0MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3
Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nVmlld0NG
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQzkxQTcxODk0MkZDNDAwMjQ0
OTM5IC8qIExDaGFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExDaGFyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDE5MUNGMjBDQUVDRTgwMEM1MUI4RSAv
KiBGb3VuZGF0aW9uU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvdW5kYXRpb25TUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEREU5MzExQ0RDMDUyRDAwRkQzNDkxIC8qIGR5bGRT
UEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZHlsZFNQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI1LDExICs0MjcsMTEgQEAKIAkJQTUwOThBRkYxQzE2
OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2FuZGJveFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEIw
MTFDMTZBNEY5MDAwODc3OTcgLyogU2VjdXJpdHlTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VjdXJpdHlTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU2MUYzMEYxREYyNjQyMTAwRkY2NzVEIC8qIERlcHJlY2F0ZWRPcHRpb25hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXByZWNhdGVkT3B0aW9uYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVCQTE1RjIxODI0MzNBOTAwQTgyRTY5IC8qIFN0cmluZ01h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFN0cmluZ01hYy5t
bTsgcGF0aCA9IG1hYy9TdHJpbmdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE1QkExNUY0MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJpbmdJbXBsTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU3RyaW5nSW1wbE1hYy5tbTsgcGF0aCA9IG1h
Yy9TdHJpbmdJbXBsTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVG
NzE4MjQzNUE2MDBBODJFNjkgLyogQXRvbWljU3RyaW5nSW1wbENGLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF0b21pY1N0cmluZ0ltcGxDRi5jcHA7IHBhdGggPSBj
Zi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
NUJBMTVGODE4MjQzNUE2MDBBODJFNjkgLyogU3RyaW5nQ0YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gU3RyaW5nQ0YuY3BwOyBwYXRoID0gY2YvU3RyaW5nQ0YuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVGOTE4MjQzNUE2MDBBODJFNjkg
LyogU3RyaW5nSW1wbENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFN0cmluZ0ltcGxDRi5jcHA7IHBhdGggPSBjZi9TdHJpbmdJbXBsQ0YuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVGMjE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVGNDE4MjQzNDgwMDBBODJFNjkg
LyogU3RyaW5nSW1wbE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFN0cmluZ0ltcGxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkEx
NUY3MTgyNDM1QTYwMEE4MkU2OSAvKiBBdG9taWNTdHJpbmdJbXBsQ0YuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXRvbWljU3RyaW5nSW1wbENGLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RjgxODI0MzVBNjAwQTgyRTY5IC8qIFN0cmlu
Z0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0NGLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RjkxODI0MzVBNjAwQTgyRTY5
IC8qIFN0cmluZ0ltcGxDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJpbmdJbXBsQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzBEQTA4
MjE3OTlGMDREMDA1MjlBOUIgLyogSW5zZXJ0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc2VydGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzBE
QTA4MzE3OTlGMDREMDA1MjlBOUIgLyogTGlzdER1bXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGlzdER1bXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc0
ODc0NEYxN0EwQkRBRTAwRkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l4Q2hhcmFjdGVySGFzaC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MDEsNiArNjAzLDcgQEAKIAkJQzJCQ0ZDNTMxRjYyMUYz
RjAwQzkyMjJDIC8qIExpbmVFbmRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTGluZUVuZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
QkNGQzU0MUY2MjFGM0YwMEM5MjIyQyAvKiBMaW5lRW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExpbmVFbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzZGMDUwNzkwRDlDNDMyQTk5MDg1RTc1IC8qIEFTQ0lJTGl0ZXJhbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBU0NJSUxpdGVyYWwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDOEY1OTdDQTJBNTc0MTdGQkFCOTJGRDYgLyogUmFuZG9t
RGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJhbmRvbURl
dmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FBMTU4NTdEMDMw
MEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NDk3
QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYw
OCw3ICs2MTEsNyBAQAogCQlDRDc2MDBGRjFGOTBBM0NBMDAwMjZFMjYgLyogVW5zYWZlUG9pbnRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVbnNhZmVQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFNDY1MTZEMTlEQjFGQjQwMDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TTWFwVGFibGVTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRENFRTIxRkExQ0VBNzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENGQnVuZGxlU1BJLmg7IHBhdGgg
PSBjZi9DRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQ0VFMjFG
QTFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ0ZCdW5kbGVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RENFRTIxRkMxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tPYmpDRXhjZXB0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tP
YmpDRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURD
RUUyMjA0MUNFQjk4NjkwMDBDMjM5NiAvKiBCYWNrd2FyZHNHcmFwaC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrd2FyZHNHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjUwLDggKzY1Myw2IEBACiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAv
KiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrU3Rh
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMjk1QkYyMEI0OURDQjAwQ0Yy
ODNBIC8qIFVURjhDb252ZXJzaW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVVRGOENvbnZlcnNpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRjBBNDM2NTg4OTU0RjNDQjA3REJFQ0EgLyogU3RkTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdGRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTM4MjAyOUUyNDZDODRCMDA5OUZENjc2NCAvKiBBU0NJSUxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVNDSUlMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUM2RjA1MDc5MEQ5QzQzMkE5OTA4NUU3NSAvKiBBU0NJSUxpdGVyYWwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVNDSUlMaXRlcmFsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNzc2
LDcgKzc3Nyw3IEBACiAJCQkJOTM5MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdP
YmpDLm1tICovLAogCQkJCTFDMTgxQzk1MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVTWFjLm1tICovLAogCQkJKTsKLQkJCW5hbWUgPSBtYWM7CisJCQlwYXRo
ID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJQTVCQTE1RjYxODI0
MzU5RTAwQTgyRTY5IC8qIGNmICovID0gewpAQCAtNzg4LDcgKzc4OSw3IEBACiAJCQkJOTM5MzRC
RDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi8sCiAJCQkJMUNDREIxNDkx
RTU2NjYyNjAwNkM3M0MwIC8qIFRleHRCcmVha0l0ZXJhdG9yQ0YuaCAqLywKIAkJCSk7Ci0JCQlu
YW1lID0gY2Y7CisJCQlwYXRoID0gY2Y7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OwogCQlBODc2REJENjE1MTgxNkU1MDBEQURCOTUgLyogd3RmICovID0gewpAQCAtMTI3NCw2ICsx
Mjc1LDcgQEAKIAkJQ0U0NjUxNkMxOURCMUZCNDAwM0VDQTA1IC8qIGNvY29hICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5Mzg0QjczRTIwREVBMjg0MDA1
QjczQjIgLyogQ0ZYUENCcmlkZ2VTUEkuaCAqLywKIAkJCQk5M0QxOTFDRjIwQ0FFQ0U4MDBDNTFC
OEUgLyogRm91bmRhdGlvblNQSS5oICovLAogCQkJCUNFNDY1MTZEMTlEQjFGQjQwMDNFQ0EwNSAv
KiBOU01hcFRhYmxlU1BJLmggKi8sCiAJCQkJQTUwOThCMDExQzE2QTRGOTAwMDg3Nzk3IC8qIFNl
Y3VyaXR5U1BJLmggKi8sCkBAIC0xMzA4LDcgKzEzMTAsNyBAQAogCQkJCURDRUUyMUZBMUNFQTc1
MzgwMDBDMjM5NiAvKiBDRkJ1bmRsZVNQSS5oICovLAogCQkJCTFDQ0RCMTUxMUU1NjZCQzUwMDZD
NzNDMCAvKiBDRlN0cmluZ1NQSS5oICovLAogCQkJKTsKLQkJCW5hbWUgPSBjZjsKKwkJCXBhdGgg
PSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCUU0M0E0Njg1MUUyMjhC
NTcwMDI3NkIwNSAvKiBwZXJzaXN0ZW5jZSAqLyA9IHsKQEAgLTEzMzAsOCArMTMzMiw4IEBACiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQkxNDY5NDE5QjE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWlu
ZWRQb29sLmNwcCAqLywKIAkJCQlFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNv
Y29hLm1tICovLAotCQkJCTE0M0RERTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMu
Y3BwICovLAogCQkJCTE0M0RERTk3MjBDOEJFOTkwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMuaCAq
LywKKwkJCQkxNDNEREU5NTIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1tICovLAog
CQkJCTdBNkVCQTMzMjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCAqLywKIAkJ
CQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICov
LAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b2NvYS5tbSAqLywKQEAgLTE0NDcsNyArMTQ0OSw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
LQkJCQlDODA1RUYzOUU1RjE0NDgxQTk2RDM5RkMgLyogQVNDSUlMaXRlcmFsLmNwcCBpbiBSZXNv
dXJjZXMgKi8sCisJCQkJQzgwNUVGMzlFNUYxNDQ4MUE5NkQzOUZDIC8qIEFTQ0lJTGl0ZXJhbC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzM4NjE1MUE4MjVCMDA0MTIzRkYgLyogQXNzZXJ0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQzNTE1MUE4MjVCMDA0MTIzRkYgLyog
QXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUNBNjBEMUIwMjQyNjgwMDQ0
OTczOSAvKiBBdG9taWNTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTQ4Myw3ICsx
NDg1LDcgQEAKIAkJCQlBOEE0NzNBRTE1MUE4MjVCMDA0MTIzRkYgLyogZGl5LWZwLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczQjAxNTFBODI1QjAwNDEyM0ZGIC8qIGRvdWJsZS1jb252ZXJz
aW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQkExNTFBODI1QjAwNDEyM0ZGIC8qIGR0
b2EuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQzRERFOTYyMEM4QkMzNzAwN0Y3NkZBIC8qIEVu
dGl0bGVtZW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDNEREU5NjIwQzhCQzM3MDA3Rjc2
RkEgLyogRW50aXRsZW1lbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjMxNTFBODI1
QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTBGN0M1RkI2MUQ4
ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL0VudGl0bGVtZW50cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVjYWQ5NTFkMDFkYWZmMDM0YmZiMDNmNjg0YzNjOTU0NTZiYTEwN2QuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvY29j
b2EvRW50aXRsZW1lbnRzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRW50aXRsZW1lbnRzLmgiCi0K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1
cml0eVNQSS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotYm9vbCBwcm9jZXNzSGFzRW50aXRsZW1l
bnQoY29uc3QgY2hhciogZW50aXRsZW1lbnQpCi17Ci0gICAgYXV0byB0YXNrID0gYWRvcHRDRihT
ZWNUYXNrQ3JlYXRlRnJvbVNlbGYoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOwotICAgIGlmICghdGFz
aykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBjZkVudGl0bGVtZW50ID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IGVudGl0bGVtZW50LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsK
LSAgICBhdXRvIHZhbHVlID0gYWRvcHRDRihTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQo
dGFzay5nZXQoKSwgY2ZFbnRpdGxlbWVudC5nZXQoKSwgbnVsbHB0cikpOwotICAgIGlmICghdmFs
dWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZS5n
ZXQoKSkgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJldHVybiBDRkJvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZh
bHVlLmdldCgpKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9FbnRp
dGxlbWVudHMuaAppbmRleCA0NmE5YTI0NjhhYmY4ODYwNjM0ZTM1NDRjYjg5NDE3YmI1NDFhMmY4
Li4wNjk4NWVhMzI2NWIwNjU3YzQ5MWM3NzNmYmU1ZTM5OTkyOWU1OGIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9FbnRpdGxlbWVudHMuaApAQCAtMjUsOCArMjUsMTIgQEAKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogCisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKIG5hbWVzcGFjZSBX
VEYgewogCitXVEZfRVhQT1JUIGJvb2wgaGFzRW50aXRsZW1lbnQoYXVkaXRfdG9rZW5fdCwgY29u
c3QgY2hhciogZW50aXRsZW1lbnQpOworV1RGX0VYUE9SVCBib29sIGhhc0VudGl0bGVtZW50KHhw
Y19jb25uZWN0aW9uX3QsIGNvbnN0IGNoYXIqIGVudGl0bGVtZW50KTsKIFdURl9FWFBPUlQgYm9v
bCBwcm9jZXNzSGFzRW50aXRsZW1lbnQoY29uc3QgY2hhciogZW50aXRsZW1lbnQpOwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0VudGl0bGVt
ZW50cy5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0VudGl0bGVtZW50cy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ODEzZGI4Mjk1NjYyMTVjMmEyZmY0N2VhMjAwZTYxN2Q5M2UyZDI3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRW50aXRsZW1l
bnRzLmgiCisKKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgorCituYW1l
c3BhY2UgV1RGIHsKKworc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQoU2VjVGFza1JlZiB0YXNr
LCBjb25zdCBjaGFyKiBlbnRpdGxlbWVudCkKK3sKKyAgICBpZiAoIXRhc2spCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRo
Q1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBlbnRpdGxlbWVudCwga0NGU3RyaW5n
RW5jb2RpbmdBU0NJSSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIGF1dG8gdmFsdWUgPSBhZG9w
dENGKFNlY1Rhc2tDb3B5VmFsdWVGb3JFbnRpdGxlbWVudCh0YXNrLCBzdHJpbmcuZ2V0KCksIG51
bGxwdHIpKTsKKyAgICByZXR1cm4gdmFsdWUgJiYgQ0ZHZXRUeXBlSUQodmFsdWUuZ2V0KCkpID09
IENGQm9vbGVhbkdldFR5cGVJRCgpICYmIENGQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PENG
Qm9vbGVhblJlZj4odmFsdWUuZ2V0KCkpKTsKK30KKworYm9vbCBoYXNFbnRpdGxlbWVudChhdWRp
dF90b2tlbl90IHRva2VuLCBjb25zdCBjaGFyKiBlbnRpdGxlbWVudCkKK3sKKyAgICByZXR1cm4g
aGFzRW50aXRsZW1lbnQoYWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxs
b2NhdG9yRGVmYXVsdCwgdG9rZW4pKS5nZXQoKSwgZW50aXRsZW1lbnQpOworfQorCitib29sIGhh
c0VudGl0bGVtZW50KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgY29uc3QgY2hhciAqZW50
aXRsZW1lbnQpCit7CisgICAgYXV0byB2YWx1ZSA9IGFkb3B0T1NPYmplY3QoeHBjX2Nvbm5lY3Rp
b25fY29weV9lbnRpdGxlbWVudF92YWx1ZShjb25uZWN0aW9uLCBlbnRpdGxlbWVudCkpOworICAg
IHJldHVybiB2YWx1ZSAmJiB4cGNfZ2V0X3R5cGUodmFsdWUuZ2V0KCkpID09IFhQQ19UWVBFX0JP
T0wgJiYgeHBjX2Jvb2xfZ2V0X3ZhbHVlKHZhbHVlLmdldCgpKTsKK30KKworYm9vbCBwcm9jZXNz
SGFzRW50aXRsZW1lbnQoY29uc3QgY2hhciogZW50aXRsZW1lbnQpCit7CisgICAgcmV0dXJuIGhh
c0VudGl0bGVtZW50KGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxmKGtDRkFsbG9jYXRvckRl
ZmF1bHQpKS5nZXQoKSwgZW50aXRsZW1lbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9DRlhQQ0JyaWRnZVNQSS5oIGIvU291
cmNlL1dURi93dGYvc3BpL2NvY29hL0NGWFBDQnJpZGdlU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDIzYWJk
ZTE4NjVhMTNjMmNjNDlhZGY0MWU1NTYyMTNhZDQwMmE5MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9DRlhQQ0JyaWRnZVNQSS5oCkBAIC0wLDAgKzEsMzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxDb3JlRm91bmRhdGlv
bi9DRlhQQ0JyaWRnZS5oPgorI2VuZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgorCit4cGNfb2Jq
ZWN0X3QgX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdChDRlR5cGVSZWYpOworQ0ZU
eXBlUmVmIF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVjdF90KTsK
KworV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggNzc4YzgzM2Q5N2QxZDZlZmEyNjRjOWY2ZTIz
MmVmZDJjZTMyNDIxMS4uZGQyNTA4ODRjMWNhOTZiOTdjMTk0ODZjODJiZTNkMWY2OTRiY2Q4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMv
WFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBv
aW50Lm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogI2ltcG9ydCA8V2ViQ29yZS9Qcm9jZXNz
Lmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC0xNDAsMTEgKzE0MSw3IEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxp
emVyRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKEhhc2hNYXA8U3RyaW5nLCBT
CiAKIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omhhc0VudGl0bGVtZW50KGNv
bnN0IGNoYXIqIGVudGl0bGVtZW50KQogewotICAgIGF1dG8gdmFsdWUgPSBhZG9wdE9TT2JqZWN0
KHhwY19jb25uZWN0aW9uX2NvcHlfZW50aXRsZW1lbnRfdmFsdWUobV9jb25uZWN0aW9uLmdldCgp
LCBlbnRpdGxlbWVudCkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiB4cGNfZ2V0X3R5cGUodmFsdWUuZ2V0KCkpID09IFhQQ19UWVBFX0JPT0wg
JiYgeHBjX2Jvb2xfZ2V0X3ZhbHVlKHZhbHVlLmdldCgpKTsKKyAgICByZXR1cm4gV1RGOjpoYXNF
bnRpdGxlbWVudChtX2Nvbm5lY3Rpb24uZ2V0KCksIGVudGl0bGVtZW50KTsKIH0KIAogYm9vbCBY
UENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6aXNDbGllbnRTYW5kYm94ZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94VXRpbGl0aWVzLmgKaW5kZXggZDYwZjQyN2Q2Nzk3
ODczZTMyMjIyYjYyYjU2NTMwMmM5NWU2MzZhYi4uYzA1ZDc4MWQ4MzA2ZmU2MDNjN2U1ZGQwNDc1
ZWY2YTBkYWI0MmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRi
b3hVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveFV0aWxp
dGllcy5oCkBAIC0zOCw2ICszOCw0IEBAIGJvb2wgcHJvY2Vzc0hhc0NvbnRhaW5lcigpOwogLy8g
UmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIHByb2Nlc3MgaXMgbm90IGluIGEgY29udGFp
bmVyLgogU3RyaW5nIHBhdGhGb3JQcm9jZXNzQ29udGFpbmVyKCk7CiAKLWJvb2wgY29ubmVjdGVk
UHJvY2Vzc0hhc0VudGl0bGVtZW50KHhwY19jb25uZWN0aW9uX3QsIGNvbnN0IGNoYXIgKmVudGl0
bGVtZW50KTsKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRi
b3hVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveFV0aWxpdGll
cy5tbQppbmRleCBhZmM2YjI0YWUxZDdlODg5ZWFjMDczZjZjZDk2ZDA0MjJkNjIzMWJiLi5kYzM1
MGZiNGYyNTI0OGRlZWU2NWNiYTFmMjM5NTRmYjgyZTczMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveFV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvU2FuZGJveFV0aWxpdGllcy5tbQpAQCAtMjksNyArMjksNiBAQAogI2ltcG9y
dCA8YXJyYXk+CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0
ci5oPgotI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgogI2ltcG9ydCA8d3RmL3Nw
aS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc3LDEzICs3Niw0IEBAIFN0cmlu
ZyBwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
cGF0aC5kYXRhKCkpOwogfQogCi1ib29sIGNvbm5lY3RlZFByb2Nlc3NIYXNFbnRpdGxlbWVudCh4
cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIgKmVudGl0bGVtZW50KQotewot
ICAgIGF1dG8gdmFsdWUgPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NvcHlfZW50aXRs
ZW1lbnRfdmFsdWUoY29ubmVjdGlvbiwgZW50aXRsZW1lbnQpKTsKLSAgICBpZiAoIXZhbHVlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4geHBjX2dldF90eXBlKHZhbHVlLmdl
dCgpKSA9PSBYUENfVFlQRV9CT09MICYmIHhwY19ib29sX2dldF92YWx1ZSh2YWx1ZS5nZXQoKSk7
Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvaW9zL1N0
b3JhZ2VQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9pb3MvU3Rv
cmFnZVByb2Nlc3NJT1MubW0KaW5kZXggZWNlMGMxMDNkYmM0NGJkMTk4MGFiYWI4M2UyMTQ2YTUz
MGYwZTYyNi4uNzcxMTliMzhjYjRkMTdiMDI1YTNiZWIzZWI3YTVmNGYxOTk4ZGE4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9pb3MvU3RvcmFnZVByb2Nlc3NJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9pb3MvU3RvcmFnZVByb2Nlc3NJ
T1MubW0KQEAgLTMwLDEyICszMCw3IEBACiAjaW1wb3J0ICJTdG9yYWdlUHJvY2Vzcy5oIgogCiAj
aW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCi0jaW1wb3J0ICJTYW5k
Ym94VXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbXBvcnQg
PFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyNpbXBvcnQgPHd0Zi9jb2NvYS9F
bnRpdGxlbWVudHMuaD4KIAogI2RlZmluZSBFTkFCTEVfTUFOVUFMX0RBVEFCQVNFX1NBTkRCT1hJ
TkcgMAogCkBAIC02MSw3ICs1Niw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVT
YW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVyCiAKIGJvb2wg
U3RvcmFnZVByb2Nlc3M6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQo
KSBjb25zdAogewotICAgIHN0YXRpYyBib29sIGhhc0VudGl0bGVtZW50ID0gY29ubmVjdGVkUHJv
Y2Vzc0hhc0VudGl0bGVtZW50KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rp
b24oKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7CisgICAg
c3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0bGVtZW50KHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIu
V2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7CiAgICAgcmV0dXJuIGhhc0VudGl0bGVtZW50OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IGM2OTQwNDc2MjA4ODMwMzE0ODE3YTNiMDg4NDcwMWM1NDEzYjVlYmEuLjg4MWNm
YmQ2MmZhYjAzMjgzYTMwYjZkY2Q0NTRlYTNmYmVhNmNjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMTMsNiArMTEz
LDcgQEAKICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbXBvcnQgPHd0
Zi9TZXRGb3JTY29wZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3
dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzk5LDcgKzQwMCw3IEBAIGJvb2wgV2Vi
UGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAK
IGJvb2wgV2ViUGFnZTo6cGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgp
IGNvbnN0CiB7Ci0gICAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQgPSBjb25uZWN0ZWRQcm9j
ZXNzSGFzRW50aXRsZW1lbnQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCAiY29tLmFwcGxlLmRldmVsb3Blci5XZWJLaXQu
U2VydmljZVdvcmtlcnMiKTsKKyAgICBzdGF0aWMgYm9vbCBoYXNFbnRpdGxlbWVudCA9IFdURjo6
aGFzRW50aXRsZW1lbnQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpLCAiY29tLmFwcGxlLmRldmVsb3Blci5XZWJLaXQuU2Vy
dmljZVdvcmtlcnMiKTsKICAgICByZXR1cm4gaGFzRW50aXRsZW1lbnQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344027</attachid>
            <date>2018-06-30 17:46:02 -0700</date>
            <delta_ts>2018-06-30 17:46:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186973-20180630174601.patch</filename>
            <type>text/plain</type>
            <size>65410</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YjdmYTc0OGJmZmQ3ZDQ0MjEzOTM2M2Q4YTk3NDRkZWU1NzEyZTE2Li41ZTZiNmQ2NjA4OTVmYTBj
NDU2MmZmYTRhNWY1ODllNDVlZWQxNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOC0wNi0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBJbXByb3ZlIEFSQyBjb21wYXRpYmlsaXR5IG9mIG1vcmUgY29kZSBp
biBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg2OTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAoV2Vha0NvbnRleHRSZWY6Oldl
YWtDb250ZXh0UmVmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYWtDb250ZXh0UmVmOjp+V2Vha0Nv
bnRleHRSZWYpOiBEZWxldGVkLgorICAgICAgICAoV2Vha0NvbnRleHRSZWY6OmdldCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWFrQ29udGV4dFJlZjo6c2V0KTogRGVsZXRlZC4KKworICAgICAgICAq
IEFQSS9KU0NvbnRleHRJbnRlcm5hbC5oOiBSZW1vdmVkIHVubmVlZGVkIGhlYWRlciBndWFyZHMg
c2luY2UgdGhpcyBpcworICAgICAgICBhbiBPYmplY3RpdmUtQysrIGhlYWRlci4gUmVtb3ZlZCB1
bnVzZWQgV2Vha0NvbnRleHRSZWYgY2xhc3MuIFJlbW92ZWQgZGVjbGFyYXRpb24KKyAgICAgICAg
b2YgbWV0aG9kIC1bSlNDb250ZXh0IGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpdIGFuZCBKU0Nv
bnRleHQgcHJvcGVydHkgd3JhcHBlck1hcAorICAgICAgICBzaW5jZSBuZWl0aGVyIGlzIHVzZWQg
b3V0c2lkZSB0aGUgY2xhc3MgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBBUEkvSlNNYW5h
Z2VkVmFsdWUubW06CisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGluaXRXaXRoVmFsdWU6XSk6
IFVzZSBhIGJyaWRnaW5nIGNhc3QuCisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGRlYWxsb2Nd
KTogRGl0dG8uCisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGRpZEFkZE93bmVyOl0pOiBEaXR0
by4KKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGlkUmVtb3ZlT3duZXI6XSk6IERpdHRvLgor
ICAgICAgICAoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMpOiBEaXR0by4KKyAgICAgICAgKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmZpbmFs
aXplKTogRGl0dG8uCisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgICgrW0pTVmFs
dWUgdmFsdWVXaXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjpmbGFnczppbkNvbnRl
eHQ6XSk6IERpdHRvLgorICAgICAgICAoK1tKU1ZhbHVlIHZhbHVlV2l0aE5ld0Vycm9yRnJvbU1l
c3NhZ2U6aW5Db250ZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclBy
b3BlcnR5Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bSlNWYWx1ZSBzZXRWYWx1ZTpmb3JQcm9wZXJ0
eTpdKTogRGl0dG8uCisgICAgICAgICgtW0pTVmFsdWUgZGVsZXRlUHJvcGVydHk6XSk6IERpdHRv
LgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0pOiBEaXR0by4KKyAgICAgICAgKC1b
SlNWYWx1ZSBpbnZva2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKTogRGl0dG8uCisgICAgICAgICh2
YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkpOiBEaXR0by4gQWxzbyByZW1vdmVkIHVubmVlZGVkIGV4
cGxpY2l0IHR5cGUgbmFtZXMuCisgICAgICAgICh2YWx1ZVRvQXJyYXkpOiBEaXR0by4KKyAgICAg
ICAgKHZhbHVlVG9EaWN0aW9uYXJ5KTogRGl0dG8uCisgICAgICAgIChvYmplY3RUb1ZhbHVlV2l0
aG91dENvcHkpOiBEaXR0by4KKyAgICAgICAgKG9iamVjdFRvVmFsdWUpOiBEaXR0by4KKyAgICAg
ICAgKiBBUEkvSlNWaXJ0dWFsTWFjaGluZS5tbToKKyAgICAgICAgKCtbSlNWTVdyYXBwZXJDYWNo
ZSBhZGRXcmFwcGVyOmZvckpTQ29udGV4dEdyb3VwUmVmOl0pOiBEaXR0by4KKyAgICAgICAgKCtb
SlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3JvdXBSZWY6XSk6IERpdHRvLgor
ICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGlzT2xkRXh0ZXJuYWxPYmplY3Q6XSk6IERpdHRv
LgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6d2l0aE93
bmVyOl0pOiBEaXR0by4KKyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSByZW1vdmVNYW5hZ2Vk
UmVmZXJlbmNlOndpdGhPd25lcjpdKTogRGl0dG8uCisgICAgICAgICgtW0pTVmlydHVhbE1hY2hp
bmUgY29udGV4dEZvckdsb2JhbENvbnRleHRSZWY6XSk6IERpdHRvLgorICAgICAgICAoLVtKU1Zp
cnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6Zm9yR2xvYmFsQ29udGV4dFJlZjpdKTogRGl0dG8uCisg
ICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6IERpdHRvLgorICAgICAgICAoc2NhbkV4
dGVybmFsUmVtZW1iZXJlZFNldCk6IERpdHRvLgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAu
bW06CisgICAgICAgIChtYWtlV3JhcHBlcik6IERpdHRvLgorICAgICAgICAoLVtKU09iakNDbGFz
c0luZm8gd3JhcHBlckZvck9iamVjdDppbkNvbnRleHQ6XSk6IERpdHRvLgorICAgICAgICAoLVtK
U1dyYXBwZXJNYXAgb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOmluQ29udGV4dDpdKTogRGl0dG8u
CisgICAgICAgICh0cnlVbndyYXBPYmpjT2JqZWN0KTogRGl0dG8uCisgICAgICAgICogQVBJL09i
akNDYWxsYmFja0Z1bmN0aW9uLm1tOgorICAgICAgICAoYmxvY2tTaWduYXR1cmVDb250YWluc0Ns
YXNzKTogRGl0dG8uCisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvck1ldGhvZCk6IFN3
aXRjaGVkIGZyb20gcmV0YWluIHRvIENGUmV0YWluLCBidXQgbm90CisgICAgICAgIHN1cmUgd2Ug
d2lsbCBiZSBrZWVwaW5nIHRoaXMgdGhlIHNhbWUgd2F5IHVuZGVyIEFSQy4KKyAgICAgICAgKG9i
akNDYWxsYmFja0Z1bmN0aW9uRm9yQmxvY2spOiBVc2UgYSBicmlkZ2luZyBjYXN0LgorCisgICAg
ICAgICogQVBJL09iamNSdW50aW1lRXh0cmFzLmg6CisgICAgICAgIChwcm90b2NvbEltcGxlbWVu
dHNQcm90b2NvbCk6IFVzZSBhIG1vcmUgc3BlY2lmaWMgdHlwZSB0aGF0IGluY2x1ZGVzIHRoZQor
ICAgICAgICBleHBsaWNpdCBfX3Vuc2FmZV91bnJldGFpbmVkIGZvciBjb3BpZWQgcHJvdG9jb2wg
bGlzdHMuCisgICAgICAgIChmb3JFYWNoUHJvdG9jb2xJbXBsZW1lbnRpbmdQcm90b2NvbCk6IERp
dHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JD
b2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6Y29udmVydE5TTnVsbFRvTmlsKTogQWRkZWQg
dG8gcmVwbGFjZSB0aGUgQ09OVkVSVF9OU05VTExfVE9fTklMIG1hY3JvLgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKTogVXNlIGNvbnZl
cnROU051bGxUb05pbC4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTogTW92ZWQgdGhlCisgICAgICAgIENGWFBDQnJpZGdl
IFNQSSB0byBhIGhlYWRlciBuYW1lZCBDRlhQQ0JyaWRnZVNQSS5oLgorICAgICAgICAoYXVkaXRU
b2tlbkhhc0VudGl0bGVtZW50KTogRGVsZXRlZC4gTW92ZWQgdG8gRW50aXRsZW1lbnRzLmgvY3Bw
IGluIFdURi4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bjo6aGFuZGxlRXZlbnQpOiBVc2UgV1RGOjpoYXNFbnRpdGxlbWVudC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOiBVc2UgYSBi
cmlkZ2luZyBjYXN0LgorCiAyMDE4LTA2LTMwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IGNsYW5nIHN0YXRpYyBhbmFseXplciB3YXJuaW5nczogR2Fy
YmFnZSByZXR1cm4gdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDI5OGNiNGRhMDkxYzRhZGEwNTc0NjViOGU4OTUwZGQ4
NGIwOTEyNS4uNzUyNDZiOWNkNGZmNmFlZmRhMDgzZmE0ODFkYzJhZmQ4MGQ0ZjAzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMiBAQAorMjAxOC0wNi0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBJbXByb3ZlIEFSQyBjb21wYXRpYmlsaXR5IG9mIG1vcmUgY29k
ZSBpbiBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg2OTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgQ0ZYUENC
cmlkZ2VTUEkuaCwgZml4ZWQgYSBmZXcKKyAgICAgICAgb3RoZXIgc21hbGwgcHJvYmxlbXMgaW4g
dGhlIHByb2plY3QgZmlsZSwgYW5kIGxldCBYY29kZSBmaXggYSBmZXcgdG9vLgorCisgICAgICAg
ICogd3RmL2NvY29hL0VudGl0bGVtZW50cy5oOiBBZGRlZCBoYXNFbnRpdGxlbWVudCBmdW5jdGlv
biB3aXRoIG92ZXJsb2FkcworICAgICAgICBmb3IgYW4gYXVkaXQgdG9rZW4gYW5kIGFuIFhQQyBj
b25uZWN0aW9uLgorICAgICAgICAqIHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMubW06CisgICAgICAg
IChXVEY6Omhhc0VudGl0bGVtZW50KTogQWRkZWQsIHdpdGggb3ZlcmxvYWRzIGZvciBhIFNlY1Rh
c2ssIGFuIGF1ZGl0IHRva2VuLAorICAgICAgICBhbmQgYW4gWFBDIGNvbm5lY3Rpb24uCisgICAg
ICAgIChXVEY6OnByb2Nlc3NIYXNFbnRpdGxlbWVudCk6IFJlZmFjdG9yZWQgdG8gdXNlIHRoZSBm
dW5jdGlvbiBhYm92ZS4KKworICAgICAgICAqIHd0Zi9zcGkvY29jb2EvQ0ZYUENCcmlkZ2VTUEku
aDogQWRkZWQuCisKIDIwMTgtMDYtMzAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBQb3J0IFdURiB0byBPUyhGVUNIU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5YzE4YzNiZDM4
YWYzMjQ2ZThiOTc5NTc3NzMzZmNhNDI1MDRlZWE3Li43NWU5OTNkNzFjYzczNWNlNjkwNmEzNDcx
NWUxNmQ1M2I0ZmQ2MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA2LTIzICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUg
QVJDIGNvbXBhdGliaWxpdHkgb2YgbW9yZSBjb2RlIGluIEphdmFTY3JpcHRDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY5NzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tOgorICAg
ICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6aGFzRW50aXRsZW1l
bnQpOiBVc2UgV1RGOjpoYXNFbnRpdGxlbWVudC4KKworICAgICAgICAqIFNoYXJlZC9tYWMvU2Fu
ZGJveFV0aWxpdGllcy5oOiBSZW1vdmVkIGNvbm5lY3RlZFByb2Nlc3NIYXNFbnRpdGxlbWVudCBz
aW5jZQorICAgICAgICB3ZSBjYW4gbm93IHVzZSBXVEY6Omhhc0VudGl0bGVtZW50IGluc3RlYWQu
CisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94VXRpbGl0aWVzLm1tOiBEaXR0by4KKworICAg
ICAgICAqIFN0b3JhZ2VQcm9jZXNzL2lvcy9TdG9yYWdlUHJvY2Vzc0lPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQpOiBVc2UKKyAgICAgICAgV1RGOjpoYXNFbnRpdGxlbWVudC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQpOiBEaXR0by4K
KwogMjAxOC0wNi0zMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBjbGFuZyBzdGF0aWMgYW5hbHl6ZXIgd2FybmluZ3M6IEdhcmJhZ2UgcmV0dXJuIHZh
bHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IGQ4YjBhNzU2MmEw
MzVmM2Y3ZDU0NDRlZTNjMmNiODdmMDdjNjk3MjMuLmY0ZTg4YzE0NGVhYTE2OTE5MGI2Y2EzMzdk
NTRiYTBkYjVkNjFiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCkBA
IC0zMzcsMjQgKzMzNyw0IEBAICsgKEpTQ29udGV4dCAqKWNvbnRleHRXaXRoSlNHbG9iYWxDb250
ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dAogCiBAZW5kCiAKLVdlYWtD
b250ZXh0UmVmOjpXZWFrQ29udGV4dFJlZihKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgb2Jq
Y19pbml0V2VhaygmbV93ZWFrQ29udGV4dCwgY29udGV4dCk7Ci19Ci0KLVdlYWtDb250ZXh0UmVm
Ojp+V2Vha0NvbnRleHRSZWYoKQotewotICAgIG9iamNfZGVzdHJveVdlYWsoJm1fd2Vha0NvbnRl
eHQpOwotfQotCi1KU0NvbnRleHQgKiBXZWFrQ29udGV4dFJlZjo6Z2V0KCkKLXsKLSAgICByZXR1
cm4gb2JqY19sb2FkV2VhaygmbV93ZWFrQ29udGV4dCk7Ci19Ci0KLXZvaWQgV2Vha0NvbnRleHRS
ZWY6OnNldChKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgb2JqY19zdG9yZVdlYWsoJm1fd2Vh
a0NvbnRleHQsIGNvbnRleHQpOwotfQotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0SW50ZXJuYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0SW50ZXJuYWwuaAppbmRleCBiMzdjZmE0NDE1ZjhjODliZTU5MWNhYTcz
OWZhNjcwYjIzNGNlM2ZkLi4yOGY3MDljMWU0OGYxZTFhODAzODU2NTBhYWU2ZTQxY2QzNTE1MGZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFs
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCkBA
IC0yMyw5ICsyMyw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEpTQ29udGV4
dEludGVybmFsX2gKLSNkZWZpbmUgSlNDb250ZXh0SW50ZXJuYWxfaAotCiAjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQK
QEAgLTMzLDcgKzMwLDcgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dC5oPgog
CiBzdHJ1Y3QgQ2FsbGJhY2tEYXRhIHsKLSAgICBDYWxsYmFja0RhdGEgKm5leHQ7CisgICAgQ2Fs
bGJhY2tEYXRhKiBuZXh0OwogICAgIEpTQ29udGV4dCAqY29udGV4dDsKICAgICBKU1ZhbHVlICpw
cmVzZXJ2ZWRFeGNlcHRpb247CiAgICAgSlNWYWx1ZVJlZiBjYWxsZWVWYWx1ZTsKQEAgLTQzLDI0
ICs0MCwxMCBAQCBzdHJ1Y3QgQ2FsbGJhY2tEYXRhIHsKICAgICBOU0FycmF5ICpjdXJyZW50QXJn
dW1lbnRzOwogfTsKIAotY2xhc3MgV2Vha0NvbnRleHRSZWYgewotcHVibGljOgotICAgIFdlYWtD
b250ZXh0UmVmKEpTQ29udGV4dCAqID0gbmlsKTsKLSAgICB+V2Vha0NvbnRleHRSZWYoKTsKLQot
ICAgIEpTQ29udGV4dCAqIGdldCgpOwotICAgIHZvaWQgc2V0KEpTQ29udGV4dCAqKTsKLQotcHJp
dmF0ZToKLSAgICBKU0NvbnRleHQgKm1fd2Vha0NvbnRleHQ7Ci19OwotCiBAY2xhc3MgSlNXcmFw
cGVyTWFwOwogCiBAaW50ZXJmYWNlIEpTQ29udGV4dChJbnRlcm5hbCkKIAotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQ7
Ci0KIC0gKHZvaWQpbm90aWZ5RXhjZXB0aW9uOihKU1ZhbHVlUmVmKWV4Y2VwdGlvbjsKIC0gKEpT
VmFsdWUgKil2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246KEpTVmFsdWVSZWYpZXhjZXB0aW9uOwog
LSAoQk9PTClib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1ZVJlZilleGNlcHRpb247CkBA
IC03MSwxMCArNTQsNiBAQCBwcml2YXRlOgogLSAoSlNWYWx1ZSAqKXdyYXBwZXJGb3JPYmpDT2Jq
ZWN0OihpZClvYmplY3Q7CiAtIChKU1ZhbHVlICopd3JhcHBlckZvckpTT2JqZWN0OihKU1ZhbHVl
UmVmKXZhbHVlOwogCi1AcHJvcGVydHkgKHJlYWRvbmx5LCByZXRhaW4pIEpTV3JhcHBlck1hcCAq
d3JhcHBlck1hcDsKLQogQGVuZAogCiAjZW5kaWYKLQotI2VuZGlmIC8vIEpTQ29udGV4dEludGVy
bmFsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFs
dWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCmluZGV4
IDA5OWIwNGFjODNmZjJiZjYyOTA5MDg2MjU2MjZkMGIxZDNiNDE4NTQuLjI5YzcxN2RiM2IzZDFk
MTg1NzE4NTViOGUxM2U2N2U1OGE0NGNiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU01hbmFnZWRWYWx1ZS5tbQpAQCAtODgsNyArODgsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKFt2YWx1ZS5jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwogICAgIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAg
ICBhdXRvJiBvd25lciA9IG1hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKCk7Ci0gICAgSlNDOjpXZWFr
PEpTQzo6SlNHbG9iYWxPYmplY3Q+IHdlYWsoZ2xvYmFsT2JqZWN0LCAmb3duZXIsIHNlbGYpOwor
ICAgIEpTQzo6V2VhazxKU0M6OkpTR2xvYmFsT2JqZWN0PiB3ZWFrKGdsb2JhbE9iamVjdCwgJm93
bmVyLCAoX19icmlkZ2Ugdm9pZCopc2VsZik7CiAgICAgbV9nbG9iYWxPYmplY3Quc3dhcCh3ZWFr
KTsKIAogICAgIG1fbG9jayA9ICZleGVjLT52bSgpLmFwaUxvY2soKTsKQEAgLTk5LDkgKzk5LDkg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZQogCiAgICAg
SlNDOjpKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIFt2YWx1ZSBKU1ZhbHVlUmVmXSk7CiAg
ICAgaWYgKGpzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgbV93ZWFrVmFsdWUuc2V0T2JqZWN0
KEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihqc1ZhbHVlLmFzQ2VsbCgpKSwgb3duZXIsIHNl
bGYpOworICAgICAgICBtX3dlYWtWYWx1ZS5zZXRPYmplY3QoSlNDOjpqc0Nhc3Q8SlNDOjpKU09i
amVjdCo+KGpzVmFsdWUuYXNDZWxsKCkpLCBvd25lciwgKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwog
ICAgIGVsc2UgaWYgKGpzVmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgbV93ZWFrVmFsdWUuc2V0
U3RyaW5nKEpTQzo6anNDYXN0PEpTQzo6SlNTdHJpbmcqPihqc1ZhbHVlLmFzQ2VsbCgpKSwgb3du
ZXIsIHNlbGYpOworICAgICAgICBtX3dlYWtWYWx1ZS5zZXRTdHJpbmcoSlNDOjpqc0Nhc3Q8SlND
OjpKU1N0cmluZyo+KGpzVmFsdWUuYXNDZWxsKCkpLCBvd25lciwgKF9fYnJpZGdlIHZvaWQqKXNl
bGYpOwogICAgIGVsc2UKICAgICAgICAgbV93ZWFrVmFsdWUuc2V0UHJpbWl0aXZlKGpzVmFsdWUp
OwogICAgIHJldHVybiBzZWxmOwpAQCAtMTEzLDcgKzExMyw3IEBAIC0gKHZvaWQpZGVhbGxvYwog
ICAgIGlmICh2aXJ0dWFsTWFjaGluZSkgewogICAgICAgICBOU01hcFRhYmxlICpjb3B5ID0gW21f
b3duZXJzIGNvcHldOwogICAgICAgICBmb3IgKGlkIG93bmVyIGluIFtjb3B5IGtleUVudW1lcmF0
b3JdKSB7Ci0gICAgICAgICAgICBzaXplX3QgY291bnQgPSByZWludGVycHJldF9jYXN0PHNpemVf
dD4oTlNNYXBHZXQobV9vd25lcnMsIG93bmVyKSk7CisgICAgICAgICAgICBzaXplX3QgY291bnQg
PSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQobV9vd25lcnMsIChfX2JyaWRnZSB2
b2lkKilvd25lcikpOwogICAgICAgICAgICAgd2hpbGUgKGNvdW50LS0pCiAgICAgICAgICAgICAg
ICAgW3ZpcnR1YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6c2VsZiB3aXRoT3duZXI6
b3duZXJdOwogICAgICAgICB9CkBAIC0xMjcsMjMgKzEyNywyMyBAQCAtICh2b2lkKWRlYWxsb2MK
IAogLSAodm9pZClkaWRBZGRPd25lcjooaWQpb3duZXIKIHsKLSAgICBzaXplX3QgY291bnQgPSBy
ZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQobV9vd25lcnMsIG93bmVyKSk7Ci0gICAg
TlNNYXBJbnNlcnQobV9vd25lcnMsIG93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3Vu
dCArIDEpKTsKKyAgICBzaXplX3QgY291bnQgPSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNN
YXBHZXQobV9vd25lcnMsIChfX2JyaWRnZSB2b2lkKilvd25lcikpOworICAgIE5TTWFwSW5zZXJ0
KG1fb3duZXJzLCAoX19icmlkZ2Ugdm9pZCopb3duZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KGNvdW50ICsgMSkpOwogfQogCiAtICh2b2lkKWRpZFJlbW92ZU93bmVyOihpZClvd25lcgogewot
ICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihOU01hcEdldChtX293
bmVycywgb3duZXIpKTsKKyAgICBzaXplX3QgY291bnQgPSByZWludGVycHJldF9jYXN0PHNpemVf
dD4oTlNNYXBHZXQobV9vd25lcnMsIChfX2JyaWRnZSB2b2lkKilvd25lcikpOwogCiAgICAgaWYg
KCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNvdW50ID09IDEpIHsKLSAgICAg
ICAgTlNNYXBSZW1vdmUobV9vd25lcnMsIG93bmVyKTsKKyAgICAgICAgTlNNYXBSZW1vdmUobV9v
d25lcnMsIChfX2JyaWRnZSB2b2lkKilvd25lcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBOU01hcEluc2VydChtX293bmVycywgb3duZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KGNvdW50IC0gMSkpOworICAgIE5TTWFwSW5zZXJ0KG1fb3duZXJzLCAoX19icmlkZ2Ugdm9pZCop
b3duZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvdW50IC0gMSkpOwogfQogCiAtIChKU1Zh
bHVlICopdmFsdWUKQEAgLTE4NCwxMyArMTg0LDEzIEBAIEBlbmQKIAogYm9vbCBKU01hbmFnZWRW
YWx1ZUhhbmRsZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBzdGF0aWNfY2FzdDxKU01hbmFn
ZWRWYWx1ZSAqPihjb250ZXh0KTsKLSAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJv
b3QobWFuYWdlZFZhbHVlKTsKKyAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gKF9f
YnJpZGdlIEpTTWFuYWdlZFZhbHVlICopY29udGV4dDsKKyAgICByZXR1cm4gdmlzaXRvci5jb250
YWluc09wYXF1ZVJvb3QoKF9fYnJpZGdlIHZvaWQqKW1hbmFnZWRWYWx1ZSk7CiB9CiAKIHZvaWQg
SlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiwgdm9pZCogY29udGV4dCkKIHsKLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVl
ID0gc3RhdGljX2Nhc3Q8SlNNYW5hZ2VkVmFsdWUgKj4oY29udGV4dCk7CisgICAgSlNNYW5hZ2Vk
VmFsdWUgKm1hbmFnZWRWYWx1ZSA9IChfX2JyaWRnZSBKU01hbmFnZWRWYWx1ZSAqKWNvbnRleHQ7
CiAgICAgW21hbmFnZWRWYWx1ZSBkaXNjb25uZWN0VmFsdWVdOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0KaW5kZXggNWMzYzA1Njg5ZDQ2YTc1MTQ1ODZlZmFkMjg4YWI0ZTdj
MzIxNTU2Ni4uYTI2Njg0NDhmZmJjN2JmNTUzNDM3NGQxN2RhMmJlYjRjNzQxOTg4MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMTIzLDggKzEyMyw4IEBAICsgKEpTVmFs
dWUgKil2YWx1ZVdpdGhOZXdBcnJheUluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogCiAr
IChKU1ZhbHVlICopdmFsdWVXaXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0dGVybjooTlNT
dHJpbmcgKilwYXR0ZXJuIGZsYWdzOihOU1N0cmluZyAqKWZsYWdzIGluQ29udGV4dDooSlNDb250
ZXh0ICopY29udGV4dAogewotICAgIEpTU3RyaW5nUmVmIHBhdHRlcm5TdHJpbmcgPSBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcGF0dGVybik7Ci0gICAgSlNTdHJpbmdS
ZWYgZmxhZ3NTdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYp
ZmxhZ3MpOworICAgIEpTU3RyaW5nUmVmIHBhdHRlcm5TdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdp
dGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF0dGVybik7CisgICAgSlNTdHJpbmdS
ZWYgZmxhZ3NTdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpZmxhZ3MpOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdID0geyBKU1ZhbHVl
TWFrZVN0cmluZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBwYXR0ZXJuU3RyaW5nKSwg
SlNWYWx1ZU1ha2VTdHJpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgZmxhZ3NTdHJp
bmcpIH07CiAgICAgSlNTdHJpbmdSZWxlYXNlKHBhdHRlcm5TdHJpbmcpOwogICAgIEpTU3RyaW5n
UmVsZWFzZShmbGFnc1N0cmluZyk7CkBAIC0xMzQsNyArMTM0LDcgQEAgKyAoSlNWYWx1ZSAqKXZh
bHVlV2l0aE5ld1JlZ3VsYXJFeHByZXNzaW9uRnJvbVBhdHRlcm46KE5TU3RyaW5nICopcGF0dGVy
biBmbGFnczoKIAogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aE5ld0Vycm9yRnJvbU1lc3NhZ2U6KE5T
U3RyaW5nICopbWVzc2FnZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIHsKLSAgICBK
U1N0cmluZ1JlZiBzdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdS
ZWYpbWVzc2FnZSk7CisgICAgSlNTdHJpbmdSZWYgc3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKW1lc3NhZ2UpOwogICAgIEpTVmFsdWVSZWYg
YXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBzdHJpbmcpOwogICAgIEpTU3RyaW5nUmVsZWFzZShzdHJpbmcpOwogCkBAIC0yNDEsNyArMjQx
LDcgQEAgLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlO
YW1lCiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZy
b21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKKyAg
ICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7CiAgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09i
amVjdEdldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5h
bWUsICZleGNlcHRpb24pOwogICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKICAgICBpZiAoZXhj
ZXB0aW9uKQpAQCAtMjU5LDcgKzI1OSw3IEBAIC0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZv
clByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChD
RlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOworICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsK
ICAgICBKU09iamVjdFNldFByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBv
YmplY3QsIG5hbWUsIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwgMCwgJmV4Y2VwdGlv
bik7CiAgICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwogICAgIGlmIChleGNlcHRpb24pIHsKQEAg
LTI3NSw3ICsyNzUsNyBAQCAtIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3Bl
cnR5TmFtZQogICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9v
bEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAgIEpTU3RyaW5nUmVmIG5hbWUg
PSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsK
KyAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJp
ZGdlIENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7CiAgICAgQk9PTCByZXN1bHQgPSBKU09iamVj
dERlbGV0ZVByb3BlcnR5KFtfY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5h
bWUsICZleGNlcHRpb24pOwogICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKICAgICBpZiAoZXhj
ZXB0aW9uKQpAQCAtMjkxLDcgKzI5MSw3IEBAIC0gKEJPT0wpaGFzUHJvcGVydHk6KE5TU3RyaW5n
ICopcHJvcGVydHlOYW1lCiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29u
dGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgSlNTdHJpbmdS
ZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0
eU5hbWUpOworICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmlu
ZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKICAgICBCT09MIHJlc3VsdCA9
IEpTT2JqZWN0SGFzUHJvcGVydHkoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG9iamVj
dCwgbmFtZSk7CiAgICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwogICAgIHJldHVybiByZXN1bHQ7
CkBAIC00NjEsNyArNDYxLDcgQEAgLSAoSlNWYWx1ZSAqKWludm9rZU1ldGhvZDooTlNTdHJpbmcg
KiltZXRob2Qgd2l0aEFyZ3VtZW50czooTlNBcnJheSAqKWFyZ3VtZW50cwogICAgIGlmIChleGNl
cHRpb24pCiAgICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9u
OmV4Y2VwdGlvbl07CiAKLSAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKENGU3RyaW5nUmVmKW1ldGhvZCk7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpT
U3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZiltZXRob2QpOwog
ICAgIEpTVmFsdWVSZWYgZnVuY3Rpb24gPSBKU09iamVjdEdldFByb3BlcnR5KFtfY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdLCB0aGlzT2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKICAgICBK
U1N0cmluZ1JlbGVhc2UobmFtZSk7CiAgICAgaWYgKGV4Y2VwdGlvbikKQEAgLTY5NCwyMSArNjk0
LDIxIEBAIHN0YXRpYyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB2YWx1ZVRvT2JqZWN0V2l0
aG91dENvcHkoSlNHbG9iYWxDb250ZXh0UmVmIGNvCiAgICAgICAgICAgICBBU1NFUlQoSlNWYWx1
ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHZhbHVlKSk7CiAgICAgICAgICAgICBwcmltaXRpdmUgPSBu
aWw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFz
ayl7IHZhbHVlLCBwcmltaXRpdmUsIENvbnRhaW5lck5vbmUgfTsKKyAgICAgICAgcmV0dXJuIHsg
dmFsdWUsIHByaW1pdGl2ZSwgQ29udGFpbmVyTm9uZSB9OwogICAgIH0KIAogICAgIEpTT2JqZWN0
UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCB2YWx1ZSwgMCk7CiAKICAgICBp
ZiAoaWQgd3JhcHBlZCA9IHRyeVVud3JhcE9iamNPYmplY3QoY29udGV4dCwgb2JqZWN0KSkKLSAg
ICAgICAgcmV0dXJuIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgd3JhcHBl
ZCwgQ29udGFpbmVyTm9uZSB9OworICAgICAgICByZXR1cm4geyBvYmplY3QsIHdyYXBwZWQsIENv
bnRhaW5lck5vbmUgfTsKIAogICAgIGlmIChpc0RhdGUodm0sIG9iamVjdCwgY29udGV4dCkpCi0g
ICAgICAgIHJldHVybiAoSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIFtOU0Rh
dGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IG9iamVjdCwgMCkgLyAxMDAwLjBdLCBDb250YWluZXJOb25lIH07CisgICAgICAgIHJldHVybiB7
IG9iamVjdCwgW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpKU1ZhbHVlVG9O
dW1iZXIoY29udGV4dCwgb2JqZWN0LCAwKSAvIDEwMDAuMF0sIENvbnRhaW5lck5vbmUgfTsKIAog
ICAgIGlmIChpc0FycmF5KHZtLCBvYmplY3QsIGNvbnRleHQpKQotICAgICAgICByZXR1cm4gKEpT
Q29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCBbTlNNdXRhYmxlQXJyYXkgYXJyYXld
LCBDb250YWluZXJBcnJheSB9OworICAgICAgICByZXR1cm4geyBvYmplY3QsIFtOU011dGFibGVB
cnJheSBhcnJheV0sIENvbnRhaW5lckFycmF5IH07CiAKLSAgICByZXR1cm4gKEpTQ29udGFpbmVy
Q29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5
XSwgQ29udGFpbmVyRGljdGlvbmFyeSB9OworICAgIHJldHVybiB7IG9iamVjdCwgW05TTXV0YWJs
ZURpY3Rpb25hcnkgZGljdGlvbmFyeV0sIENvbnRhaW5lckRpY3Rpb25hcnkgfTsKIH0KIAogc3Rh
dGljIGlkIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQs
IEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrIHRhc2spCkBAIC04MjIsNyArODIyLDcgQEAgaWQg
dmFsdWVUb0FycmF5KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVl
LCBKU1ZhbHVlUmVmKiBleGNlcHQKICAgICB9CiAKICAgICBpZiAoSlNWYWx1ZUlzT2JqZWN0KGNv
bnRleHQsIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoY29u
dGV4dCwgKEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsgdmFsdWUsIFtOU011dGFibGVBcnJh
eSBhcnJheV0sIENvbnRhaW5lckFycmF5fSk7CisgICAgICAgIHJldHVybiBjb250YWluZXJWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsIHsgdmFsdWUsIFtOU011dGFibGVBcnJheSBhcnJheV0sIENvbnRh
aW5lckFycmF5fSk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhjb250ZXh0
KSk7CiAgICAgaWYgKCEoSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlz
VW5kZWZpbmVkKGNvbnRleHQsIHZhbHVlKSkpIHsKQEAgLTg0NCw3ICs4NDQsNyBAQCBpZCB2YWx1
ZVRvRGljdGlvbmFyeShKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1
ZSwgSlNWYWx1ZVJlZiogZQogICAgIH0KIAogICAgIGlmIChKU1ZhbHVlSXNPYmplY3QoY29udGV4
dCwgdmFsdWUpKQotICAgICAgICByZXR1cm4gY29udGFpbmVyVmFsdWVUb09iamVjdChjb250ZXh0
LCAoSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyB2YWx1ZSwgW05TTXV0YWJsZURpY3Rpb25h
cnkgZGljdGlvbmFyeV0sIENvbnRhaW5lckRpY3Rpb25hcnl9KTsKKyAgICAgICAgcmV0dXJuIGNv
bnRhaW5lclZhbHVlVG9PYmplY3QoY29udGV4dCwgeyB2YWx1ZSwgW05TTXV0YWJsZURpY3Rpb25h
cnkgZGljdGlvbmFyeV0sIENvbnRhaW5lckRpY3Rpb25hcnl9KTsKIAogICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcih0b0pTKGNvbnRleHQpKTsKICAgICBpZiAoIShKU1ZhbHVlSXNOdWxsKGNv
bnRleHQsIHZhbHVlKSB8fCBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpKSkgewpA
QCAtOTI1LDQ5ICs5MjUsNDkgQEAgc3RhdGljIE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sg
b2JqZWN0VG9WYWx1ZVdpdGhvdXRDb3B5KEpTQ29udGV4dCAqY29udGV4dCwKICAgICBKU0dsb2Jh
bENvbnRleHRSZWYgY29udGV4dFJlZiA9IFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl07CiAK
ICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9y
OjpUYXNrKXsgb2JqZWN0LCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0UmVmKSwgQ29udGFp
bmVyTm9uZSB9OworICAgICAgICByZXR1cm4geyBvYmplY3QsIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHRSZWYpLCBDb250YWluZXJOb25lIH07CiAKICAgICBpZiAoIWNsYXNzX2NvbmZvcm1z
VG9Qcm90b2NvbChvYmplY3RfZ2V0Q2xhc3Mob2JqZWN0KSwgZ2V0SlNFeHBvcnRQcm90b2NvbCgp
KSkgewogICAgICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0p
Ci0gICAgICAgICAgICByZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmpl
Y3QsIEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHRSZWYsIDAsIE5VTEwsIDApLCBDb250YWluZXJB
cnJheSB9OworICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCBKU09iamVjdE1ha2VBcnJheShj
b250ZXh0UmVmLCAwLCBOVUxMLCAwKSwgQ29udGFpbmVyQXJyYXkgfTsKIAogICAgICAgICBpZiAo
W29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKLSAgICAgICAgICAg
IHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgSlNPYmplY3RN
YWtlKGNvbnRleHRSZWYsIDAsIDApLCBDb250YWluZXJEaWN0aW9uYXJ5IH07CisgICAgICAgICAg
ICByZXR1cm4geyBvYmplY3QsIEpTT2JqZWN0TWFrZShjb250ZXh0UmVmLCAwLCAwKSwgQ29udGFp
bmVyRGljdGlvbmFyeSB9OwogCiAgICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05T
TnVsbCBjbGFzc11dKQotICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9y
OjpUYXNrKXsgb2JqZWN0LCBKU1ZhbHVlTWFrZU51bGwoY29udGV4dFJlZiksIENvbnRhaW5lck5v
bmUgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgSlNWYWx1ZU1ha2VOdWxsKGNvbnRl
eHRSZWYpLCBDb250YWluZXJOb25lIH07CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZD
bGFzczpbSlNWYWx1ZSBjbGFzc11dKQotICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVy
Q29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCAoKEpTVmFsdWUgKilvYmplY3QpLT5tX3ZhbHVlLCBD
b250YWluZXJOb25lIH07CisgICAgICAgICAgICByZXR1cm4geyBvYmplY3QsICgoSlNWYWx1ZSAq
KW9iamVjdCktPm1fdmFsdWUsIENvbnRhaW5lck5vbmUgfTsKIAogICAgICAgICBpZiAoW29iamVj
dCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgICAgICBKU1N0cmlu
Z1JlZiBzdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpb2Jq
ZWN0KTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilvYmplY3QpOwogICAgICAgICAgICAgSlNW
YWx1ZVJlZiBqcyA9IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHRSZWYsIHN0cmluZyk7CiAgICAg
ICAgICAgICBKU1N0cmluZ1JlbGVhc2Uoc3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybiAoT2Jq
Y0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwganMsIENvbnRhaW5lck5vbmUgfTsK
KyAgICAgICAgICAgIHJldHVybiB7IG9iamVjdCwganMsIENvbnRhaW5lck5vbmUgfTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XV0pIHsKICAgICAgICAgICAgIGlmIChpc05TQm9vbGVhbihvYmplY3QpKQotICAgICAgICAgICAg
ICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgSlNWYWx1
ZU1ha2VCb29sZWFuKGNvbnRleHRSZWYsIFtvYmplY3QgYm9vbFZhbHVlXSksIENvbnRhaW5lck5v
bmUgfTsKLSAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7
IG9iamVjdCwgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dFJlZiwgW29iamVjdCBkb3VibGVWYWx1
ZV0pLCBDb250YWluZXJOb25lIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCBK
U1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dFJlZiwgW29iamVjdCBib29sVmFsdWVdKSwgQ29udGFp
bmVyTm9uZSB9OworICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0LCBKU1ZhbHVlTWFrZU51bWJl
cihjb250ZXh0UmVmLCBbb2JqZWN0IGRvdWJsZVZhbHVlXSksIENvbnRhaW5lck5vbmUgfTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFz
c11dKSB7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50ID0gSlNWYWx1ZU1ha2VOdW1i
ZXIoY29udGV4dFJlZiwgW29iamVjdCB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdICogMTAwMC4wKTsK
ICAgICAgICAgICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IEpTT2JqZWN0TWFrZURhdGUoY29udGV4
dFJlZiwgMSwgJmFyZ3VtZW50LCAwKTsKLSAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5l
ckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgcmVzdWx0LCBDb250YWluZXJOb25lIH07CisgICAg
ICAgICAgICByZXR1cm4geyBvYmplY3QsIHJlc3VsdCwgQ29udGFpbmVyTm9uZSB9OwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbSlNNYW5hZ2VkVmFsdWUg
Y2xhc3NdXSkgewogICAgICAgICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBbc3RhdGljX2Nhc3Q8SlNN
YW5hZ2VkVmFsdWUgKj4ob2JqZWN0KSB2YWx1ZV07CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQot
ICAgICAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzaykgeyBv
YmplY3QsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHRSZWYpLCBDb250YWluZXJOb25lIH07
Ci0gICAgICAgICAgICByZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmpl
Y3QsIHZhbHVlLT5tX3ZhbHVlLCBDb250YWluZXJOb25lIH07CisgICAgICAgICAgICAgICAgcmV0
dXJuICB7IG9iamVjdCwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dFJlZiksIENvbnRhaW5l
ck5vbmUgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG9iamVjdCwgdmFsdWUtPm1fdmFsdWUsIENv
bnRhaW5lck5vbmUgfTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiAoT2JqY0NvbnRh
aW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgdmFsdWVJbnRlcm5hbFZhbHVlKFtjb250ZXh0
IHdyYXBwZXJGb3JPYmpDT2JqZWN0Om9iamVjdF0pLCBDb250YWluZXJOb25lIH07CisgICAgcmV0
dXJuIHsgb2JqZWN0LCB2YWx1ZUludGVybmFsVmFsdWUoW2NvbnRleHQgd3JhcHBlckZvck9iakNP
YmplY3Q6b2JqZWN0XSksIENvbnRhaW5lck5vbmUgfTsKIH0KIAogSlNWYWx1ZVJlZiBvYmplY3RU
b1ZhbHVlKEpTQ29udGV4dCAqY29udGV4dCwgaWQgb2JqZWN0KQpAQCAtMTAwMCw3ICsxMDAwLDcg
QEAgSlNWYWx1ZVJlZiBvYmplY3RUb1ZhbHVlKEpTQ29udGV4dCAqY29udGV4dCwgaWQgb2JqZWN0
KQogICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gKE5TRGljdGlvbmFyeSAq
KWN1cnJlbnQub2JqYzsKICAgICAgICAgICAgIGZvciAoaWQga2V5IGluIFtkaWN0aW9uYXJ5IGtl
eUVudW1lcmF0b3JdKSB7CiAgICAgICAgICAgICAgICAgaWYgKFtrZXkgaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9w
ZXJ0eU5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpa2V5KTsK
KyAgICAgICAgICAgICAgICAgICAgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lID0gSlNTdHJpbmdD
cmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSk7CiAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dFJlZiwganMsIHByb3BlcnR5TmFt
ZSwgY29udmVydG9yLmNvbnZlcnQoW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmtleV0pLCAwLCAw
KTsKICAgICAgICAgICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZpcnR1YWxNYWNoaW5lLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxN
YWNoaW5lLm1tCmluZGV4IDMwYzM3ZTJlNWE4ZDlmY2E2NWRmZWNmNTI2MDdiODhiNDY4YmQ3NjIu
LmJjYzg3OTQ4OWU2MjcxNmM0MjcwZWY4NjU5Zjk2YzczNDU2NjNkNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KQEAgLTcwLDEzICs3MCwxMyBA
QCBAaW1wbGVtZW50YXRpb24gSlNWTVdyYXBwZXJDYWNoZQogKyAodm9pZClhZGRXcmFwcGVyOihK
U1ZpcnR1YWxNYWNoaW5lICopd3JhcHBlciBmb3JKU0NvbnRleHRHcm91cFJlZjooSlNDb250ZXh0
R3JvdXBSZWYpZ3JvdXAKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh3cmFwcGVy
Q2FjaGVNdXRleCk7Ci0gICAgTlNNYXBJbnNlcnQod3JhcHBlckNhY2hlKCksIGdyb3VwLCB3cmFw
cGVyKTsKKyAgICBOU01hcEluc2VydCh3cmFwcGVyQ2FjaGUoKSwgZ3JvdXAsIChfX2JyaWRnZSB2
b2lkKil3cmFwcGVyKTsKIH0KIAogKyAoSlNWaXJ0dWFsTWFjaGluZSAqKXdyYXBwZXJGb3JKU0Nv
bnRleHRHcm91cFJlZjooSlNDb250ZXh0R3JvdXBSZWYpZ3JvdXAKIHsKICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayh3cmFwcGVyQ2FjaGVNdXRleCk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEpTVmlydHVhbE1hY2hpbmUgKj4oTlNNYXBHZXQod3JhcHBlckNhY2hlKCksIGdyb3VwKSk7
CisgICAgcmV0dXJuIChfX2JyaWRnZSBKU1ZpcnR1YWxNYWNoaW5lICopTlNNYXBHZXQod3JhcHBl
ckNhY2hlKCksIGdyb3VwKTsKIH0KIAogQGVuZApAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRpYyBp
ZCBnZXRJbnRlcm5hbE9iamNPYmplY3QoaWQgb2JqZWN0KQogLSAoYm9vbClpc09sZEV4dGVybmFs
T2JqZWN0OihpZClvYmplY3QKIHsKICAgICBKU0M6OlZNKiB2bSA9IHRvSlMobV9ncm91cCk7Ci0g
ICAgcmV0dXJuIHZtLT5oZWFwLmNvbGxlY3RvclNsb3RWaXNpdG9yKCkuY29udGFpbnNPcGFxdWVS
b290KG9iamVjdCk7CisgICAgcmV0dXJuIHZtLT5oZWFwLmNvbGxlY3RvclNsb3RWaXNpdG9yKCku
Y29udGFpbnNPcGFxdWVSb290KChfX2JyaWRnZSB2b2lkKilvYmplY3QpOwogfQogCiAtICh2b2lk
KWFkZEV4dGVybmFsUmVtZW1iZXJlZE9iamVjdDooaWQpb2JqZWN0CkBAIC0xODcsMTEgKzE4Nywx
MCBAQCAtICh2b2lkKWFkZE1hbmFnZWRSZWZlcmVuY2U6KGlkKW9iamVjdCB3aXRoT3duZXI6KGlk
KW93bmVyCiAgICAgICAgIG93bmVkT2JqZWN0cyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdp
dGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJPcHRpb25zIGNh
cGFjaXR5OjFdOwogCiAgICAgICAgIFttX2V4dGVybmFsT2JqZWN0R3JhcGggc2V0T2JqZWN0Om93
bmVkT2JqZWN0cyBmb3JLZXk6b3duZXJdOwotICAgICAgICBbb3duZWRPYmplY3RzIHJlbGVhc2Vd
OwogICAgIH0KIAotICAgIHNpemVfdCBjb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihO
U01hcEdldChvd25lZE9iamVjdHMsIG9iamVjdCkpOwotICAgIE5TTWFwSW5zZXJ0KG93bmVkT2Jq
ZWN0cywgb2JqZWN0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3VudCArIDEpKTsKKyAgICBz
aXplX3QgY291bnQgPSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQob3duZWRPYmpl
Y3RzLCAoX19icmlkZ2Ugdm9pZCopb2JqZWN0KSk7CisgICAgTlNNYXBJbnNlcnQob3duZWRPYmpl
Y3RzLCAoX19icmlkZ2Ugdm9pZCopb2JqZWN0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihjb3Vu
dCArIDEpKTsKIH0KIAogLSAodm9pZClyZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3Qg
d2l0aE93bmVyOihpZClvd25lcgpAQCAtMjEyLDE0ICsyMTEsMTQgQEAgLSAodm9pZClyZW1vdmVN
YW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3Qgd2l0aE93bmVyOihpZClvd25lcgogICAgIGlmICgh
b3duZWRPYmplY3RzKQogICAgICAgICByZXR1cm47CiAgICAKLSAgICBzaXplX3QgY291bnQgPSBy
ZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQob3duZWRPYmplY3RzLCBvYmplY3QpKTsK
KyAgICBzaXplX3QgY291bnQgPSByZWludGVycHJldF9jYXN0PHNpemVfdD4oTlNNYXBHZXQob3du
ZWRPYmplY3RzLCAoX19icmlkZ2Ugdm9pZCopb2JqZWN0KSk7CiAgICAgaWYgKGNvdW50ID4gMSkg
ewotICAgICAgICBOU01hcEluc2VydChvd25lZE9iamVjdHMsIG9iamVjdCwgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oY291bnQgLSAxKSk7CisgICAgICAgIE5TTWFwSW5zZXJ0KG93bmVkT2JqZWN0
cywgKF9fYnJpZGdlIHZvaWQqKW9iamVjdCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY291bnQg
LSAxKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgaWYgKGNvdW50ID09IDEp
Ci0gICAgICAgIE5TTWFwUmVtb3ZlKG93bmVkT2JqZWN0cywgb2JqZWN0KTsKKyAgICAgICAgTlNN
YXBSZW1vdmUob3duZWRPYmplY3RzLCAoX19icmlkZ2Ugdm9pZCopb2JqZWN0KTsKIAogICAgIGlm
ICghW293bmVkT2JqZWN0cyBjb3VudF0pIHsKICAgICAgICAgW21fZXh0ZXJuYWxPYmplY3RHcmFw
aCByZW1vdmVPYmplY3RGb3JLZXk6b3duZXJdOwpAQCAtMjQ2LDEyICsyNDUsMTIgQEAgKyAoSlNW
aXJ0dWFsTWFjaGluZSAqKXZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjooSlNDb250
ZXh0R3JvdXBSZWYpZ3JvdXAKIAogLSAoSlNDb250ZXh0ICopY29udGV4dEZvckdsb2JhbENvbnRl
eHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0CiB7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEpTQ29udGV4dCAqPihOU01hcEdldChtX2NvbnRleHRDYWNoZSwgZ2xvYmFsQ29u
dGV4dCkpOworICAgIHJldHVybiAoX19icmlkZ2UgSlNDb250ZXh0ICopTlNNYXBHZXQobV9jb250
ZXh0Q2FjaGUsIGdsb2JhbENvbnRleHQpOwogfQogCiAtICh2b2lkKWFkZENvbnRleHQ6KEpTQ29u
dGV4dCAqKXdyYXBwZXIgZm9yR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWds
b2JhbENvbnRleHQKIHsKLSAgICBOU01hcEluc2VydChtX2NvbnRleHRDYWNoZSwgZ2xvYmFsQ29u
dGV4dCwgd3JhcHBlcik7CisgICAgTlNNYXBJbnNlcnQobV9jb250ZXh0Q2FjaGUsIGdsb2JhbENv
bnRleHQsIChfX2JyaWRnZSB2b2lkKil3cmFwcGVyKTsKIH0KIAogLSAoTG9jayYpZXh0ZXJuYWxE
YXRhTXV0ZXgKQEAgLTMyMSw5ICszMjAsOSBAQCBzdGF0aWMgdm9pZCBzY2FuRXh0ZXJuYWxPYmpl
Y3RHcmFwaChKU0M6OlZNJiB2bSwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvciwgdm9pZAogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvIGFwcGVuZE93bmVkT2Jq
ZWN0cyA9IFsmXSB7Ci0gICAgICAgICAgICAgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0g
W2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5OnN0YXRpY19jYXN0PGlkPihuZXh0Um9v
dCldOworICAgICAgICAgICAgICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFtleHRlcm5h
bE9iamVjdEdyYXBoIG9iamVjdEZvcktleTooX19icmlkZ2UgaWQpbmV4dFJvb3RdOwogICAgICAg
ICAgICAgICAgIGZvciAoaWQgb3duZWRPYmplY3QgaW4gb3duZWRPYmplY3RzKQotICAgICAgICAg
ICAgICAgICAgICBzdGFjay5hcHBlbmQoc3RhdGljX2Nhc3Q8dm9pZCo+KG93bmVkT2JqZWN0KSk7
CisgICAgICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZCgoX19icmlkZ2Ugdm9pZCopb3duZWRP
YmplY3QpOwogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgaWYgKGxvY2tBY3F1aXJlZCkK
QEAgLTM1Niw3ICszNTUsNyBAQCB2b2lkIHNjYW5FeHRlcm5hbFJlbWVtYmVyZWRTZXQoSlNDOjpW
TSYgdm0sIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgICAgICBOU01hcFRhYmxl
ICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6a2V5XTsK
ICAgICAgICAgICAgIGJvb2wgbG9ja0FjcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAo
aWQgb3duZWRPYmplY3QgaW4gb3duZWRPYmplY3RzKQotICAgICAgICAgICAgICAgIHNjYW5FeHRl
cm5hbE9iamVjdEdyYXBoKHZtLCB2aXNpdG9yLCBvd25lZE9iamVjdCwgbG9ja0FjcXVpcmVkKTsK
KyAgICAgICAgICAgICAgICBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCh2bSwgdmlzaXRvciwgKF9f
YnJpZGdlIHZvaWQqKW93bmVkT2JqZWN0LCBsb2NrQWNxdWlyZWQpOwogICAgICAgICB9CiAgICAg
ICAgIFtleHRlcm5hbFJlbWVtYmVyZWRTZXQgcmVtb3ZlQWxsT2JqZWN0c107CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCAwMTk5MjNhYzk2MTBk
ZWQxNDQwNDBjMDRjZDczNzI2YTJkM2QzYWZlLi45MWEyMTI5YzZiZjVhYWFlMWQyYTA2NDM1Zjk1
NWY5MWI4YTE2NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3Jh
cHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5t
bQpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBtYWtlV3JhcHBlcihK
U0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIGlkIHdyYXBwCiAKICAgICBBU1NF
UlQoanNDbGFzcyk7CiAgICAgSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVy
T2JqZWN0Piogb2JqZWN0ID0gSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVy
T2JqZWN0Pjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpLCBqc0Ns
YXNzLCAwKTsKLSAgICBvYmplY3QtPnNldFdyYXBwZWRPYmplY3Qod3JhcHBlZE9iamVjdCk7Cisg
ICAgb2JqZWN0LT5zZXRXcmFwcGVkT2JqZWN0KChfX2JyaWRnZSB2b2lkKil3cmFwcGVkT2JqZWN0
KTsKICAgICBpZiAoSlNDOjpKU09iamVjdCogcHJvdG90eXBlID0ganNDbGFzcy0+cHJvdG90eXBl
KGV4ZWMpKQogICAgICAgICBvYmplY3QtPnNldFByb3RvdHlwZURpcmVjdCh2bSwgcHJvdG90eXBl
KTsKIApAQCAtNTI0LDggKzUyNCw4IEBAIC0gKEpTQzo6SlNPYmplY3QqKXdyYXBwZXJGb3JPYmpl
Y3Q6KGlkKW9iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKICAgICBKU0M6OlZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAot
ICAgIEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD4qIHdyYXBw
ZXIgPSBKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+OjpjcmVh
dGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUsIG1fY2xhc3NS
ZWYsIDApOwotICAgIHdyYXBwZXItPnNldFdyYXBwZWRPYmplY3Qob2JqZWN0KTsKKyAgICBhdXRv
IHdyYXBwZXIgPSBKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUsIG1f
Y2xhc3NSZWYsIDApOworICAgIHdyYXBwZXItPnNldFdyYXBwZWRPYmplY3QoKF9fYnJpZGdlIHZv
aWQqKW9iamVjdCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTY0NCwxMCArNjQ0LDEw
IEBAIC0gKEpTVmFsdWUgKilqc1dyYXBwZXJGb3JPYmplY3Q6KGlkKW9iamVjdCBpbkNvbnRleHQ6
KEpTQ29udGV4dCAqKWNvbnRleHQKIC0gKEpTVmFsdWUgKilvYmpjV3JhcHBlckZvckpTVmFsdWVS
ZWY6KEpTVmFsdWVSZWYpdmFsdWUgaW5Db250ZXh0OmNvbnRleHQKIHsKICAgICBBU1NFUlQodG9K
U0dsb2JhbE9iamVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKS0+d3JhcHBlck1hcCgp
ID09IHNlbGYpOwotICAgIEpTVmFsdWUgKndyYXBwZXIgPSBzdGF0aWNfY2FzdDxKU1ZhbHVlICo+
KE5TTWFwR2V0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1ZSkpOworICAgIEpTVmFsdWUgKndy
YXBwZXIgPSAoX19icmlkZ2UgSlNWYWx1ZSAqKU5TTWFwR2V0KG1fY2FjaGVkT2JqQ1dyYXBwZXJz
LCB2YWx1ZSk7CiAgICAgaWYgKCF3cmFwcGVyKSB7CiAgICAgICAgIHdyYXBwZXIgPSBbW1tKU1Zh
bHVlIGFsbG9jXSBpbml0V2l0aFZhbHVlOnZhbHVlIGluQ29udGV4dDpjb250ZXh0XSBhdXRvcmVs
ZWFzZV07Ci0gICAgICAgIE5TTWFwSW5zZXJ0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1ZSwg
d3JhcHBlcik7CisgICAgICAgIE5TTWFwSW5zZXJ0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1
ZSwgKF9fYnJpZGdlIHZvaWQqKXdyYXBwZXIpOwogICAgIH0KICAgICByZXR1cm4gd3JhcHBlcjsK
IH0KQEAgLTY2NCw3ICs2NjQsNyBAQCBpZCB0cnlVbndyYXBPYmpjT2JqZWN0KEpTR2xvYmFsQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQogICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGxvY2tlcih0b0pTKGNvbnRleHQpKTsKICAgICBKU0M6OlZNJiB2bSA9IHRvSlMoY29udGV4dCkt
PnZtKCk7CiAgICAgaWYgKHRvSlMob2JqZWN0KS0+aW5oZXJpdHM8SlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pj4odm0pKQotICAgICAgICByZXR1cm4gKGlkKUpT
Qzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4odG9KUyhvYmplY3QpKS0+d3JhcHBl
ZE9iamVjdCgpOworICAgICAgICByZXR1cm4gKF9fYnJpZGdlIGlkKUpTQzo6anNDYXN0PEpTQzo6
SlNBUElXcmFwcGVyT2JqZWN0Kj4odG9KUyhvYmplY3QpKS0+d3JhcHBlZE9iamVjdCgpOwogICAg
IGlmIChpZCB0YXJnZXQgPSB0cnlVbndyYXBDb25zdHJ1Y3Rvcigmdm0sIG9iamVjdCkpCiAgICAg
ICAgIHJldHVybiB0YXJnZXQ7CiAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4IDg4ODZmZTAzOWZkOWI0
NTVjMzRiMzU5YzFlZTdkMTRhY2Q4NDY0OGUuLmM0ZTczYTg2NmQ2YjYwYjA4ODIzZDc4MjEwNDUw
YzkwNWMzZWQ3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0Nh
bGxiYWNrRnVuY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2Fs
bGJhY2tGdW5jdGlvbi5tbQpAQCAtNjAzLDcgKzYwMyw3IEBAIHN0YXRpYyBib29sIGJsb2NrU2ln
bmF0dXJlQ29udGFpbnNDbGFzcygpCiB7CiAgICAgc3RhdGljIGJvb2wgY29udGFpbnNDbGFzcyA9
IF57CiAgICAgICAgIGlkIGJsb2NrID0gXihOU1N0cmluZyAqc3RyaW5nKXsgcmV0dXJuIHN0cmlu
ZzsgfTsKLSAgICAgICAgcmV0dXJuIF9CbG9ja19oYXNfc2lnbmF0dXJlKGJsb2NrKSAmJiBzdHJz
dHIoX0Jsb2NrX3NpZ25hdHVyZShibG9jayksICJOU1N0cmluZyIpOworICAgICAgICByZXR1cm4g
X0Jsb2NrX2hhc19zaWduYXR1cmUoKF9fYnJpZGdlIHZvaWQqKWJsb2NrKSAmJiBzdHJzdHIoX0Js
b2NrX3NpZ25hdHVyZSgoX19icmlkZ2Ugdm9pZCopYmxvY2spLCAiTlNTdHJpbmciKTsKICAgICB9
KCk7CiAgICAgcmV0dXJuIGNvbnRhaW5zQ2xhc3M7CiB9CkBAIC02NzcsMTggKzY3NywyMCBAQCBK
U09iamVjdFJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvck1ldGhvZChKU0NvbnRleHQgKmNvbnRl
eHQsIENsYXNzIGNscywgUHJvdG9jbwogewogICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9
IFtOU0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRob2RTaWduYXR1cmU6W05TTWV0aG9kU2ln
bmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6dHlwZXNdXTsKICAgICBbaW52b2NhdGlvbiBz
ZXRTZWxlY3RvcjpzZWxdOwotICAgIC8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSB0YXJnZXQgQ2xh
c3MgYmVjYXVzZSBtX2ludm9jYXRpb24gZG9lc24ndCByZXRhaW4gaXQgYnkgZGVmYXVsdCAoYW5k
IHdlIGRvbid0IHdhbnQgaXQgdG8pLgotICAgIC8vIEZJWE1FOiBXaGF0IHJlbGVhc2VzIGl0Pwot
ICAgIGlmICghaXNJbnN0YW5jZU1ldGhvZCkKLSAgICAgICAgW2ludm9jYXRpb24gc2V0VGFyZ2V0
OltjbHMgcmV0YWluXV07CisgICAgaWYgKCFpc0luc3RhbmNlTWV0aG9kKSB7CisgICAgICAgIFtp
bnZvY2F0aW9uIHNldFRhcmdldDpjbHNdOworICAgICAgICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0
aGUgdGFyZ2V0IENsYXNzIGJlY2F1c2UgbV9pbnZvY2F0aW9uIGRvZXNuJ3QgcmV0YWluIGl0IGJ5
IGRlZmF1bHQgKGFuZCB3ZSBkb24ndCB3YW50IGl0IHRvKS4KKyAgICAgICAgLy8gRklYTUU6IFdo
YXQgcmVsZWFzZXMgaXQ/CisgICAgICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpY2xz
KTsKKyAgICB9CiAgICAgcmV0dXJuIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbihj
b250ZXh0LCBpbnZvY2F0aW9uLCBpc0luc3RhbmNlTWV0aG9kID8gQ2FsbGJhY2tJbnN0YW5jZU1l
dGhvZCA6IENhbGxiYWNrQ2xhc3NNZXRob2QsIGlzSW5zdGFuY2VNZXRob2QgPyBjbHMgOiBuaWws
IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbCwgWUVTLCBpc0lu
c3RhbmNlTWV0aG9kKSk7CiB9CiAKIEpTT2JqZWN0UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9y
QmxvY2soSlNDb250ZXh0ICpjb250ZXh0LCBpZCB0YXJnZXQpCiB7Ci0gICAgaWYgKCFfQmxvY2tf
aGFzX3NpZ25hdHVyZSh0YXJnZXQpKQorICAgIGlmICghX0Jsb2NrX2hhc19zaWduYXR1cmUoKF9f
YnJpZGdlIHZvaWQqKXRhcmdldCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbnN0
IGNoYXIqIHNpZ25hdHVyZSA9IF9CbG9ja19zaWduYXR1cmUodGFyZ2V0KTsKKyAgICBjb25zdCBj
aGFyKiBzaWduYXR1cmUgPSBfQmxvY2tfc2lnbmF0dXJlKChfX2JyaWRnZSB2b2lkKil0YXJnZXQp
OwogICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtOU0ludm9jYXRpb24gaW52b2NhdGlv
bldpdGhNZXRob2RTaWduYXR1cmU6W05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpD
VHlwZXM6c2lnbmF0dXJlXV07CiAKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHVzZSAtcmV0YWlu
QXJndW1lbnRzIGJlY2F1c2UgdGhhdCBsZWFrcyBtZW1vcnkuIEFyZ3VtZW50cyAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaAppbmRleCAyZDdkYjY2MTky
NTdhNjlkMTgxYWM5Zjc5NjBlYTM5OGFjZDk2OTA3Li4yMGQ4Yjg1ODQ3YTU1M2EzM2NkZmMxM2Y1
MmVjNmE0ZDk1MmY4YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09i
amNSdW50aW1lRXh0cmFzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVu
dGltZUV4dHJhcy5oCkBAIC00MCw3ICs0MCw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8VCwg
V1RGOjpTeXN0ZW1GcmVlPFQ+PiBhZG9wdFN5c3RlbShVIHZhbHVlKQogaW5saW5lIGJvb2wgcHJv
dG9jb2xJbXBsZW1lbnRzUHJvdG9jb2woUHJvdG9jb2wgKmNhbmRpZGF0ZSwgUHJvdG9jb2wgKnRh
cmdldCkKIHsKICAgICB1bnNpZ25lZCBwcm90b2NvbFByb3RvY29sc0NvdW50OwotICAgIGF1dG8g
cHJvdG9jb2xQcm90b2NvbHMgPSBhZG9wdFN5c3RlbTxQcm90b2NvbCpbXT4ocHJvdG9jb2xfY29w
eVByb3RvY29sTGlzdChjYW5kaWRhdGUsICZwcm90b2NvbFByb3RvY29sc0NvdW50KSk7CisgICAg
YXV0byBwcm90b2NvbFByb3RvY29scyA9IGFkb3B0U3lzdGVtPF9fdW5zYWZlX3VucmV0YWluZWQg
UHJvdG9jb2wqW10+KHByb3RvY29sX2NvcHlQcm90b2NvbExpc3QoY2FuZGlkYXRlLCAmcHJvdG9j
b2xQcm90b2NvbHNDb3VudCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm90b2Nv
bFByb3RvY29sc0NvdW50OyArK2kpIHsKICAgICAgICAgaWYgKHByb3RvY29sX2lzRXF1YWwocHJv
dG9jb2xQcm90b2NvbHNbaV0sIHRhcmdldCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTU5LDcgKzU5LDcgQEAgaW5saW5lIHZvaWQgZm9yRWFjaFByb3RvY29sSW1wbGVtZW50aW5nUHJv
dG9jb2woQ2xhc3MgY2xzLCBQcm90b2NvbCAqdGFyZ2V0LCB2b2kKICAgICAvLyBJbml0aWFsbHkg
ZmlsbCB0aGUgd29ya2xpc3Qgd2l0aCB0aGUgQ2xhc3MncyBwcm90b2NvbHMuCiAgICAgewogICAg
ICAgICB1bnNpZ25lZCBwcm90b2NvbHNDb3VudDsKLSAgICAgICAgYXV0byBwcm90b2NvbHMgPSBh
ZG9wdFN5c3RlbTxQcm90b2NvbCpbXT4oY2xhc3NfY29weVByb3RvY29sTGlzdChjbHMsICZwcm90
b2NvbHNDb3VudCkpOworICAgICAgICBhdXRvIHByb3RvY29scyA9IGFkb3B0U3lzdGVtPF9fdW5z
YWZlX3VucmV0YWluZWQgUHJvdG9jb2wqW10+KGNsYXNzX2NvcHlQcm90b2NvbExpc3QoY2xzLCAm
cHJvdG9jb2xzQ291bnQpKTsKICAgICAgICAgd29ya2xpc3QuYXBwZW5kKHByb3RvY29scy5nZXQo
KSwgcHJvdG9jb2xzQ291bnQpOwogICAgIH0KIApAQCAtNjksNyArNjksNyBAQCBpbmxpbmUgdm9p
ZCBmb3JFYWNoUHJvdG9jb2xJbXBsZW1lbnRpbmdQcm90b2NvbChDbGFzcyBjbHMsIFByb3RvY29s
ICp0YXJnZXQsIHZvaQogICAgICAgICB3b3JrbGlzdC5yZW1vdmVMYXN0KCk7CiAKICAgICAgICAg
Ly8gQXJlIHdlIGVuY291bnRlcmluZyB0aGlzIFByb3RvY29sIGZvciB0aGUgZmlyc3QgdGltZT8K
LSAgICAgICAgaWYgKCF2aXNpdGVkLmFkZChwcm90b2NvbCkuaXNOZXdFbnRyeSkKKyAgICAgICAg
aWYgKCF2aXNpdGVkLmFkZCgoX19icmlkZ2Ugdm9pZCopcHJvdG9jb2wpLmlzTmV3RW50cnkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBJZiBpdCBpbXBsZW1lbnRzIHRoZSBw
cm90b2NvbCwgbWFrZSB0aGUgY2FsbGJhY2suCkBAIC04Miw3ICs4Miw3IEBAIGlubGluZSB2b2lk
IGZvckVhY2hQcm90b2NvbEltcGxlbWVudGluZ1Byb3RvY29sKENsYXNzIGNscywgUHJvdG9jb2wg
KnRhcmdldCwgdm9pCiAgICAgICAgIC8vIEFkZCBpbmNvcnBvcmF0ZWQgcHJvdG9jb2xzIHRvIHRo
ZSB3b3JrbGlzdC4KICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgcHJvdG9jb2xzQ291
bnQ7Ci0gICAgICAgICAgICBhdXRvIHByb3RvY29scyA9IGFkb3B0U3lzdGVtPFByb3RvY29sKltd
Pihwcm90b2NvbF9jb3B5UHJvdG9jb2xMaXN0KHByb3RvY29sLCAmcHJvdG9jb2xzQ291bnQpKTsK
KyAgICAgICAgICAgIGF1dG8gcHJvdG9jb2xzID0gYWRvcHRTeXN0ZW08X191bnNhZmVfdW5yZXRh
aW5lZCBQcm90b2NvbCpbXT4ocHJvdG9jb2xfY29weVByb3RvY29sTGlzdChwcm90b2NvbCwgJnBy
b3RvY29sc0NvdW50KSk7CiAgICAgICAgICAgICB3b3JrbGlzdC5hcHBlbmQocHJvdG9jb2xzLmdl
dCgpLCBwcm90b2NvbHNDb3VudCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JD
b2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1Jl
bW90ZUluc3BlY3RvckNvY29hLm1tCmluZGV4IDFiYzQ0NDEyY2IwNjcxNzk3OWRhNDIwNDljOWZh
ZmNkMzcwNTJhODcuLjYxODgwNjk3MzlhNzI3Mjc0ZmZiNDkwYTZhNzg3YTkyODJiMjI3NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1Jl
bW90ZUluc3BlY3RvckNvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCkBAIC01OSwxNSArNTksMTQg
QEAKICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCk7CiAKLSNkZWZpbmUgQ09OVkVSVF9OU05VTExf
VE9fTklMKGV4cHIpICAgICAgICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKFtleHByIGlzRXF1YWw6W05TTnVsbCBudWxsXV0p
ICAgIFwKLSAgICAgICAgICAgIGV4cHIgPSBuaWw7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICB9IHdoaWxlICgwKTsKLQotCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorc3RhdGljIHZvaWQg
Y29udmVydE5TTnVsbFRvTmlsKF9fc3Ryb25nIE5TTnVtYmVyIComIG51bWJlcikKK3sKKyAgICBp
ZiAoW251bWJlciBpc0VxdWFsOltOU051bGwgbnVsbF1dKQorICAgICAgICBudW1iZXIgPSBuaWw7
Cit9CisKIHN0YXRpYyBib29sIGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0KCkKIHsKICAg
ICByZXR1cm4gIXNhbmRib3hfY2hlY2soZ2V0cGlkKCksICJtYWNoLWxvb2t1cCIsIHN0YXRpY19j
YXN0PGVudW0gc2FuZGJveF9maWx0ZXJfdHlwZT4oU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUg
fCBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVCksIFdJUlhQQ01hY2hQb3J0TmFtZSk7CkBAIC00OTEs
NyArNDkwLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKE5T
RGljdGlvbmFyeSAqdXNlckluZm8pCiAgICAgQkFJTF9JRl9VTkVYUEVDVEVEX1RZUEUoc2VuZGVy
LCBbTlNTdHJpbmcgY2xhc3NdKTsKIAogICAgIE5TTnVtYmVyICphdXRvbWF0aWNhbGx5UGF1c2VO
dW1iZXIgPSB1c2VySW5mb1tXSVJBdXRvbWF0aWNhbGx5UGF1c2VdOwotICAgIENPTlZFUlRfTlNO
VUxMX1RPX05JTChhdXRvbWF0aWNhbGx5UGF1c2VOdW1iZXIpOworICAgIGNvbnZlcnROU051bGxU
b05pbChhdXRvbWF0aWNhbGx5UGF1c2VOdW1iZXIpOwogICAgIEJBSUxfSUZfVU5FWFBFQ1RFRF9U
WVBFX0FMTE9XSU5HX05JTChhdXRvbWF0aWNhbGx5UGF1c2VOdW1iZXIsIFtOU051bWJlciBjbGFz
c10pOwogICAgIEJPT0wgYXV0b21hdGljYWxseVBhdXNlID0gYXV0b21hdGljYWxseVBhdXNlTnVt
YmVyLmJvb2xWYWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KaW5kZXggY2VhNmM5YzFhZjFlNjAxMDJhMTIzNDVlY2Y5ODY5OTQzNTZi
MGUzMi4uNzUzYWM0YThjYzBkOWJkMzBlZDU4OGZiYThjYTMwYTc4Mjk2NmNkMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0zNCwz
NiArMzQsMTEgQEAKICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRz
Lmg+CisjaW1wb3J0IDx3dGYvc3BpL2NvY29hL0NGWFBDQnJpZGdlU1BJLmg+CiAjaW1wb3J0IDx3
dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENT
UEkuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxDb3JlRm91bmRh
dGlvbi9DRlhQQ0JyaWRnZS5oPgotI2Vsc2UKLWV4dGVybiAiQyIgewotICAgIHhwY19vYmplY3Rf
dCBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KENGVHlwZVJlZik7Ci0gICAgQ0ZU
eXBlUmVmIF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVjdF90KTsK
LX0KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIGJvb2wgYXVkaXRUb2tlbkhh
c0VudGl0bGVtZW50KGF1ZGl0X3Rva2VuX3QgdG9rZW4sIE5TU3RyaW5nICplbnRpdGxlbWVudCkK
LXsKLSAgICBhdXRvIHRhc2sgPSBhZG9wdENGKFNlY1Rhc2tDcmVhdGVXaXRoQXVkaXRUb2tlbihr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCB0b2tlbikpOwotICAgIGlmICghdGFzaykKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgYXV0byB2YWx1ZSA9IGFkb3B0Q0YoU2VjVGFza0NvcHlWYWx1ZUZv
ckVudGl0bGVtZW50KHRhc2suZ2V0KCksIChDRlN0cmluZ1JlZillbnRpdGxlbWVudCwgbnVsbHB0
cikpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChD
RkdldFR5cGVJRCh2YWx1ZS5nZXQoKSkgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBDRkJvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2Fz
dDxDRkJvb2xlYW5SZWY+KHZhbHVlLmdldCgpKSk7Ci19Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKIC8vIENvbnN0YW50cyBwcml2YXRlIHRvIHRoaXMgZmlsZSBmb3IgbWVzc2Fn
ZSBzZXJpYWxpemF0aW9uIG9uIGJvdGggZW5kcy4KQEAgLTE3Myw3ICsxNDgsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmpl
Y3QpCiAgICAgaWYgKCFtX3ZhbGlkYXRlZCkgewogICAgICAgICBhdWRpdF90b2tlbl90IHRva2Vu
OwogICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4obV9jb25uZWN0aW9uLCAm
dG9rZW4pOwotICAgICAgICBpZiAoIWF1ZGl0VG9rZW5IYXNFbnRpdGxlbWVudCh0b2tlbiwgQCJj
b20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3Iud2ViaW5zcGVjdG9yZCIpKSB7CisgICAgICAg
IGlmICghV1RGOjpoYXNFbnRpdGxlbWVudCh0b2tlbiwgImNvbS5hcHBsZS5wcml2YXRlLndlYmlu
c3BlY3Rvci53ZWJpbnNwZWN0b3JkIikpIHsKICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1fbXV0ZXgpOwogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25l
IGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5k
IGRlcmVmIHVzLgogICAgICAgICAgICAgY2xvc2VPblF1ZXVlKCk7CkBAIC0yMTEsNyArMTg2LDcg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShOU1N0cmlu
ZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmEKICAgICBpZiAodXNlckluZm8pCiAgICAgICAgIFtk
aWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvblVzZXJJbmZvS2V5XTsKIAotICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0g
X0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoQ0ZEaWN0aW9uYXJ5UmVmKWRpY3Rp
b25hcnkuZ2V0KCkpOworICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0gX0NGWFBDQ3Jl
YXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRpY3Rp
b25hcnkuZ2V0KCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoeHBjRGljdGlvbmFyeSAmJiB4
cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKICAgICBpZiAoIXhwY0RpY3Rpb25hcnkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGQyMzY2ZmEyNmJkYmM5ZjhkMzg3NGMxNTdhYzlkZjg1OGY0ZDQ0YmEuLmU5YjU5ZWY2NWE2
YzE2OWU4Yzg5ZDUwM2QxMmMwMjEzNzZlZDlkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNDQsNyArNDQsNyBAQAogCQkwRkVDM0M1RTFGMzY4QTk3MDBG
NTlCNkMgLyogUmVhZFdyaXRlTG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkVDM0M1QzFGMzY4QTk3MDBGNTlCNkMgLyogUmVhZFdyaXRlTG9j
ay5jcHAgKi87IH07CiAJCTBGRkYxOURDMUJCMzM0RUIwMDg4NkQ5MSAvKiBQYXJhbGxlbEhlbHBl
clBvb2wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGRjE5REExQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAgKi87IH07
CiAJCTE0MDIyRjQxMThGNUMzRkMwMDdGRjBFQiAvKiBsaWJibWFsbG9jLmEgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAyMkY0MDE4RjVDM0ZDMDA3
RkYwRUIgLyogbGliYm1hbGxvYy5hICovOyB9OwotCQkxNDNEREU5NjIwQzhCQzM3MDA3Rjc2RkEg
LyogRW50aXRsZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0M0RERTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMuY3BwICov
OyB9OworCQkxNDNEREU5NjIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRERFOTUyMEM4QkMz
NzAwN0Y3NkZBIC8qIEVudGl0bGVtZW50cy5tbSAqLzsgfTsKIAkJMTQzRjYxMUYxNTY1RjBGOTAw
REI1MTRBIC8qIFJBTVNpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovOyB9
OwogCQkxNDQ3QUVDNjE4RkNFNTc3MDBCM0Q3RkYgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQ3QUVDNTE4
RkNFNTc3MDBCM0Q3RkYgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTE0NDdBRUM3
MThGQ0U1ODAwMEIzRDdGRiAvKiBsaWJXVEYuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYu
YSAqLzsgfTsKQEAgLTI3MSw3ICsyNzEsNyBAQAogCQkwRkZGMTlEQjFCQjMzNEVCMDA4ODZEOTEg
LyogUGFyYWxsZWxIZWxwZXJQb29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhcmFsbGVsSGVscGVyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMzI3
NDM5MjRGQzU0RTQ2OUY1QThFNkUgLyogU3RkVW5vcmRlcmVkU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0ZFVub3JkZXJlZFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNDAyMkY0MDE4RjVDM0ZDMDA3RkYwRUIgLyogbGliYm1hbGxvYy5hICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS5hcjsg
cGF0aCA9IGxpYmJtYWxsb2MuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
LQkJMTQzRERFOTUyMEM4QkMzNzAwN0Y3NkZBIC8qIEVudGl0bGVtZW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbnRpdGxlbWVudHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDNEREU5NTIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1l
bnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRW50aXRsZW1l
bnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDNEREU5NzIwQzhCRTk5MDA3
Rjc2RkEgLyogRW50aXRsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVudGl0bGVtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDNGNjExRDE1
NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSQU1TaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQz
RjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUkFNU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzE1
LDkgKzMxNSw5IEBACiAJCTFDMTgxQzhEMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVy
VVRGMTYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92
aWRlclVURjE2LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxODFDOEUxRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVVGV4dFByb3ZpZGVyVVRGMTYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUMxODFDOTUxRDMwODAwQTAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQ0NEQjE0OTFFNTY2NjI2MDA2QzczQzAgLyogVGV4dEJyZWFrSXRlcmF0b3JD
Ri5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0QnJlYWtJdGVyYXRvckNG
Lmg7IHBhdGggPSBjZi9UZXh0QnJlYWtJdGVyYXRvckNGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDQ0RCMTQ5MUU1NjY2MjYwMDZDNzNDMCAvKiBUZXh0QnJlYWtJdGVyYXRvckNG
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRCcmVha0l0ZXJhdG9yQ0Yu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREIxNEQxRTU2Njg5ODAwNkM3M0Mw
IC8qIFRleHRCcmVha0l0ZXJhdG9ySUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRCcmVha0l0ZXJhdG9ySUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDQ0RCMTUxMUU1NjZCQzUwMDZDNzNDMCAvKiBDRlN0cmluZ1NQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDRlN0cmluZ1NQSS5oOyBwYXRoID0gY2YvQ0ZTdHJpbmdTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNDREIxNTExRTU2NkJDNTAwNkM3M0Mw
IC8qIENGU3RyaW5nU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGU3Ry
aW5nU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGQTQ3Qzg4MTUyNTAyREEw
MDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkNvcmVUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxRkE0N0M4OTE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI0RjFCMjQ4NjE5RjQxMjI5NkQxQzE5QyAvKiBSYW5kb21EZXZpY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZG9tRGV2aWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDcsOCArNDA3LDkgQEAKIAkJODNGQkE5MzExOURGNDU5
NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUeXBlQ2FzdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZGNDZGNUYxQTI4
NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVmQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNENjMx
OTFGQ0I2QUI5MDAzMkVDRDYgLyogU3RyaW5nSGFzaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cmluZ0hhc2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5Mzg0QjczRTIwREVBMjg0MDA1QjczQjIgLyogQ0ZYUENCcmlkZ2VTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ0ZYUENCcmlkZ2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5
MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1ZpZXdDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1Zp
ZXdDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHJpbmdWaWV3
Q0YuY3BwOyBwYXRoID0gY2YvU3RyaW5nVmlld0NGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdWaWV3Q0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FDOTFBNzE4OTQyRkM0MDAyNDQ5MzkgLyogTENo
YXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTENoYXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEMTkxQ0YyMENBRUNFODAwQzUxQjhFIC8qIEZvdW5kYXRp
b25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm91bmRhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0RERTkzMTFDREMwNTJEMDBGRDM0OTEgLyogZHlsZFNQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBkeWxkU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00MjgsOSArNDI5LDkgQEAKIAkJQTU2MUYzMEYxREYyNjQyMTAwRkY2NzVE
IC8qIERlcHJlY2F0ZWRPcHRpb25hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZXByZWNhdGVkT3B0aW9uYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVC
QTE1RjIxODI0MzNBOTAwQTgyRTY5IC8qIFN0cmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFN0cmluZ01hYy5tbTsgcGF0aCA9IC4uL21hYy9TdHJpbmdN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QkExNUY0MTgyNDM0ODAwMEE4
MkU2OSAvKiBTdHJpbmdJbXBsQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBTdHJpbmdJbXBsQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE1QkExNUY3MTgyNDM1QTYwMEE4MkU2OSAvKiBBdG9taWNTdHJpbmdJbXBsQ0YuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQXRvbWljU3RyaW5nSW1wbENGLmNw
cDsgcGF0aCA9IGNmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUE1QkExNUY4MTgyNDM1QTYwMEE4MkU2OSAvKiBTdHJpbmdDRi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHJpbmdDRi5jcHA7IHBhdGggPSBjZi9T
dHJpbmdDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QkExNUY5MTgyNDM1
QTYwMEE4MkU2OSAvKiBTdHJpbmdJbXBsQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU3RyaW5nSW1wbENGLmNwcDsgcGF0aCA9IGNmL1N0cmluZ0ltcGxDRi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUY3MTgyNDM1QTYwMEE4MkU2OSAv
KiBBdG9taWNTdHJpbmdJbXBsQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXRvbWljU3RyaW5nSW1wbENGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTVCQTE1RjgxODI0MzVBNjAwQTgyRTY5IC8qIFN0cmluZ0NGLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0NGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTVCQTE1RjkxODI0MzVBNjAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDRi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdJbXBsQ0YuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzBEQTA4MjE3OTlGMDREMDA1MjlBOUIgLyog
SW5zZXJ0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzBEQTA4MzE3OTlGMDREMDA1MjlBOUIg
LyogTGlzdER1bXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdER1bXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc0ODc0NEYxN0EwQkRBRTAwRkEwNENC
IC8qIFNpeENoYXJhY3Rlckhhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2l4Q2hhcmFjdGVySGFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02MTAsNyArNjExLDcgQEAKIAkJQ0Q3NjAwRkYxRjkwQTNDQTAwMDI2RTI2IC8qIFVuc2FmZVBv
aW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5zYWZlUG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU01hcFRhYmxlU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNzNFMDI0MTlEQ0I3QUIwMDU4MEQ1QyAvKiBYUENT
UEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDRUUyMUZBMUNFQTc1MzgwMDBDMjM5NiAvKiBDRkJ1bmRs
ZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDRkJ1bmRsZVNQSS5oOyBw
YXRoID0gY2YvQ0ZCdW5kbGVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENF
RTIxRkExQ0VBNzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENGQnVuZGxlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDRUUyMUZDMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENFRTIxRkQxQ0VBNzU1MTAwMEMyMzk2IC8qIEJs
b2NrT2JqQ0V4Y2VwdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBCbG9ja09iakNFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEQ0VFMjIwNDFDRUI5ODY5MDAwQzIzOTYgLyogQmFja3dhcmRzR3JhcGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja3dhcmRzR3JhcGguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTc4OCw3ICs3ODksNyBAQAogCQkJCTkzOTM0QkQ0MThBMUYxNjkwMEQw
RDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovLAogCQkJCTFDQ0RCMTQ5MUU1NjY2MjYwMDZDNzND
MCAvKiBUZXh0QnJlYWtJdGVyYXRvckNGLmggKi8sCiAJCQkpOwotCQkJbmFtZSA9IGNmOworCQkJ
cGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJQTg3NkRCRDYx
NTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKQEAgLTEyNzQsNiArMTI3NSw3IEBACiAJCUNF
NDY1MTZDMTlEQjFGQjQwMDNFQ0EwNSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTM4NEI3M0UyMERFQTI4NDAwNUI3M0IyIC8qIENGWFBD
QnJpZGdlU1BJLmggKi8sCiAJCQkJOTNEMTkxQ0YyMENBRUNFODAwQzUxQjhFIC8qIEZvdW5kYXRp
b25TUEkuaCAqLywKIAkJCQlDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQ
SS5oICovLAogCQkJCUE1MDk4QjAxMUMxNkE0RjkwMDA4Nzc5NyAvKiBTZWN1cml0eVNQSS5oICov
LApAQCAtMTMwOCw3ICsxMzEwLDcgQEAKIAkJCQlEQ0VFMjFGQTFDRUE3NTM4MDAwQzIzOTYgLyog
Q0ZCdW5kbGVTUEkuaCAqLywKIAkJCQkxQ0NEQjE1MTFFNTY2QkM1MDA2QzczQzAgLyogQ0ZTdHJp
bmdTUEkuaCAqLywKIAkJCSk7Ci0JCQluYW1lID0gY2Y7CisJCQlwYXRoID0gY2Y7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQlFNDNBNDY4NTFFMjI4QjU3MDAyNzZCMDUgLyog
cGVyc2lzdGVuY2UgKi8gPSB7CkBAIC0xMzMwLDggKzEzMzIsOCBAQAogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJMTQ2OTQxOUIxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9kcmFpbmVkUG9vbC5jcHAgKi8s
CiAJCQkJRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgKi8sCi0J
CQkJMTQzRERFOTUyMEM4QkMzNzAwN0Y3NkZBIC8qIEVudGl0bGVtZW50cy5jcHAgKi8sCiAJCQkJ
MTQzRERFOTcyMEM4QkU5OTAwN0Y3NkZBIC8qIEVudGl0bGVtZW50cy5oICovLAorCQkJCTE0M0RE
RTk1MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMubW0gKi8sCiAJCQkJN0E2RUJBMzMy
MDc0NkMzNDAwNEY5QzQ0IC8qIE1hY2hTZW5kUmlnaHQuY3BwICovLAogCQkJCUFERjJDRTY1MUUz
OUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi8sCiAJCQkJQUQ4OUI2
QjkxRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tICovLApA
QCAtMTQ4Myw3ICsxNDg1LDcgQEAKIAkJCQlBOEE0NzNBRTE1MUE4MjVCMDA0MTIzRkYgLyogZGl5
LWZwLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjAxNTFBODI1QjAwNDEyM0ZGIC8qIGRv
dWJsZS1jb252ZXJzaW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQkExNTFBODI1QjAw
NDEyM0ZGIC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQzRERFOTYyMEM4QkMzNzAw
N0Y3NkZBIC8qIEVudGl0bGVtZW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDNEREU5NjIw
QzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDczQjMxNTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMTU0Nyw4ICsxNTQ5LDggQEAKIAkJCQlBNUJBMTVGQjE4MjQzNUE2MDBB
ODJFNjkgLyogU3RyaW5nQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDAxNTFBODI1
QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RkMx
ODI0MzVBNjAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDRi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlB
NUJBMTVGMzE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTVCQTE1RjUxODI0MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUE1QkExNUYzMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkwRkREQkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTk5M0UxOUQ3OTU4RDAwQzIzOTBCIC8q
IFN0cmluZ1ZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEExRjE2OTAwRDBE
NkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL0VudGl0bGVtZW50cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9F
bnRpdGxlbWVudHMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2FkOTUxZDAx
ZGFmZjAzNGJmYjAzZjY4NGMzYzk1NDU2YmExMDdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0VudGl0bGVtZW50cy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkVudGl0bGVtZW50cy5oIgotCi0jaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLWJvb2wgcHJvY2Vzc0hhc0VudGl0bGVtZW50KGNvbnN0IGNoYXIqIGVu
dGl0bGVtZW50KQotewotICAgIGF1dG8gdGFzayA9IGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21T
ZWxmKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKLSAgICBpZiAoIXRhc2spCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGF1dG8gY2ZFbnRpdGxlbWVudCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoQ1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBlbnRpdGxlbWVudCwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgYXV0byB2YWx1ZSA9
IGFkb3B0Q0YoU2VjVGFza0NvcHlWYWx1ZUZvckVudGl0bGVtZW50KHRhc2suZ2V0KCksIGNmRW50
aXRsZW1lbnQuZ2V0KCksIG51bGxwdHIpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUuZ2V0KCkpICE9IENGQm9vbGVh
bkdldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gQ0ZCb29s
ZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2YWx1ZS5nZXQoKSkpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0Vu
dGl0bGVtZW50cy5oIGIvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLmgKaW5kZXgg
NDZhOWEyNDY4YWJmODg2MDYzNGUzNTQ0Y2I4OTQxN2JiNTQxYTJmOC4uMDY5ODVlYTMyNjViMDY1
N2M0OTFjNzczZmJlNWUzOTk5MjllNThiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29j
b2EvRW50aXRsZW1lbnRzLmgKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRz
LmgKQEAgLTI1LDggKzI1LDEyIEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKIAorI2luY2x1ZGUg
PHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIAorV1RGX0VYUE9S
VCBib29sIGhhc0VudGl0bGVtZW50KGF1ZGl0X3Rva2VuX3QsIGNvbnN0IGNoYXIqIGVudGl0bGVt
ZW50KTsKK1dURl9FWFBPUlQgYm9vbCBoYXNFbnRpdGxlbWVudCh4cGNfY29ubmVjdGlvbl90LCBj
b25zdCBjaGFyKiBlbnRpdGxlbWVudCk7CiBXVEZfRVhQT1JUIGJvb2wgcHJvY2Vzc0hhc0VudGl0
bGVtZW50KGNvbnN0IGNoYXIqIGVudGl0bGVtZW50KTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMubW0gYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgxM2RiODI5NTY2MjE1
YzJhMmZmNDdlYTIwMGU2MTdkOTNlMmQyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2NvY29hL0VudGl0bGVtZW50cy5tbQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVudGl0bGVtZW50cy5oIgorCisjaW5jbHVk
ZSA8d3RmL09TT2JqZWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0
YXRpYyBib29sIGhhc0VudGl0bGVtZW50KFNlY1Rhc2tSZWYgdGFzaywgY29uc3QgY2hhciogZW50
aXRsZW1lbnQpCit7CisgICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
YXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgZW50aXRsZW1lbnQsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGtD
RkFsbG9jYXRvck51bGwpKTsKKyAgICBhdXRvIHZhbHVlID0gYWRvcHRDRihTZWNUYXNrQ29weVZh
bHVlRm9yRW50aXRsZW1lbnQodGFzaywgc3RyaW5nLmdldCgpLCBudWxscHRyKSk7CisgICAgcmV0
dXJuIHZhbHVlICYmIENGR2V0VHlwZUlEKHZhbHVlLmdldCgpKSA9PSBDRkJvb2xlYW5HZXRUeXBl
SUQoKSAmJiBDRkJvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVl
LmdldCgpKSk7Cit9CisKK2Jvb2wgaGFzRW50aXRsZW1lbnQoYXVkaXRfdG9rZW5fdCB0b2tlbiwg
Y29uc3QgY2hhciogZW50aXRsZW1lbnQpCit7CisgICAgcmV0dXJuIGhhc0VudGl0bGVtZW50KGFk
b3B0Q0YoU2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRv
a2VuKSkuZ2V0KCksIGVudGl0bGVtZW50KTsKK30KKworYm9vbCBoYXNFbnRpdGxlbWVudCh4cGNf
Y29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIgKmVudGl0bGVtZW50KQoreworICAg
IGF1dG8gdmFsdWUgPSBhZG9wdE9TT2JqZWN0KHhwY19jb25uZWN0aW9uX2NvcHlfZW50aXRsZW1l
bnRfdmFsdWUoY29ubmVjdGlvbiwgZW50aXRsZW1lbnQpKTsKKyAgICByZXR1cm4gdmFsdWUgJiYg
eHBjX2dldF90eXBlKHZhbHVlLmdldCgpKSA9PSBYUENfVFlQRV9CT09MICYmIHhwY19ib29sX2dl
dF92YWx1ZSh2YWx1ZS5nZXQoKSk7Cit9CisKK2Jvb2wgcHJvY2Vzc0hhc0VudGl0bGVtZW50KGNv
bnN0IGNoYXIqIGVudGl0bGVtZW50KQoreworICAgIHJldHVybiBoYXNFbnRpdGxlbWVudChhZG9w
dENGKFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSkuZ2V0KCksIGVu
dGl0bGVtZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9zcGkvY29jb2EvQ0ZYUENCcmlkZ2VTUEkuaCBiL1NvdXJjZS9XVEYvd3RmL3NwaS9j
b2NvYS9DRlhQQ0JyaWRnZVNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyM2FiZGUxODY1YTEzYzJjYzQ5YWRm
NDFlNTU2MjEzYWQ0MDJhOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
Y29jb2EvQ0ZYUENCcmlkZ2VTUEkuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4K
KyNlbmRpZgorCitXVEZfRVhURVJOX0NfQkVHSU4KKworeHBjX29iamVjdF90IF9DRlhQQ0NyZWF0
ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoQ0ZUeXBlUmVmKTsKK0NGVHlwZVJlZiBfQ0ZYUENDcmVh
dGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY19vYmplY3RfdCk7CisKK1dURl9FWFRFUk5fQ19F
TkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMv
bWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBv
aW50Lm1tCmluZGV4IDc3OGM4MzNkOTdkMWQ2ZWZhMjY0YzlmNmUyMzJlZmQyY2UzMjQyMTEuLmRk
MjUwODg0YzFjYTk2Yjk3YzE5NDg2YzgyYmUzZDFmNjk0YmNkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZUVudHJ5UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtMjksNiAr
MjksNyBAQAogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiWFBDU2Vydmlj
ZUVudHJ5UG9pbnQuaCIKICNpbXBvcnQgPFdlYkNvcmUvUHJvY2Vzcy5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL0VudGl0bGVtZW50cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MTQwLDExICsxNDEsNyBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRF
eHRyYUluaXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgUwogCiBib29sIFhQQ1NlcnZp
Y2VJbml0aWFsaXplckRlbGVnYXRlOjpoYXNFbnRpdGxlbWVudChjb25zdCBjaGFyKiBlbnRpdGxl
bWVudCkKIHsKLSAgICBhdXRvIHZhbHVlID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9j
b3B5X2VudGl0bGVtZW50X3ZhbHVlKG1fY29ubmVjdGlvbi5nZXQoKSwgZW50aXRsZW1lbnQpKTsK
LSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4geHBj
X2dldF90eXBlKHZhbHVlLmdldCgpKSA9PSBYUENfVFlQRV9CT09MICYmIHhwY19ib29sX2dldF92
YWx1ZSh2YWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIFdURjo6aGFzRW50aXRsZW1lbnQobV9jb25u
ZWN0aW9uLmdldCgpLCBlbnRpdGxlbWVudCk7CiB9CiAKIGJvb2wgWFBDU2VydmljZUluaXRpYWxp
emVyRGVsZWdhdGU6OmlzQ2xpZW50U2FuZGJveGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9TYW5kYm94VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvU2FuZGJveFV0aWxpdGllcy5oCmluZGV4IGQ2MGY0MjdkNjc5Nzg3M2UzMjIyMmI2MmI1NjUz
MDJjOTVlNjM2YWIuLmMwNWQ3ODFkODMwNmZlNjAzYzdlNWRkMDQ3NWVmNmEwZGFiNDJhZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94VXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hVdGlsaXRpZXMuaApAQCAtMzgsNiAr
MzgsNCBAQCBib29sIHByb2Nlc3NIYXNDb250YWluZXIoKTsKIC8vIFJldHVybnMgYW4gZW1wdHkg
c3RyaW5nIGlmIHRoZSBwcm9jZXNzIGlzIG5vdCBpbiBhIGNvbnRhaW5lci4KIFN0cmluZyBwYXRo
Rm9yUHJvY2Vzc0NvbnRhaW5lcigpOwogCi1ib29sIGNvbm5lY3RlZFByb2Nlc3NIYXNFbnRpdGxl
bWVudCh4cGNfY29ubmVjdGlvbl90LCBjb25zdCBjaGFyICplbnRpdGxlbWVudCk7Ci0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94VXRpbGl0aWVzLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hVdGlsaXRpZXMubW0KaW5kZXggYWZjNmIy
NGFlMWQ3ZTg4OWVhYzA3M2Y2Y2Q5NmQwNDIyZDYyMzFiYi4uZGMzNTBmYjRmMjUyNDhkZWVlNjVj
YmExZjIzOTU0ZmI4MmU3MzBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1NhbmRib3hVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRi
b3hVdGlsaXRpZXMubW0KQEAgLTI5LDcgKzI5LDYgQEAKICNpbXBvcnQgPGFycmF5PgogI2ltcG9y
dCA8c3lzL3BhcmFtLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KLSNpbXBvcnQgPHd0
Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hT
UEkuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC03NywxMyArNzYsNCBAQCBTdHJpbmcgcGF0aEZvclByb2Nlc3ND
b250YWluZXIoKQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHBhdGguZGF0YSgpKTsKIH0K
IAotYm9vbCBjb25uZWN0ZWRQcm9jZXNzSGFzRW50aXRsZW1lbnQoeHBjX2Nvbm5lY3Rpb25fdCBj
b25uZWN0aW9uLCBjb25zdCBjaGFyICplbnRpdGxlbWVudCkKLXsKLSAgICBhdXRvIHZhbHVlID0g
YWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jb3B5X2VudGl0bGVtZW50X3ZhbHVlKGNvbm5l
Y3Rpb24sIGVudGl0bGVtZW50KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmV0dXJuIHhwY19nZXRfdHlwZSh2YWx1ZS5nZXQoKSkgPT0gWFBDX1RZUEVf
Qk9PTCAmJiB4cGNfYm9vbF9nZXRfdmFsdWUodmFsdWUuZ2V0KCkpOwotfQotCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL2lvcy9TdG9yYWdlUHJvY2Vzc0lPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvaW9zL1N0b3JhZ2VQcm9jZXNzSU9TLm1t
CmluZGV4IGVjZTBjMTAzZGJjNDRiZDE5ODBhYmFiODNlMjE0NmE1MzBmMGU2MjYuLjc3MTE5YjM4
Y2I0ZDE3YjAyNWEzYmViM2ViN2E1ZjRmMTk5OGRhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvaW9zL1N0b3JhZ2VQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvaW9zL1N0b3JhZ2VQcm9jZXNzSU9TLm1tCkBAIC0zMCwxMiAr
MzAsNyBAQAogI2ltcG9ydCAiU3RvcmFnZVByb2Nlc3MuaCIKIAogI2ltcG9ydCAiU2FuZGJveElu
aXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgotI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgot
I2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXpl
ZFN0cmluZ3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLQotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAK
ICNkZWZpbmUgRU5BQkxFX01BTlVBTF9EQVRBQkFTRV9TQU5EQk9YSU5HIDAKIApAQCAtNjEsNyAr
NTYsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGls
ZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcgogCiBib29sIFN0b3JhZ2VQcm9jZXNzOjpw
YXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgY29uc3QKIHsKLSAgICBz
dGF0aWMgYm9vbCBoYXNFbnRpdGxlbWVudCA9IGNvbm5lY3RlZFByb2Nlc3NIYXNFbnRpdGxlbWVu
dChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT54cGNDb25uZWN0aW9uKCksICJjb20uYXBwbGUu
ZGV2ZWxvcGVyLldlYktpdC5TZXJ2aWNlV29ya2VycyIpOworICAgIHN0YXRpYyBib29sIGhhc0Vu
dGl0bGVtZW50ID0gV1RGOjpoYXNFbnRpdGxlbWVudChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT54cGNDb25uZWN0aW9uKCksICJjb20uYXBwbGUuZGV2ZWxvcGVyLldlYktpdC5TZXJ2aWNlV29y
a2VycyIpOwogICAgIHJldHVybiBoYXNFbnRpdGxlbWVudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBjNjk0MDQ3
NjIwODgzMDMxNDgxN2EzYjA4ODQ3MDFjNTQxM2I1ZWJhLi44ODFjZmJkNjJmYWIwMzI4M2EzMGI2
ZGNkNDU0ZWEzZmJlYTZjY2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTEzLDYgKzExMyw3IEBACiAjaW1wb3J0IDx3
dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4K
ICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVt
ZW50cy5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKQEAgLTM5OSw3ICs0MDAsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRp
bmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogCiBib29sIFdlYlBhZ2U6OnBh
cmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdAogewotICAgIHN0
YXRpYyBib29sIGhhc0VudGl0bGVtZW50ID0gY29ubmVjdGVkUHJvY2Vzc0hhc0VudGl0bGVtZW50
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nv
bm5lY3Rpb24oKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7
CisgICAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0bGVtZW50KFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnhwY0Nvbm5l
Y3Rpb24oKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIuV2ViS2l0LlNlcnZpY2VXb3JrZXJzIik7CiAg
ICAgcmV0dXJuIGhhc0VudGl0bGVtZW50OwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>